Code

Decidim is multiple things:

  • A command-line utility, which can create an application

  • A set of libraries, that the application can use

Most of the time, you should work with the generated application. That application (development_app on this docs) should be named as your project, for instance for Barcelona City Council is DecidimBarcelona, so for creating it should be:

decidim DecidimBarcelona

If you want to override/change anything, you can just do it with the same name of the file, through Monkey Patching. Some real world examples of this method:

If you want to extend Decidim, the preferred way should be by having a Module. This is a Ruby on Rails Engine which provides ruby code (models, views, controllers, assets, etc). You can use it in multiple ways:

  • Putting it on the same directory as your app and pointing on the Gemfile. See example on GitHub. For instance:

gem "decidim-debates", path: "decidim-debates"
  • Publishing on a git repository and pointing in on the Gemfile. For instance:

gem "decidim-consultations", git: "https://github.com/decidim/decidim-module-consultations"
  • Publishing it on rubygems.org

You can learn more about Modules in the development guide.