Skip to content

Coupeke1/endurance

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Endurance

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.


Structuur

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

Services

backend/ — Go API

Centrale API. Stack:

  • Go 1.25 met chi router
  • PostgreSQL via pgx/v5 + SQL-migraties in migrations/
  • 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 ./cmd

algorithm/ — Go-microservice

Aparte service voor algoritmische taken (matching, aanbevelingen). Lichter — alleen chi, JWT-validatie en godotenv.

cd algorithm
go run .

web/ — Vue 3 portaal

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-chartjs voor data-visualisatie
  • Keycloak-integratie via @josempgon/vue-keycloak
cd web
npm install
npm run dev          # dev server
npm run build        # type-check + productie-build

mobile/ — Flutter app

Veteran-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_intl voor 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.json

deployment/ — Docker Compose

Lokale 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.


Architectuur in het kort

       ┌────────────┐         ┌────────────┐
       │   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.


Origineel & licentie

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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors