Contento: an open source CMS built with Elixir, Phoenix and Postgresql

Hello everyone!

A few days ago I’ve created a topic here about how people were creating CMSs with Elixir and Phoenix. I’ve been studying some available work such as Changelog CMS (a very specific podcasts CMS built by and for Changelog.com) and Thesis (a lightweight CMS that can be plugged in into any Phoenix application and enables easy content edition and dynamic pages).

Although those are great projects from which I’ve taken some ideas and learnt some things, what I was looking for isn’t nothing like any of these projects. Instead I was looking for something more “Wordpress-ish” in the sense that I download it, install a theme into it, setup database and :tada: a new website was born. Why not Wordpress? I simply don’t like PHP and I’m in love with Elixir!

So, I put my hands to work, and I’ve started building Contento an open source CMS built with the power of Elixir, Phoenix and Postgresql (and, of course, the awesome community behind those).

It doesn’t have much features, it isn’t production-ready (nor near it) and it isn’t very fancy (yet!). I’m not looking for users, I’m looking for people that would like to see such project gain life and contribute to it!

The goals for this project are few and simple:

  1. Create a powerful CMS with Elixir/Phoenix/Postgresql that can be extended with different themes and plugins.
  2. Make it easier to anyone, independently if they have programming knowledge or not, to create their own website.
  3. Spread the word about Elixir, Phoenix and all the awesomeness that’s around them!

Give it a try (check the repo here) and let me know your opinion, ideas and suggestions!

Thanks in advance!

P.S.: If you wish to discuss more about this project, I’ve created a #contento channel in Elixir Slack.

27 Likes

Hello everybody!

I’ve been making several updates to what will be the initial version which hopefully will come out soon for everyone to test and get a better feeling of what’s intended for this project.

There are some things I’d appreciate community’s opinion to make sure the best approach is being applied. Such things are:

  • The tool created to help (mostly non-technical) users create a new Contento-based project, like: mix contento.new [dest] (read more about it here)
  • The themes structure (there isn’t yet any documentation on it, but it’s on it’s way soon), which you can check in the default theme repo Simplo
  • How a theme’s template is compiled (on-request at runtime), you can check ContentoWeb.Themer.
  • And how theme’s assets are served (take a look)

There are some pages available already to help anyone interested getting started, here are some useful links:

Currently I’m not making any updates to the code itself, I’m just documenting code and creating the User Guides.

Thanks everyone in advance!

5 Likes

wonder if it would make sense to use something like liquid for the templates so they can be made “safe” and available for end user editing, but maybe I am wrong to assume that eex should not be made available to the end user…

elixir lib:

4 Likes

Yeeeah I definitely would not expose eex to the end user. ^.^;

4 Likes

Hey, thanks for your suggestion!

I didn’t knew about Liquid before and it seems a very nice template language. I think it could be a very good choice for the themes question. I’ll take it in consideration and create a PR and see how it fits.

Now that you’re speaking about it, it does makes more sense to use an alternative template language rather than eex for this case, for the security reasons.

Thanks!

2 Likes

while we are on templates there are a lot of good CCA licensed templates here: https://html5up.net - so you are free to adapt/implement them in your cms as long as you keep the attribution in the bottom. And say I use your cms and one of these themes and want to get rid of the attribution I can pay them for a non-attribution license (think it’s 19$)…

so could be a great idea to ship with some of these out of the box - also implementing a few different ones of them provides good exercise for the capabilities and structure of your cms…

3 Likes

The templates available in HTML5Up seem very nice, and as you outlined, a good way to test the CMS capabilities and easiness of customization.

I also think it would be better to make some more themes available instead of only the “default”, and I will use those to make a few ones available so that there are also various examples of how themes are built. In fact, I’ll get rid of the default theme for now (Simplo) and just go with one of those, as they are already solid and very pretty works.

The way themes are currently “installed” is with a mix task: mix contento.new [repo] so Contento itself doesn’t ship with any theme (in it’s own repository) and instead it installs the default theme on “Setup”. I think it’s better this way than including the themes in the Contento repo for a few reasons: don’t overload the repo, easier to maintain both (theme and platform) and eventually to make a kind of “marketplace” where people can check every themes available and install them with a one-click action.

Regarding licensing of those templates, including the attribution will be ofc the default behaviour, as I’ll do it myself when converting those templates to themes, however as end-users will be able to edit themes, they can easily remove attribution even without paying the “license upgrade” from HTMLUp, and that’s something I can’t and don’t want to control… I guess it will just a question of good sense from those using them to leave the attribution.

Thanks for that great suggestion!

P.S.: I’m already working on implementing/testing Liquid and so far so good, it seems a very nice choice. However I’m still learning a few more things about it so I’m going slowly on this to make sure everything is ok.

1 Like

This project looks stale. Any news? Will it be developed further?

4 Likes

??? still active?

1 Like