Verantwoording
Wat is gebouwd, wat niet.
Deze pagina hoort bij de oplevering, niet bij de gastbeleving. Alles wat hier staat is na te lopen in de code en in de crawlbewijzen.
| GREEN | Publieke site: home, wellness, behandelingen, overnachten, arrangementen, restaurant, cadeaubonnen, praktisch | Volledig gebouwd en doorgeklikt op 390, 430, 768, 1280 en 1680 px. |
|---|---|---|
| GREEN | Reserveringswizard met vijf stappen, prijsopbouw en statusmodel | Werkt end-to-end; statussen bevestigd / aanvraag / wachtlijst / geannuleerd worden getoond en opgeslagen. |
| GREEN | Gastomgeving “Mijn Midwolda” | Toont reserveringen uit deze browser, wijzigen en annuleren aangevraagd; zonder account (demo). |
| GREEN | Dashboard “Jouw dag” | Dagoverzicht, actielijst, tijdlijn, indicatoren. Alle cijfers zijn herkenbaar als DEMO gemarkeerd. |
| GREEN | Beheer (CMS-licht) | Mededeling, tijdelijke sluiting en openingstijden aanpassen met preview en terugzetten. |
| GREEN | Toegankelijkheid | WCAG 2.2 AA nagestreefd: toetsenbord, focus, contrast, labels, reduced motion, drie tekstgroottes. |
| GREEN | SEO-fundament | Per pagina title, description, canonical, hreflang, Open Graph, structured data (HealthAndBeautyBusiness), sitemap, robots. |
| YELLOW | Duitse vertaling | Startpagina, praktische informatie en de reserveringswizard zijn in het Duits. De overige pagina’s nog niet — geen automatische vertaling als eindproduct. |
| YELLOW | Betalingen | Geen betaalprovider aangesloten. De wizard eindigt met “betaling volgt”; er wordt niets afgeschreven. |
| GREEN | Beschikbaarheid en dubbele boekingen | De boekings-API controleert de capaciteit in een SQLite-transactie; twee gelijktijdige boekingen kunnen niet allebei het laatste bed plaatsen. Getest met twee processen tegelijk. |
| YELLOW | E-mail en bevestigingen | De keten staat: outbox, Nederlandse en Duitse sjablonen, herhaalpogingen en een verwerk-endpoint. Er is nog geen mailprovider aangesloten, dus er wordt niets bezorgd — en dat zegt de site ook. |
| YELLOW | Fotografie | De beelden zijn conceptbeelden (AI). Echte fotografie en de rechten daarvan staan open als Q6. |
| YELLOW | Letters | De site gebruikt een systeem-serif voor prestaties en omdat er nog geen licenties zijn voor Cormorant Garamond / Inter. Zelf hosten is de volgende stap. |
| GREEN | Boekingsbackend en database | Gebouwd: SQLite met vier additieve migraties, transacties, statussen, idempotentie en een auditspoor. 80 tests in vijf lagen, alle groen. |
| RED | Reviews | Geen echte beoordelingen aangeleverd, dus de sectie staat bewust leeg in plaats van met verzonnen quotes. |
| GREEN | Inloggen en accounts | Gastportaal met magic link en beveiligde link per reservering; medewerkers met wachtwoord, rol en tweede factor (TOTP). Beheeracties vragen twee stappen. |
| YELLOW | Medewerkersomgeving in productie | De pagina bestaat en werkt tegen de API, maar de conceptomgeving praat nog niet met de productie-database. Koppelen en testen op de server is de volgende stap. |
Bronnen
- Crawl van saunabeautyfarmmidwolda.nl, 2 november 2026 (54 pagina’s in
docs/sauna-midwolda/bewijs/raw). - Tarieven, openingstijden, faciliteiten, behandelingen, arrangementen en overnachtingstarieven komen uit die crawl.
- Master Project Brief v1.0 en het uitvoeringsplan Fase 1 + 2 (v1.1), beide in deze repository.
Aannames
- Capaciteitsgetallen per dagdeel zijn voorbeeldwaarden; de echte capaciteit is niet opgevraagd.
- Tijdsloten voor behandelingen (09.30 – 16.45) zijn een voorstel, geen bevestigde agenda.
- Annuleringstermijn van 24 uur is gebruikelijk in de branche maar nog niet door de eigenaar bevestigd.
- De menukaart in het restaurant is een voorbeeld; alleen soep, lunchgerecht en ontbijttijd zijn bevestigd.
Wat er technisch achter zit
- Statische site, gegenereerd uit één inhoudsbron (
build.py), dus geen dubbele teksten. - Geen framework, geen externe libraries, geen tracking. Eén stylesheet en één script.
- Reserveringen en instellingen staan in
localStorage; bij het wissen van de browser ben je ze kwijt. - Beeld is geoptimaliseerd naar 1536 px breed,
loading="lazy"buiten de eerste sectie.
Wat nodig is voor productie
- Boekingsbackend met echte beschikbaarheid en transacties.
- Betaalprovider (Stripe) met webhooks en idempotente verwerking.
- Authenticatie voor gasten en medewerkers, met rollen.
- Contentbeheer (WordPress headless) met publicatie en rollback.
- Echte fotografie en de rechten daarvan.
- Duitse vertaling van de resterende pagina’s, door een mens.