-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Problem / Opportunity
CEDA heeft meerdere zelfstandige R- en Python-packages (eencijfer, instroomprognose, verrijking, kansengelijkheid) die elk hun eigen simpele UI hebben (Shiny/Streamlit). Wat ontbreekt is een integratie-laag: een unified app waar beheerders pipelines kunnen triggeren (inclusief lang lopende ML-taken) en eindgebruikers resultaten uit meerdere repos in een dashboard kunnen zien.
In standards/project-structure.md staat Type 4 (Integration/Dashboard Repository) als "future, needs exploration". Dit issue documenteert de architectuurverkenning.
Appetite (timebox)
Large (5-6 dagen) voor eerste prototype/validatie. De volledige uitbouw is een doorlopend project.
Solution
API-first architectuur met verwisselbare frontend:
- Backend: FastAPI (Python) - alle logica, job orchestratie, data serving
- Frontend fase 1: NiceGUI - pure Python, snel starten, intern gebruik (<50 users)
- Frontend fase 2: React/Next.js via vibe-coding (v0, Cursor) - visuele kwaliteit, schaalbaarheid
- Integratie: Python packages direct importeren, R packages via subprocess
- Job tracking: SQLite + asyncio (geen Redis/Celery bij 1-3 concurrent jobs)
- Data: Polars leest Parquet uit pipeline output directories
Kritische voorwaarde: strikte scheiding backend/frontend. NiceGUI als "domme client" die alleen API-calls doet, zodat de frontend later vervangbaar is.
Risks / Rabbit holes
- NiceGUI is relatief nieuw (~2022) - moet gevalideerd worden met een spike
- R runtime in Docker container (fat container vs sidecar)
- Package interface contract: downstream packages moeten een consistente
run_pipeline()interface bieden - SURF Developer Platform deployment details nog onbekend
No-Gos
- Geen Celery/Redis - overkill voor deze schaal
- Geen rpy2 voor R-integratie - subprocess is robuuster
- Geen monolithische frontend die niet vervangbaar is
- Geen business logica in de frontend-laag
Gevalideerd met
@corneeldenhartogh
Sparring partner
@corneeldenhartogh
Metadata
Metadata
Assignees
Labels
Type
Projects
Status