Een health- en wellness-platform voor veteranen, gebouwd als monorepo voor het vak The Lab (Karel de Grote Hogeschool, jaar 3). Studenten van team 26 — De Uitgeruste IT'ers (academiejaar 2025-2026).
De app combineert een mobiele veteran-facing app (Flutter), een web-portaal voor begeleiders (Vue), twee Go-backends, en een Docker-gebaseerde lokale ontwikkelomgeving met PostgreSQL en Keycloak.
endurance/
├── backend/ Hoofd-API (Go) — REST + WebSocket, business logic, data
├── algorithm/ Aparte Go-service voor matching/aanbevelingsalgoritmes
├── web/ Web-frontend (Vue 3 + Vite + TypeScript)
├── mobile/ Mobile app (Flutter / Dart) voor veteranen
└── deployment/ Docker Compose, Keycloak-realm, init-SQL, seed-scripts
Centrale API. Stack:
- Go 1.25 met
chirouter - PostgreSQL via
pgx/v5+ SQL-migraties inmigrations/ - Keycloak JWT-validatie (
keyfunc+golang-jwt) - WebSocket (
coder/websocket) voor real-time chat - Firebase Admin SDK voor push notifications (FCM)
- iCal-export voor afspraken (
golang-ical)
Start lokaal:
cd backend
cp .env.example .env # vul secrets in
go run ./cmdAparte service voor algoritmische taken (matching, aanbevelingen). Lichter — alleen chi, JWT-validatie en godotenv.
cd algorithm
go run .Web-interface voor begeleiders / niet-veteran-gebruikers.
- Vue 3 + Vite + TypeScript (strict)
- Pinia (met
pinia-plugin-persistedstate) voor state - Vue Router, Radix-Vue UI primitives
- TailwindCSS 4
- Chart.js +
vue-chartjsvoor data-visualisatie - Keycloak-integratie via
@josempgon/vue-keycloak
cd web
npm install
npm run dev # dev server
npm run build # type-check + productie-buildVeteran-facing mobile app (Android / iOS).
- Flutter 3.x / Dart 3.10+
- GetX voor state management, GoRouter voor navigatie
- OAuth2/OIDC via Keycloak (
flutter_appauth+flutter_secure_storage) - Dio HTTP client met auto-refresh interceptor
- WebSocket-chat (
web_socket_channel) health-package voor wearable data (stress/mood tracking)- Firebase Cloud Messaging voor push
flutter_intlvoor meertalige UI (NL, EN, RU, UK)
cd mobile
flutter pub get
cp .env.json.example .env.json # vul Keycloak + API URLs in
flutter run --dart-define-from-file=.env.jsonLokale dev-stack:
- PostgreSQL 17 voor de applicatie-database (
endurance) - PostgreSQL 17 apart voor Keycloak
- Keycloak 26.4 als Identity Provider, met realm-import en TLS-certificaten
cd deployment
# vul .env.db en .env.idp aan (zie repo voor templates)
docker compose up -d
# Keycloak admin: https://localhost:8443
# Postgres app: localhost:5432 (DB: endurance)
# Postgres idp: localhost:5433 (DB: keycloak)Op Windows: gebruik seed-windows.sh (Git Bash / WSL) om Keycloak-gebruikers te seeden.
┌────────────┐ ┌────────────┐
│ Mobile │ │ Web │
│ (Flutter) │ │ (Vue 3) │
└─────┬──────┘ └─────┬──────┘
│ OAuth2 (Keycloak) │
├──────────────────────┤
│ │
▼ REST + WebSocket ▼
┌─────────────────────────────────┐
│ backend (Go) │
└──────────┬──────────┬───────────┘
│ │
▼ ▼
┌──────────┐ ┌──────────┐
│ Postgres │ │algorithm │
│ │ │ (Go) │
└──────────┘ └──────────┘
Authenticatie loopt over Keycloak; zowel mobile, web als de Go-services valideren JWT's via de Keycloak public keys. De veteran-rol gatet veteran-specifieke functionaliteit in de mobile app.
De originele canonical repo's leven op GitLab onder de KdG-instance: gitlab.com/kdg-ti/the-lab/teams-25-26/26-de-uitgeruste-it-ers/*. Deze GitHub-repo is een gebundelde monorepo-snapshot.
Schoolproject — geen open-source licentie tenzij anders aangegeven.