Backend Setup
Deze pagina legt uit hoe je de backend lokaal start (met Docker of zonder), welke omgevingsvariabelen nodig zijn en waar je de API-documentatie vindt.
Overzicht
De backend is een TypeScript/Express API met PostgreSQL + PostGIS. Voor lokale ontwikkeling is er een Docker Compose setup die zowel de API als de database start.
Belangrijke paden:
- API broncode:
back-end/project/containers/backend - Docker Compose:
back-end/project/containers/compose.yml - Database (PostGIS):
back-end/project/containers/db/init.sql - Voorbeeld-omgeving:
back-end/project/containers/.env
Benodigdheden
- Docker Desktop (incl. Docker Compose)
- Optioneel: Node.js 20+ (als je zonder Docker lokaal wil draaien)
- Optioneel: PNPM (of npm) voor lokale installaties
Snel starten (Docker)
- Maak/controleer
.envinback-end/project/containers(zie sectie Omgevingsvariabelen). - Start de services:
bash
cd back-end/project/containers
docker compose up --buildWat je krijgt:
- API HTTP:
http://localhost:3000 - Health check:
http://localhost:3000/health→ "ok" - Swagger docs:
http://localhost:3000/docs
Tijdens de eerste start doet de backend automatisch:
- Wachten tot de database klaar is
- (Optioneel) security audit en rapport opslag
- Importeren van hulpverleningszones en testgebruikers
- Berekenen van centroiden en initieel risicodata importeren
Stoppen kan met:
bash
docker compose down -vAlternatief: lokaal zonder Docker
- Installeer PostgreSQL 16 + PostGIS en maak een database
gisdb(of gebruikDATABASE_URL). - Stel je omgeving (env) in zodat de API verbinding kan maken (zie sectie Omgevingsvariabelen).
- Installeer dependencies en start:
bash
cd back-end/project/containers/backend
pnpm install # of: npm install
# Development (TypeScript direct)
npm run dev
# Of builden en runnen als JS
npm run build
npm startOmgevingsvariabelen
Gebruik .env in back-end/project/containers (voorbeeld aanwezig). Belangrijkste keys:
- Database:
DATABASE_URL(bijv.postgres://user:pass@host:5432/gisdb)- Of apart:
DB_HOST,DB_USER,DB_PASSWORD,DB_NAME,DB_PORT
- CORS & frontend:
ALLOWED_ORIGINS(komma-gescheiden lijst van toegestane origins)FRONTEND_URL(+ eventueel environment-specifieke varianten)
- Security & auth:
JWT_SECRET,JWT_EXPIRES_IN,REFRESH_TOKEN_EXPIRES_DAYSBCRYPT_COST(standaard 12)RUN_SECURITY_AUDIT_ON_STARTUP(true/false)
- Mail (voor een user aan te maken):
SMTP_HOST,SMTP_PORT,SMTP_USER,SMTP_PASS,SMTP_FROM_NAME
Let op: commit nooit echte geheimen in versiebeheer. Gebruik lokale .env en gedeelde secrets stores.
Testaccounts
Bij de eerste start worden testaccounts aangemaakt:
- Admin:
admin@admin.com/Azerty123! - Member:
test@test.com/Azerty123!
Handige endpoints
- Health:
GET /health→ snelle liveness check - Swagger:
GET /docs→ API documentatie en try-out
Probleemoplossing
- Database niet bereikbaar: controleer
DB_HOST,DB_PORTen of de DB container draait. - CORS fouten: pas
ALLOWED_ORIGINSaan met je frontend URL(s). - Poorten bezet: wijzig
PORTof stop processen die al op 3000/3443 draaien.
Zie ook
- API details: zie de pagina API