Umbrella and Child Projects

Learn how to set up an umbrella app and a common graph storage area for the project.

Parts of the project

The project that we’ll be developing falls into two main pieces.

  • First, we’ll take an in-depth look at five separate Elixir graph packages (libgraph, bolt_sips, sparql_client, gremlex, and dlex), which we’ll explore with a set of dedicated apps, and we’ll use a *_graph pattern to name these.

  • Then, we’ll build some more apps for working across these packages, and we’ll distinguish those by naming them graph_*. We’ll also make use of a common library, which we’ll introduce here in Part I (also named with the graph_* pattern). Essentially we’re dealing here with two sets of apps plus a common library app. That’s a lot of apps that we’ll manage under a single umbrella app.

Let's set up our umbrella app and the common library app. We’ll gradually introduce the other apps as we move on.

Code structure

We’ll structure our code as an Elixir umbrella app. Let’s call this umbrella project ExGraphsBook.

In Elixir, an umbrella app refers to a close-knit family of related apps that can be sourced together in a single repo, also known as the monorepoSingle repository, where we store all the project codes related to a software product. pattern. In essence, what we have is something like an app collective where apps loosely cooperate. This will allow us to follow a simple modular development as we progress.

At this point, we can set out the roadmap for ourselves. The following diagram shows the umbrella app at the top and the child apps and their dependencies below.

Get hands-on with 1200+ tech skills courses.