Skip to content
Go to file

Latest commit

* feat: set up election list

* Evote questions models

* Evote interface draft

* Evote page structure and some design fixes

* Focus content in partials. Confirm vote

* Verify page

* Contents, layout and evote fixes

* feat: add election landing page and merge new evote design

* feat: add voting controller

* feat: add form, routes and permissions for voting process

* feat: link js file and stylesheet for voting process

* feat: add example image

* feat: add styles for voting process

* feat: add cell for voting step navigation

* feat: add new layout for voting process

* feat: add link to voting booth

* feat: add min_slections method to questions

* feat: add voting booth

* feat: add JS

* feat: add locales

* fix: fix lint issues manually

* fix: remove trailing white line and fix i18n issue

* fix: update i18n path for election_m footer

* fix: answer counter on edit

* fix: hide the creation date from elections cells

* fix: "Close" link changed to "Exit" and linked to election page.

* fix: removed extra spaces and html from translation

* feat: applied elections listing design

* fix: place "Selections" label above "Next" with simplified translations

* fix: redirect to election page when voting is not allowed.

* style: lint issues fixes and locales normalized

* fix: link elections images directory in the component manifest

* fix: show information modal only when extra information is available

* feat: order answers randomly when needed

* fix: recover meetings dates design for elections

* feat: adapt election view depending on the voting period status

* fix: remove link from user name in focus layout

* fix: remove unneeded form object, with some naming improvements

* fix: use the right action on the vote button

* test: set elections as ongoing by default in factories

* fix: ensure answers are well ordered

* test: votes tests

* style: fix lint issues

* test: complete permissions tests

* test: add election presenter tests

* test: fix test folder structure

* style: normalize locales

* tests: fix bug and undo election factory creating ongoing elections

Finished elections factory was creating elections finished but not started. Also, changing elections factory to be ongoing by default affects too many tests.

* fix: check resources permissions when showing vote button

* feat: allow admins to preview the voting booth

* fix: add missing title to voting booth

* fix: apply required text changes

* fix: use organization logo instead of an static image

* style: improve JS methods naming

* style: improve readability of ordering test comments

* style: improve elections factory use of traits

* style: fix codeclimate issue

* fix: remove typo on function name

* feat: hide unpublished elections to non-admin users

* style: add comments to models methods

* fix: revert wrong conflict solution during rebase

* fix: allow anonymous users to view published elections

* feat: publish elections randomly during seeds

Co-authored-by: Javier Usobiaga <>
Co-authored-by: Leonardo Diez <>

Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Decidim Logo

The participatory democracy framework.

Free Open-Source participatory democracy, citizen participation and open government for cities and organizations

Decidim is a participatory democracy framework, written in Ruby on Rails, originally developed for the Barcelona City government online and offline participation website. Installing these libraries will provide you a generator and gems to help you develop web applications like the ones found on example applications or like our demo application.

All members of the Decidim community agree with Decidim Social Contract or Code of Democratic Guarantees.

Gem Gem GitHub contributors Yard Docs Gitter

Code quality

codecov Maintainability Crowdin Inline docs Accessibility issues HTML issues

Test suite

See all

Accountability Admin Api Assemblies Blogs Budgets Comments Conferences Consultations Core Debates Forms Generators Initiatives Main Meetings Pages Participatory processes Proposals (system admin) Proposals (system public) Proposals (unit tests) Sortitions Surveys System Verifications

What do you need to do?

Getting started with Decidim

TLDR: install gem, generate a Ruby on Rails app, enjoy.

gem install decidim
decidim decidim_application

We've set up a guide on how to install, set up and upgrade Decidim. See the Getting started guide.

How to contribute

See Contributing.

Browse Decidim

After you create a development app (bundle exec rake development_app), you have to switch to it and boot the rails server with cd development_app && bundle exec rails s.

After that, you can:

  • Browse the main interface at http://localhost:3000, and log in as: | decidim123456
  • Browse the admin interface at http://localhost:3000/admin, and log in as: | decidim123456
  • Browse the system interface at http://localhost:3000/system, and log in as: | decidim123456

Also, if you want to verify yourself against the default authorization handler use a document number ended with "X".


If you need to have some features that we don't have yet, we recommend that you make a module. This is a Ruby on Rails engine with some APIs specific to Decidim (for registering with the menus, integration with spaces like Participatory Processes or Assemblies, with /admin or /api, etc).

As a base you can use these modules, although check first that the version is compatible with your current Decidim version. Also you should know that until v1.0.0 We're under development and these internal APIs can change. We recommend that you extensively test your module.

See Modules page on

Authorizations Strategies

One specific thing regarding these kind of applications is the authorization/verification logic. Here are some examples:

Other special verifications:

Following our license

If you plan to release your application you'll need to publish it using the same license: GPL Affero 3. We recommend doing that on GitHub before publishing, you can read more on "Being Open Source From Day One is Especially Important for Government Projects". If you have any trouble you can contact us on Gitter.

Example applications

Since Decidim is a ruby gem, you can check out the dependent repositories to see how many applications are on the wild or tests that other developers have made. Here's a partial list with some of the projects that have used Decidim:


Security is very important to us. If you have any issue regarding security, please disclose the information responsibly by sending an email to security [at] decidim [dot] org and not by creating a github/metadecidim issue. We appreciate your effort to make Decidim more secure. See full security policy.

You can’t perform that action at this time.