No, our dir structure is vanilla Phoenix app, but with top level namespaces in lib…
/our_app/lib/our_app/application.ex
/our_app/lib/our_app/*
/our_app/lib/our_app_web/*
/our_app/lib/foo/*
/our_app/lib/bar/*
I.e. Foo and Bar are top level namespaces, and we have only one BEAM application which is :our_app.
If it wasn’t clear, I meant we reverted from umbrella apps to just normal Elixir/Phoenix apps, i.e. whatever is spit out by mix new or mix phx.new. And we don’t mind having top level namespaces. So instead of OurApp.Datastores, we simply have Datastores.
We conditionally start processes/supervisors based on environment variables, so something like this in application.ex…
children = if System.get_env("START_WORKER") do
[OurApp.Worker | children]
else
children
end
I don’t see much benefit to umbrella apps.






















