This API allows you to create elections, vote and obtain results with majority judgment.
You can use our server at api.mieuxvoter.fr/.
Since our API relies on OpenAPI, documentation is automatically generated and it is available at api.mieuxvoter.fr/redoc or api.mieuxvoter.fr/docs.
Copy the .env
into .env.local
with your own settings.
Then launch the dockers with:
docker compose --profile all --env-file .env.local up -d
Note that you can use the profile
called dashboard
if you only need Metabase, image
if you only need to store images, or backup
for restic.
You certainly want to apply databases migrations with:
docker/migrate.sh
docker/test.sh
-
Install postgresql.
-
Install python 3.11.
-
Create a new virtual environment and activate it:
venv .venv
source .venv/bin/activate
- Install dependencies:
pip install -r requirements.txt
pip install -r requirements-dev.txt
-
Copy
.env
into.env.local
and edit environment variables -
Start the server:
uvicorn app.main:app --reload --env-file .env.local
- Visit the generated documentation:
http://127.0.0.1:8000/redoc
If you need to alter the database, you can create new migrations using alembic.
POST elections: creation election --> return a JWT token for administration --> and the election link --> and eventually a series of JWT tokens for voting PUT elections/[election-id] get all data about a specific election. Might need a JWT token --> might return new invites GET grades/[election-id]: only get the grades related to an election. Might need a JWT token GET candidates/[election-id]: only get the candidates related to an election. Might need a JWT token GET votes/[election-id]: only get the votes. Might need a JWT token POST elections/[election-id]/votes: to vote. Might need a JWT token
GET /metrics a few metrics, among them the number of elections, number of voters and number of votes.