Architecture

If you have worked in the past with Ruby on Rails, you’ll notice quickly that Decidim is not your typical Ruby on Rails Vanilla App.

We’ve 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:

  1. Decidim is a gem, available in rubygems.org. You can install it with the command gem install decidim

  2. Decidim is a command line generator of Ruby on Rails applications. After you’ve install it you can generate a new RoR app with decidim HelloWorld

  3. This app has a dependency the gem itself. You can see this in the Gemfile of the generated app.

  4. This app can be extended by making changes in the app (see Customising) and by working with Modules.

Examples

Here are some good examples of what can be done with Decidim:

Helsinki OmaStadi

See the website at https://omastadi.hel.fi/

Helsinki OmaStadi

Some highlights:

  • They have their Gemfile with lots of modules with their own code. Some of them are also in ruybgems (like decidim-access_requests, decidim-antivirus, decidim-mpassid, decidim-process_groups_content_block, decidim-suomifi, decidim-term_customizer), others are only in Github (decidim-accountability_simple, decidim-apiauth, decidim-combined_budgeting, decidim-plans, decidim-redirects). They even use a module made by other organization in the community (decidim-budgets_enhanced)

  • 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.

Decidim Barcelona

See the website at https://decidim.barcelona

Decidim Barcelona

Some highlights:

  • In the Gemfile, they use some modules that are local only, as folders in the repository using the "path" Bundler directive: decidim-dataviz, decidim-stats, decidim-valid_auth

  • For the footer (FEDER logo notice) they use the deface gem instead of overriding. See Pull Request.

inDICEs

inDICEs

Some highlights:

  • In the Gemfile, they use modules on their git repositories: decidim-decidim_awesome, decidim-direct_verifications, decidim-notify and decidim-term_customizer.

  • They have their UI customized to their needs.