If you have worked in the past with Ruby on Rails, you will notice quickly that Decidim is not your typical Ruby on Rails Vanilla App.
We have tried using Consul but we found some problems on reutilization, adaptation, modularization and configuration. You can read more about that on Propuesta de Cambios de Arquitectura de Consul (in spanish only). As a summary, we decided to try with a model based in RoR Engines. A good resource regarding this approach is Component Based Rails Applications.
What this means
This means that:
Decidim is a gem, available in rubygems.org. You can install it with the command
gem install decidim
Decidim is a command line generator of Ruby on Rails applications. After you have install it you can generate a new RoR app with
This app has a dependency the gem itself. You can see this in the Gemfile of the generated app.
This app can be extended by making changes in the app (see Customising) and by working with Modules.
Here are some good examples of what can be done with Decidim:
See the website at https://omastadi.hel.fi/
See the source code at https://github.com/City-of-Helsinki/decidim-helsinki/
They have their Gemfile with lots of modules with their own code. Some of them are also in ruybgems (like
decidim-term_customizer), others are only in Github (
decidim-redirects). They even use a module made by other organization in the community (
They have their UI customized to their needs. See the CSS and HTML (views).
They have an awesome READE explaining how it works and what changes have made.
See the website at https://decidim.barcelona
See the source code at https://github.com/AjuntamentdeBarcelona/decidim-barcelona
In the Gemfile, they use some modules that are local only, as folders in the repository using the "path" Bundler directive:
For the footer (FEDER logo notice) they use the
defacegem instead of overriding. See Pull Request.
See the website at https://participate.indices-culture.eu/
See the source code at https://github.com/Platoniq/decidim-indices
In the Gemfile, they use modules on their git repositories:
They have their UI customized to their needs.