71 lines
2.5 KiB
Markdown
71 lines
2.5 KiB
Markdown
# Roostersoftware
|
||
|
||
Modulair, flexibel roostersysteem voor het speciaal onderwijs. Zie `PLAN.md`
|
||
voor de visie en de fasering.
|
||
|
||
Deze map bevat het resultaat van **Fase 0**: het fundament en een echt
|
||
plugin-framework waarmee modules per school in- en uitgeschakeld kunnen worden.
|
||
|
||
## 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). Domeinmodellen (personen, groepen,
|
||
roosterblokken, kalender) volgen in fase 1–2.
|
||
- `modules/printing/` en `modules/accounts/` — twee voorbeeldmodules die
|
||
zich bij opstarten aanmelden bij het register.
|
||
- **Frontend** (`frontend/`) — React (Vite) met een zijbalk die alleen menu's
|
||
toont van ingeschakelde modules, plus een scherm **Modulebeheer** om modules
|
||
aan/uit te zetten.
|
||
|
||
## Hoe modulariteit werkt (het verkoopargument)
|
||
|
||
1. Een module is een gewone Django-app met een `apps.py` die in `ready()` een
|
||
`ModuleSpec` registreert (naam, beschrijving, versie, afhankelijkheden en
|
||
menu-items).
|
||
2. Het register weet wélke modules bestaan; de database onthoudt of ze **aan**
|
||
staan. Een beheerder schakelt ze per school in/uit via Modulebeheer.
|
||
3. 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)
|
||
|
||
```bash
|
||
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.
|
||
- `/admin/` — Django-admin (modulestatus ook hier instelbaar).
|
||
|
||
> Draait SQLite niet op je projectmap (bv. op een netwerkschijf)? Zet dan
|
||
> `ROOSTER_DB_PATH` naar een lokaal pad, of pas `DATABASES` aan.
|
||
|
||
### Frontend (React, poort 5173)
|
||
|
||
```bash
|
||
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 1)
|
||
|
||
Kerndomein bouwen: personen (leerlingen, leerkrachten, ondersteuners),
|
||
groepen en subgroepen — met beheerschermen.
|