The API for the website
- Python 99.9%
| app | ||
| controller | ||
| docs | ||
| integration | ||
| mapper | ||
| repository | ||
| service | ||
| tests | ||
| .dockerignore | ||
| .env | ||
| .env.example | ||
| AGENTS.md | ||
| database.sql | ||
| docker-compose.yml | ||
| Dockerfile | ||
| ERROR_CODES.md | ||
| README.md | ||
| requirements.txt | ||
| run.bat | ||
| TODO.md | ||
Motorsport Moments API
FastAPI project met PostgreSQL (extern) en Docker.
Structuur
repository/: data access functiesservice/: business logica en orkestratiecontroller/: API endpointsmapper/: response mappingapp/: app bootstrap, database dependency, schemas
Starten met Docker
docker compose up --build
API beschikbaar op http://localhost:8000.
Lokaal Starten (1 klik)
Start alleen:
run.bat
run.bat doet automatisch:
.venvaanmaken (indien nodig)- dependencies installeren
- environment defaults zetten
- Uvicorn starten op
http://localhost:8000
Voor eigen settings kun je een .env maken op basis van .env.example.
Belangrijke endpoints
GET /healthGET /users(admin role vereist)POST /usersGET /users/me(ingelogde gebruiker)GET /admin/ping(admin role vereist)
JWT authenticatie
JWT wordt verwacht via de Authorization header:
Authorization: Bearer <token>
Token claims die gebruikt worden:
sub: gebruiker identificatieemail: gebruiker e-mail (optioneel)roles: array met rollen, bijvoorbeeld["admin", "organizer"]
Configuratie via environment variables:
JWT_SECRET_KEY(standaard:change-me)JWT_ALGORITHM(standaard:HS256)JWT_AUDIENCE(optioneel)JWT_ISSUER(optioneel)
Voorbeeld payload:
{
"sub": "7c5b9f20-c911-4f18-9a7d-7a8dcf17aaf2",
"email": "admin@example.com",
"roles": ["admin"]
}
Voorbeeld body POST /users:
{
"email": "max@example.com",
"password_hash": "securehash123",
"given_name": "Max",
"family_name": "Verstappen"
}
#<23> <20>m<EFBFBD>o<EFBFBD>t<EFBFBD>o<EFBFBD>r<EFBFBD>s<EFBFBD>p<EFBFBD>o<EFBFBD>r<EFBFBD>t<EFBFBD>M<EFBFBD>o<EFBFBD>m<EFBFBD>e<EFBFBD>n<EFBFBD>t<EFBFBD>s<EFBFBD>A<EFBFBD>p<EFBFBD>i<EFBFBD> <0A> <0A>