Why does BeaconCMS need to be in an umbrella app? Could it have been done another way?

I’m really interested in the BeaconCMS project but it requires using an umbrella app. I’ve used an umbrella fairly recently and found it a little too cumbersome. I much prefer the Phoenix mono app happy path :smile:

I was wondering if anyone knew why BeaconCMS was built as an umbrella? What is the reasoning for making that decision? What benefits do we gain?

There are some other elixir based CMS’ that aren’t umbrellas so I’m wondering what’s the difference?

I did try to setup BeaconCMS earlier but the need to customize the umbrella along with thinking about deploying an umbrella stopped me after +20 min of customization. I also have not used any other elixir cms so if anyone has some thoughts I’d greatly appreciate it.

Thank you


What’s cumbersome about umbrella apps? On deploy, it’s a single runtime/image the same as a normal release, and IME there is little enough overhead about managing the separate mix.exs files.

That said, it looks like the instructions were given the way that they were because:

  1. Beacon is not yet on hex.pm, for better or worse. That to me, indicates that it is considered pre-alpha (even if it’s high quality).
  2. This is probably how Dockyard deploys Beacon at the moment.

Based on the instructions, however, I don’t see anything in there which would preclude using Beacon in a non-umbrella application. But I don’t know that it would be considered the “happy” path if you run into issues using Beacon.

The benefits are the same benefits of building an umbrella app in the first place. Could we have done it a different way? Sure.

I was curious and tried to set up in a non-umbrella application, a bit annoying right now because you can’t simply copy paste to see what it is like, but as far as my tests went (a couple hours playing with it) there’s nothing that makes it impossible to use it with a monolithic application.

Beacon CMS does not require an Umbrella. For a non-umbrella, I believe the only two differences in the walkthrough are 1) adding dependencies happens in one mix.exs instead of two and 2) you don’t have to cd before the mix ecto.reset call. Neither of these steps are Beacon specific.


Thanks @TheFirstAvenger , gave it another try in a regular phoenix app and it worked :rocket: :star_struck: I think this is a great! Can’t wait to see this grow!

@bcardarella Is Dockyard using this for their marketing site yet? Do you have this running in the wild yet? :slight_smile: Will this ever grow in to a wordpress like thing where I can handoff the content writing to a non-coder and they can write an article, add a page, add a plugin, add images, files for downloading (pdfs), change headlines, manage comments, tags, all through a wysiwyg etc… etc…? :crossed_fingers:

We will hopefully have dockyard.com redeployed with Beacon by EOY. It’s including a massive re-brand so that’s what’s taking the most time.