Skip to content

Latest commit

 

History

History
33 lines (26 loc) · 3.33 KB

README.md

File metadata and controls

33 lines (26 loc) · 3.33 KB

camelot-flutter

Contributor Covenant
Cross platform Flutter application to subscribe and vote on Rousseau. Rousseau is the e-voting platform of the 5 Stars MoVement, one of the main Italian Parties. Given its social impact, this app will be implemented in crowdsourcing allowing everyone to contribute. This is also a social experiment: trying to build something so relevant and impactful only with voluntary contributions.

Scope

The goal of this first wave is to build a voting app. The functionality we are interested in implementing are:

  1. Login
  2. Registration
  3. Edit Profile
  4. ID documents upload
  5. Polls listing
  6. Voting (text options)
  7. Notification (and deeplink handling)
  8. [Stretch goal] Voting with candidate entities

Backend

We are relying on the current backend used by the webapp (single page application) and on our keycloak server as a single sign on. This is the SSO root url: https://sso.rousseau.movimento5stelle.it. Keycloak uses the Open ID Connect protocol. For more info about the login and registration flow, refer to the official guide. For the login we are using a secret client.

The backend is a graphql API written in rails, that exposes only one endpoint for all the queries: https://api.rousseau.movimento5stelle.it/graphql. Queries are provided in this codebase.

Send Notifications

To send notifications the backend has to add the field click_action = FLUTTER_NOTIFICATION_CLICK. It's possible to add the optional parameter route as one of the ROUTE_NAME you can find on each screen. E.g.: route = /polls

Finding something to work on

In the project canvas there is a list of open issues to work on and discussions to contribute. It also includes UX/Design tasks that won't require any programming skills. Everyone is free to grab an issue and solve it, to file new issues and to propose new features or improvements of the existing ones. This project and codebase are public and all the information and history are available to everyone.

Coding patterns

  • We are using the provider pattern, watching this video is a must!
  • We are using Dependency Injection with injectable. Familiarize with the design pattern and add your class to RegisterModule when possible. We want to avoid direct invocation of the constructors at least for important objects.
  • Run flutter pub run build_runner watch --delete-conflicting-outputs if you plan to change compile time generated classes. For example, you'll need it if you want to add a new injected class.

Submitting your PR

For the PR flow we are referring to this flow. In order to be considered, PR have to be written in english, pass all the tests and pass all the lint checks. For substantial UI changes you should add a screenshot to the PR. In order to be merged, they have to be approved by an owner.