Skip to content

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)

  1. Maak/controleer .env in back-end/project/containers (zie sectie Omgevingsvariabelen).
  2. Start de services:
bash
cd back-end/project/containers
docker compose up --build

Wat 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 -v

Alternatief: lokaal zonder Docker

  1. Installeer PostgreSQL 16 + PostGIS en maak een database gisdb (of gebruik DATABASE_URL).
  2. Stel je omgeving (env) in zodat de API verbinding kan maken (zie sectie Omgevingsvariabelen).
  3. 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 start

Omgevingsvariabelen

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_DAYS
    • BCRYPT_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_PORT en of de DB container draait.
  • CORS fouten: pas ALLOWED_ORIGINS aan met je frontend URL(s).
  • Poorten bezet: wijzig PORT of stop processen die al op 3000/3443 draaien.

Zie ook

  • API details: zie de pagina API

Fire Management System Documentation