Commit graph

79 commits

Author SHA1 Message Date
Ramon
f795e85333 Installatiescript met opslagkeuze, standaard /srv/server-up (v0.2.04 beta)
Some checks failed
CI / backend (push) Has been cancelled
CI / frontend (push) Has been cancelled
Nieuw: scripts/install.sh — installeert de stack in zeven zichtbare stappen
met drie vragen, standaard in /srv/server-up (aan te passen met
ROOSTERWIJS_DIR). Het script:
- controleert git, docker, de compose-plugin en of de daemon bereikbaar is;
- maakt de doelmap aan, of legt uit welk commando daarvoor nodig is als de
  rechten ontbreken (roept zelf geen sudo aan);
- kloont of werkt de checkout bij;
- laat kiezen waar de gegevens komen (zie hieronder);
- genereert .env met een willekeurige DJANGO_SECRET_KEY en een sterk
  databasewachtwoord, en zet hostnaam, CSRF-origin en DJANGO_SECURE op basis
  van twee vragen; een bestaande .env wordt nooit zomaar overschreven;
- bouwt en start de containers;
- meldt of er een account is en biedt aan er een aan te maken.

Opslagkeuze bij de installatie:
- docker-compose.yml gebruikt nu ${DATA_DB}, ${DATA_MEDIA} en ${DATA_STATIC}.
  Een naam = Docker-volume, een pad = gewone map naast de code.
- De standaardwaarden zijn de bestaande named volumes, dus installaties die
  al draaien veranderen niet en er gaan geen gegevens verloren.
- Kies je voor mappen, dan komt alles onder /srv/server-up/data/.

Verder:
- .gitignore: /data/ uitgesloten. Zonder dat zou de gegevensmap als lokale
  wijziging gelden en zou deploy.sh weigeren te draaien.
- deploy.sh maakt de gegevensmappen aan als de opslagkeuze paden gebruikt,
  zodat Docker ze niet als root aanmaakt.
- DEPLOY.md en README: installatie via het script, de opslagkeuze in een
  tabel, en de dump/restore-stappen die nodig zijn bij het omzetten van
  volumes naar mappen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FAQ4Np13v8fwbTtKHKnwDz
2026-08-19 15:17:08 +02:00
Ramon
500cf6c558 Herstel installatie-instructies en hard deploy-script (v0.2.03 beta)
Some checks are pending
CI / backend (push) Waiting to run
CI / frontend (push) Waiting to run
De installatiestappen in de README waren niet uitvoerbaar en het
deploy-script kon stilzwijgend werk vernietigen.

README:
- `python manage.py migrate` liep vast op `RuntimeError: DJANGO_SECRET_KEY
  ontbreekt`. DEBUG staat standaard uit en dan is die sleutel verplicht;
  de instructies noemden `DJANGO_DEBUG` nergens. Nu toegevoegd, met uitleg.
- `createsuperuser` stond als "optioneel, voor /admin/". Dat klopt niet: de
  hele API staat op `IsAuthenticated`, dus zonder account kom je de app
  helemaal niet in. Nu gemarkeerd als verplichte stap.
- Stap voor een virtual environment toegevoegd (pip installeerde anders in
  de systeem-Python, wat op recente distributies afketst op PEP 668).
- Node-eis vermeld: Vite 8 vereist 20.19+ of 22.12+.
- Verouderde beschrijvingen bijgewerkt: de tabs van het roosterscherm
  (Week/Genereren/Instellingen in plaats van Weekrooster/Conflicten/
  Schooljaar/Instellingen), Groepsindeling is een eigen scherm en geen tab,
  en er zijn twaalf modules in plaats van "twee voorbeeldmodules".

DEPLOY.md:
- `git clone .../Roostersoftware.git` + `cd Roostersoftware` gebruikte de
  verkeerde repo-naam; dat is `roosterwijs`.
- CSRF-origin en FRONTEND_BASE_URL stonden als http-voorbeeld; achter TLS
  moet dat https zijn.
- Rechtgezet: `DJANGO_CSRF_TRUSTED_ORIGINS` blokkeert het inloggen in de app
  niet (DRF-views zijn `csrf_exempt`), maar wel de Django-admin.
- Vermeld dat er nergens automatisch een account wordt aangemaakt.

scripts/deploy.sh:
- Stopt nu als `.env` ontbreekt; anders start de stack met lege variabelen
  en faalt de backend met een onduidelijke fout.
- Stopt bij lokale wijzigingen in plaats van ze met `git reset --hard`
  weg te gooien; bewust overschrijven kan met `--force`.
- Controleert vooraf of Docker en de compose-plugin er zijn.
- Toont welke commits erbij komen (oud -> nieuw) in plaats van alleen de
  nieuwe HEAD.
- Controleert na afloop of de backend antwoordt en of er een actief account
  bestaat, met het createsuperuser-commando als dat er niet is.

frontend/Dockerfile:
- Bouwt op node:22-alpine in plaats van node:20-alpine, gelijk aan de CI en
  ruim binnen de Node-eis van Vite 8.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FAQ4Np13v8fwbTtKHKnwDz
2026-08-19 14:57:49 +02:00
Ramon
1865de948e Fix redirect-lus achter TLS-proxy (v0.2.02 beta)
Some checks failed
CI / backend (push) Has been cancelled
CI / frontend (push) Has been cancelled
Inloggen mislukte met DJANGO_SECURE=1 achter een reverse proxy die TLS
afhandelt, terwijl het inlogscherm zelf wel laadde.

- nginx.conf gaf `X-Forwarded-Proto $scheme` door. Achter een TLS-proxy
  komt het verzoek als http binnen, dus overschreef nginx de `https` van
  de proxy met `http`. Django zag de verbinding daardoor als onveilig en
  stuurde elk verzoek naar /api en /admin door naar https, waarna de
  proxy het weer als http aanleverde: een oneindige redirect-lus.
- nginx neemt nu de X-Forwarded-Proto van de proxy over via een map, en
  valt alleen terug op $scheme als die header ontbreekt. Werkt daardoor
  zowel achter een externe proxy als bij TLS op nginx zelf.
- .env.example: voorbeelden voor CSRF-origin en frontend-URL op https
  gezet, DJANGO_SECURE standaard op 1, met uitleg waarom een http-origin
  het inloggen met een CSRF-fout laat stranden.
- DEPLOY.md: checklist "Draaien achter TLS" toegevoegd met de drie
  vereisten (proxy-header, CSRF-origin, allowed hosts), commando's om te
  controleren of de header aankomt, en het advies poort 8080 aan de
  loopback te binden zodat de app niet buiten TLS om bereikbaar is.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FAQ4Np13v8fwbTtKHKnwDz
2026-08-13 21:41:47 +02:00
Ramon
4f0bc009bb Verfijn rooster naar minimalistische opmaak (v0.2.01 beta)
Some checks are pending
CI / backend (push) Waiting to run
CI / frontend (push) Waiting to run
Roostermaker en roosterweergave hebben een rustiger, moderne opmaak
gekregen zonder informatie te verliezen.

- Minder geneste kaders: kolom, tijdvak, splitsing en vakkaart stapelden
  vier randen; nu dragen alleen de dagkolom en de vakkaart een rand en
  scheiden de rest met witruimte en haarlijnen.
- Vakkaart groeit mee met de inhoud in plaats van een vaste hoogte, zodat
  lokaal, begeleiding en opmerkingen niet meer afgekapt worden.
- Meta-regel (locatie, lokaal, begeleiders) zonder pil-achtergronden;
  lange vaknamen lopen door over twee regels met tooltip.
- Bewerkknoppen (vervallen, bewerken, verwijderen) staan gebundeld
  rechtsboven op de kaart en verschijnen bij hover, zodat de vaknaam de
  volle breedte houdt; op aanraakschermen blijven ze zichtbaar.
- Tijdvak toont nu begin- en eindtijd; lege tijdvakken in de weergave
  krijgen een subtiele markering.
- Dagkop is compacter en markeert "vandaag"; dagacties verschijnen bij
  hover. Diagonale arcering bij vrije dagen vervangen door een getinte
  kolom met dagtype-label.
- Subgroep-vertakking en doelgroepkop in neutrale haarlijnen in plaats
  van blauwe kaders.
- Conflicten met een rode rand in plaats van een harde binnenschaduw;
  bij volledig gekleurde vakken blijft de vakkleur staan met rode ring.
- Toolbar, weeknavigatie, detailkeuze en scopebalk strakker uitgelijnd.
- Afdrukken meegenomen: geen sticky dagkop, neutrale randen, en bij
  "vakken in kleur" kleuren lokaal en begeleiding mee.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FAQ4Np13v8fwbTtKHKnwDz
2026-08-13 09:16:22 +02:00
Ramon
c5e19eca6a Moderniseer interface naar v0.2.00 beta
Some checks failed
CI / backend (push) Has been cancelled
CI / frontend (push) Has been cancelled
2026-07-14 20:09:14 +02:00
bes-r
c8d808b26f Fix logo refresh after upload
Some checks failed
CI / backend (push) Has been cancelled
CI / frontend (push) Has been cancelled
2026-07-06 21:46:44 +02:00
bes-r
47ccfada04 Fix duplicate schedule header
Some checks are pending
CI / backend (push) Waiting to run
CI / frontend (push) Waiting to run
2026-07-06 21:39:22 +02:00
bes-r
a5d79a3545 revert-bca089c-schedule-card-redesign
Some checks are pending
CI / backend (push) Waiting to run
CI / frontend (push) Waiting to run
2026-07-06 21:34:00 +02:00
bes-r
bca089c807 Redesign schedule cards with class accents and clearer conflicts
Some checks are pending
CI / backend (push) Waiting to run
CI / frontend (push) Waiting to run
2026-07-06 21:29:16 +02:00
bes-r
6eb42aede5 Restyle schedule UI and improve timetable usability
Some checks are pending
CI / backend (push) Waiting to run
CI / frontend (push) Waiting to run
2026-07-06 21:21:11 +02:00
bes-r
d52945a1bd Fix navigation dropdowns and schedule details visibility
Some checks are pending
CI / backend (push) Waiting to run
CI / frontend (push) Waiting to run
2026-07-06 21:09:53 +02:00
bes-r
c238190458 Improve overall UI visibility and color contrast
Some checks are pending
CI / backend (push) Waiting to run
CI / frontend (push) Waiting to run
2026-07-06 21:02:57 +02:00
bes-r
86cbc20cf7 Improve schedule grid readability
Some checks are pending
CI / backend (push) Waiting to run
CI / frontend (push) Waiting to run
2026-07-06 20:59:27 +02:00
bes-r
4459f60019 Improve schedule duplicate blocks and conflict styling
Some checks are pending
CI / backend (push) Waiting to run
CI / frontend (push) Waiting to run
2026-07-06 20:55:18 +02:00
bes-r
958ace1536 Improve schedule UI clarity 2026-07-04 23:23:58 +02:00
bes-r
c845588e5e Add roles modules audit logging and CI
Some checks failed
CI / backend (push) Has been cancelled
CI / frontend (push) Has been cancelled
2026-07-04 23:01:06 +02:00
bes-r
dd52b81b02 vormgeving: compleet thema (schoolnaam + kleuren) + logo-rechten gefixt 2026-06-21 15:11:52 +02:00
bes-r
d8c4523dc0 logo-upload: media-rechten zelfherstellend via gosu-entrypoint + module hernoemd naar 'Logo' 2026-06-21 14:42:12 +02:00
bes-r
7a5d3b75eb huisstijl: leesbare uploadfouten + expliciete multipart-parser 2026-06-21 14:31:13 +02:00
bes-r
e8934c6352 huisstijl-module (logo + kwaliteitscheck) + print-aanvullingen (legenda, pagina per dag, koptekst met logo) 2026-06-20 00:00:35 +02:00
bes-r
1b559dd2c6 printopties-dialog: bereik, indeling, kleur, details, papierformaat & orientatie 2026-06-19 23:45:06 +02:00
bes-r
0ab8ecb798 view-opties als subtiele icoonknopjes (dagen/vakkleur/print) 2026-06-19 23:37:26 +02:00
bes-r
bfcb8b0d42 perioderooster: hele periode wissen + weergaveoptie vak volledig in vakkleur 2026-06-19 23:31:00 +02:00
bes-r
e435ddd961 perioderooster: resulterende conflicten in voltooien-preview tonen 2026-06-19 23:12:37 +02:00
bes-r
6024a46b35 perioderooster: hernoemd, boven roostermaker, voltooien met periode + preview (Periode-model, sjabloon) 2026-06-19 22:52:57 +02:00
bes-r
66590553fe weekroostermaker: matrix alle klassen, vast weekrooster met live conflicten 2026-06-18 23:47:42 +02:00
bes-r
7ab1be9abe Jaar naar Instellingen, instellingen-accordeon, vak toevoegen per tijdvak 2026-06-18 23:37:44 +02:00
bes-r
066fe23250 uniforme vak-/klasweergave: klas-kop met vak eronder, één kaartontwerp 2026-06-18 23:32:30 +02:00
bes-r
2600db7f69 filterbalk strakker + rooster weergaveschakelaar (kolommen/dagen onder elkaar) 2026-06-18 23:14:32 +02:00
bes-r
8361484749 scope-balk: chips wrappen + persoonkeuze op eigen regel 2026-06-18 23:04:26 +02:00
bes-r
7f1ada1d48 scope-/filterbalk vereenvoudigd: chips + één persoon-keuzelijst 2026-06-18 22:58:41 +02:00
bes-r
19862ae8aa conflicten in rooster tonen + tabbalk logischer 2026-06-18 22:51:58 +02:00
bes-r
d2905dba71 rooster-scope compacter + verbeterde weekscroll (weeknr+datumreeks) + icoon-tabbalken 2026-06-18 22:32:56 +02:00
bes-r
168c71d2fb menu's: gegroepeerde bovenbalk-dropdowns + icoon-tabbalk (inklapbaar) 2026-06-18 22:21:46 +02:00
bes-r
170a036c4e auto-rooster voor meerdere klassen + vak voor meerdere klassen (gedeelde begeleider/lokaal) 2026-06-17 15:44:33 +02:00
bes-r
54a9dd5dc2 auto-rooster met voorkeuren (dagdeel, vrije dagen, max per dag) 2026-06-17 15:32:50 +02:00
bes-r
f40918c077 e-mailconfig + bulk-import gebruikers met wachtwoorden en persoonvoorstel 2026-06-17 15:25:55 +02:00
bes-r
e38eacefcb accounts-module: login+e-mail, wachtwoordreset (admin + e-maillink), persoon-integratie 2026-06-17 15:14:36 +02:00
bes-r
48a72fd199 auto-rooster als tab onder roostermaker; code-review: imports + model-drift opgeschoond 2026-06-17 14:56:55 +02:00
bes-r
2b6a9ac47a module: automatisch rooster genereren 2026-06-17 14:48:04 +02:00
bes-r
31d037d8af wizards onder roostermaker/personen + snelmenu leerplein 2026-06-17 14:37:52 +02:00
bes-r
f0c7b3644f modules: vak- en personen-wizard + import 2026-06-17 14:25:10 +02:00
bes-r
aa90a93648 Modules: Vak-wizard en Personen-wizard met bulk/CSV-import 2026-06-17 14:20:56 +02:00
bes-r
cc32e0b7ef Dagdeel-indeling (ochtend/middag) in leerling- en ouderweergave 2026-06-17 14:05:14 +02:00
bes-r
2548b7acd9 Pictogram per vak (upload) + media-infra; grote leerling- en ouderweergave met pictogram en vakkleur (migratie core 0009) 2026-06-16 23:43:59 +02:00
bes-r
6afe007b22 Split-subgroep fix; vrije dagen niet bruikbaar in roostermaker; uren-geschiedenis (momentopnames, migratie module_uren 0001) 2026-06-16 23:26:12 +02:00
bes-r
fc651c2f9d Uren-filters; roosterblok geldig van/tot (periode + eenmalig); dag leegmaken + eenmalig alternatief (migratie core 0008) 2026-06-16 23:12:52 +02:00
bes-r
2c2c33c116 Groepsindeling als één sleep-overzicht met kleurstructuur 2026-06-16 23:00:47 +02:00
bes-r
e4a75c9794 Groepsindeling: toon-filter + multi-select; handmatig vak-icoon (migratie core 0007) 2026-06-16 22:50:40 +02:00
bes-r
77a5eacfed Groepsindeling als één sleep-overzicht met kleurstructuur 2026-06-16 22:17:47 +02:00