2.9 KiB
Roosterwijs
Modulair, flexibel roostersysteem voor het speciaal onderwijs (uil-logo: een
uil staat voor wijsheid → Roosterwijs). Zie PLAN.md voor de visie en de
fasering, en DEPLOY.md voor draaien op een test-/productieserver.
Status: Fase 0 (fundament + plugin-framework) en Fase 1 (kerndomein: personen, groepen, subgroepen) zijn klaar.
Wat er nu staat
- Backend (
backend/) — Django + Django REST Framework.plugins/— het plugin-framework: een moduleregister, opslag van de aan/uit-status per module en een beheer-API.core/— de kern (altijd actief). Fase 1: modellen Persoon, Groep en Subgroep met een volledige CRUD-API. Roosterblokken en kalender volgen in fase 2.modules/printing/enmodules/accounts/— twee voorbeeldmodules die zich bij opstarten aanmelden bij het register.
- Frontend (
frontend/) — React (Vite). Zijbalk met Roosterwijs-logo die alleen menu's toont van ingeschakelde modules, beheerschermen voor Personen, Groepen en Subgroepen, en een scherm Modulebeheer.
Hoe modulariteit werkt (het verkoopargument)
- Een module is een gewone Django-app met een
apps.pydie inready()eenModuleSpecregistreert (naam, beschrijving, versie, afhankelijkheden en menu-items). - Het register weet wélke modules bestaan; de database onthoudt of ze aan staan. Een beheerder schakelt ze per school in/uit via Modulebeheer.
- Uitgeschakelde modules leveren geen menu's of schermen — de kern blijft overal gelijk, modules zijn los bij te schakelen.
Een nieuwe module toevoegen = nieuwe app maken, één regel in
MODULE_APPS (in backend/config/settings.py), klaar.
Starten
Backend (Django, poort 8000)
cd backend
pip install -r requirements.txt
python manage.py migrate
python manage.py createsuperuser # optioneel, voor /admin/
python manage.py runserver
API-eindpunten:
GET /api/modules/— alle modules met status.POST /api/modules/<key>/state/— body{"enabled": true|false}.GET /api/info/— korte systeem-/gezondheidsinfo.GET/POST /api/personen/,/api/groepen/,/api/subgroepen/— CRUD (plusPATCH/DELETEop/<id>/). Personen filteren kan met?rol=leerling./admin/— Django-admin (personen, groepen, subgroepen en modulestatus).
Draait SQLite niet op je projectmap (bv. op een netwerkschijf)? Zet dan
ROOSTER_DB_PATHnaar een lokaal pad, of pasDATABASESaan.
Frontend (React, poort 5173)
cd frontend
npm install
npm run dev
De dev-server stuurt /api automatisch door naar de backend op poort 8000.
Open daarna http://localhost:5173 en ga naar Modulebeheer om modules
aan/uit te zetten.
Volgende stap (Fase 2)
Schooljaar & roostering: een jaarkalender (studiedagen, vrije dagen, vakanties) en roosterblokken die je toewijst aan een groep, subgroep of individuele leerling, met begeleiders en locatie.