Getting started with Decidim Bulletin Board

What is and what isn’t Decidim Bulletin Board?

Decidim Bulletin Board is an independent application designed to provide services to Decidim instances to allow them to run secure, end-to-end, auditable votings. But it can’t be used as a standalone application, since it doesn’t offer a user interface for administrators to define elections nor for voters to cast their votes.

If you want to start your own installation of the Decidim Bulletin Board, you need to clone this repo. Keep reading to find out how to install and setup a Decidim Bulletin Board.

Installing

To start developing or using the Bulletin Board, follow the instructions in our development guide.

Setup Decidim Bulletin Board

Annotation

The Bulletin Board requires that all messages should be signed to be published. Thus, all involved parts of an election (authority, trustees and the bulletin board itself) should have identification keys.

Bulletin Board Identification key pair

To generate a new identification key pair, run:

bin/rails client:generate_identification_private_key

This task will output the generated private key. You should copy the private key and store that value on the environment variable IDENTIFICATION_PRIVATE_KEY.

Ensure that the private key is not lost between deployments and servers reboots and that it can be accessed by the application only.

Adding an authority as a client of the Bulletin Board

As an administrator of the Decidim Bulletin Board, you’ll receive the name of the Decidim instance (Authority name) and the public key (type: string, no spaces allowed) of this authority. In order to allow an authority to connect to this Bulletin Board instance, run:

bin/rails 'client:add_authority[Authority name, public key]'

"Authority name" needs to be replaced by the authority name of the Decidim instance. "public key" needs to be replaced by the public key of the authority.

As a result of this process, you will obtain an API Key that you will have to send back to the Decidim authority.

Further configuration

We also have other guides on how to configure some extra components:

  • ActiveJob: For background jobs (like sending emails).

Contributing

We always welcome new contributors of all levels to the project.

We also have a developer’s reference that will help you getting started with your environment and our daily commands, routines, etc.