Free Open-Source participatory democracy, citizen participation and open government for cities and organizations
This is the open-source repository for developing the Letterbox project, based on Decidim.
To start contributing to this project, first:
- Install the basic dependencies (such as Ruby and PostgreSQL)
- Clone this repository
Start a development application by installing the database and some seeds:
bundle
DATABASE_USERNAME=<username> DATABASE_PASSWORD=<password> bin/rails db:create db:migrate
DATABASE_USERNAME=<username> DATABASE_PASSWORD=<password> bin/rails db:seed
Note that the database user has to have rights to create and drop a database in order to create the development app database.
Optionally, before starting the development server, start in a different terminal the webpacker live compiler. This facilitates working with JS/CSS assets:
bin/webpack-dev-server
Then start the development server:
DATABASE_USERNAME=<username> DATABASE_PASSWORD=<password> bin/rails s
We recommend using rbenv and have the
rbenv-vars plugin installed for it. Then you
can add the environment variables to the root directory of the project in a file
named .rbenv-vars
. If these are defined for the environment, you can omit
defining these in the commands shown above.
Please follow the code styling defined by the different linters that ensure we are all talking with the same language collaborating on the same project. This project is set to follow the same rules that Decidim itself follows.
Rubocop linter is used for the Ruby language.
You can run the code styling checks by running the following commands from the console:
$ bundle exec rubocop
To ease up following the style guide, you should install the plugin to your favorite editor, such as:
- Atom - linter-rubocop
- Sublime Text - Sublime RuboCop
- Visual Studio Code - Rubocop for Visual Studio Code
To run the tests, prepare the test database
RAILS_ENV=test DATABASE_USERNAME=<username> DATABASE_PASSWORD=<password> bin/rails db:create db:schema:load
Then run the following:
RAILS_ENV=test DATABASE_USERNAME=<username> DATABASE_PASSWORD=<password> bundle exec rspec
Note that the database user has to have rights to create and drop a database in order to create the dummy test app database.
In case you are using rbenv and have the
rbenv-vars plugin installed for it, you
can add these environment variables to the root directory of the project in a
file named .rbenv-vars
. In this case, you can omit defining these in the
commands shown above.
You will need to do some steps before having the app working properly once you've deployed it:
- Open a Rails console in the server:
bundle exec rails console
- Create a System Admin user:
user = Decidim::System::Admin.new(email: <email>, password: <password>, password_confirmation: <password>)
user.save!
- Visit
<your app url>/system
and login with your system admin credentials - Create a new organization. Check the locales you want to use for that organization, and select a default locale.
- Set the correct default host for the organization, otherwise the app will not work properly. Note that you need to include any subdomain you might be using.
- Fill the rest of the form and submit it.
You're good to go!