Liefdevolle Blik — Featurelijst
Bijgewerkt: 9 maart 2026
Epic 1: Authenticatie & Gebruikersbeheer
LB-1: Gebruikersregistratie — ✅ Done
- ✅ Registratieformulier: voornaam, achternaam, e-mail, 06-nummer, wachtwoord
- ✅ E-mailverificatie via Supabase Auth
- ✅ Telefoonnummer validatie (alleen 06-nummers)
- ✅ WhatsApp opt-in checkbox
- Prioriteit: Must-have | Punten: 5
LB-2: Inloggen — ✅ Done
- ✅ E-mail + wachtwoord login
- ✅ Sessie management via Supabase SSR
- ✅ Magic link alternatief (Supabase OTP)
- Prioriteit: Must-have | Punten: 3
LB-3: Wachtwoord vergeten / reset — ✅ Done
- ✅ Supabase Auth heeft reset-flow ingebouwd
- ✅ Wachtwoord-vergeten pagina en reset-callback ingericht
- Prioriteit: Must-have | Punten: 2
LB-4: Account beheer — ✅ Done
- ✅ Profielgegevens wijzigen (/profiel)
- ✅ WhatsApp/e-mail opt-in in schema en profiel
- ✅ Account verwijderen (zelfservice) — via /profiel
- Prioriteit: Should-have | Punten: 3
Epic 2: Cirkels (Groepen)
LB-5: Cirkel aanmaken — ✅ Done
- ✅ Naam en openingsdatum instellen
- ✅ AES-256 cirkelsleutel genereren (server-side)
- ✅ Mentor wordt automatisch eerste lid
- ✅ Uitnodigingscode genereren
- ✅ Mentor mag max. 1 cirkel aanmaken
- ✅ Admin mag meerdere cirkels aanmaken
- ✅ Admin kan meteen mentor koppelen bij aanmaken
- Prioriteit: Must-have | Punten: 5
LB-6: Uitnodigingen versturen — ✅ Done
- ✅ Uitnodigingscode beschikbaar na aanmaken
- ✅ E-mail uitnodiging via Resend met uniek token
- ✅ Token validatie flow (verloopt na 7 dagen)
- Prioriteit: Must-have | Punten: 5
LB-7: Cirkel deelname via uitnodiging — ✅ Done
- ✅ Groepscode invoer op dashboard
- ✅ Automatisch lid worden na code-verificatie
- Prioriteit: Must-have | Punten: 3
LB-8: Groepsoverzicht / Dashboard — ✅ Done
- ✅ Ledenrooster met avatars en initialen
- ✅ Countdown naar openingsdatum (live)
- ✅ Mentor gemarkeerd met gouden ring en ✨
- ✅ Ingelogde gebruiker uitgegrijsd als "(Jij)"
- ✅ Rol-badge (Mentor / Lid) op cirkelkaart
- Prioriteit: Must-have | Punten: 5
Epic 3: Notities Schrijven
LB-9: Notitie schrijven modal — ✅ Done
- ✅ Lid selecteren uit groepsrooster
- ✅ Tekstveld met karakterteller (max 500)
- ✅ Handschrift-lettertype (Caveat) op gelinieerd papier
- ✅ Anonimiteit toggle (default anoniem; optioneel naam tonen)
- ✅ Versturen-knop met laad-status
- Prioriteit: Must-have | Punten: 5
LB-10: Client-side encryptie — ✅ Done
- ✅ AES-256-GCM versleuteling in browser
- ✅ Unieke IV per notitie
- ✅ Cirkelsleutel ophalen en gebruiken
- ✅ Alleen ciphertext + IV naar server gestuurd
- Prioriteit: Must-have | Punten: 5
LB-11: Notitie metadata overzicht — ✅ Done
- ✅ Schrijver ziet voor wie er geschreven is (metadata)
- ✅ Inhoud verborgen tot opening
- Prioriteit: Should-have | Punten: 2
Epic 4: Mentorbeheer
LB-12: Mentor dashboard — ✅ Done
- ✅ Leden-overzicht in eigen cirkel
- ✅ Mentor ziet notities vóór opening NIET (RLS)
- ✅ Mentor modereert notities ná opening
- ✅ Leden verwijderen uit cirkel
- ✅ Openingsdatum wijzigen door mentor
- Prioriteit: Must-have | Punten: 5
LB-13: Rapportagekanalen instellen — ✅ Done
- ✅ E-mail notificaties toggle per cirkel
- ⏸️ WhatsApp notificaties (Parked)
- ✅ Test-acties beschikbaar via dashboard
- Prioriteit: Should-have | Punten: 3
LB-14: Schrijfherinnering versturen — ✅ Done
- ✅ Handmatige herinnering naar leden via Mentor Dashboard
- ✅ Automatische herinnering 7 dagen vóór opening via Cron
- Prioriteit: Should-have | Punten: 3
Epic 5: Opening & Verzending
LB-15: Openingspagina (blik open) — ✅ Done
- ✅ Notities-wolk layout met zweef-animatie en rotatie
- ✅ Client-side ontsleuteling met vrijgegeven cirkelsleutel
- ✅ Anonieme notitie toont "— anoniem"; niet-anoniem toont naam (goud cursief)
- ✅ 30-dagenherinnering zichtbaar
- ✅ Afdrukken / Opslaan als PDF knop
- ✅ Print-CSS: navigatie verborgen, 2-koloms layout
- Prioriteit: Must-have | Punten: 8
LB-16: WhatsApp verzending op openingsdag — ⏸️ Parked
- ⬜ Goedgekeurde Meta template berichten
- ⬜ Per lid: openingslink + timestamp
- ⬜ Rate limiting (1 bericht per 100ms)
- Prioriteit: Backlog (Wachten op SIM-kaart) | Punten: 5
LB-17: E-mail verzending op openingsdag — ✅ Done
- ✅ Persoonlijk HTML-email overzicht via Resend
- ✅ Bouw van OpeningEmail (React Email component)
- ✅ Cron API koppeling
- Prioriteit: Must-have | Punten: 5
LB-18: Dagelijkse openingsdatum-check (cron) — ✅ Done
- ✅ Vercel Cron toegevoegd (
vercel.json) dagelijks om 07:00 UTC - ✅ API endpoint
/api/cron/dagelijkse-openingcheckt cirkels - ✅ Selecteert cirkels waarvan opening_datum = vandaag (of eerder)
- ✅ Markering toegevoegd in database (opening_verzonden)
- Prioriteit: Must-have | Punten: 5
Epic 6: Privacy & Lifecycle
LB-19: Automatische data-vernietiging (30 dagen na opening) — ✅ Done
- ✅ Schema en verwijderlogs-tabel aanwezig
- ✅ Cron job actief (dagelijks 03:00 via
/api/cron/vernietiging) - ✅ Notities, lidmaatschappen, en encryptiesleutel permanent wissen
- ✅ Supabase auth account verwijderen (Geautomatiseerd in vernietigings-cron)
- Prioriteit: Must-have | Punten: 5
LB-20: Zelfservice account verwijderen — ✅ Done
- ✅ Verwijderpagina (/account/verwijder) — is nu onderdeel van
/profiel - ✅ Bevestigingsstap (modal met extra check)
- ✅ Alle data direct verwijderen (verwijdering via admin credentials overschrijft RLS)
- ✅ Sessie logt automatisch uit na verwijdering
- Prioriteit: Must-have | Punten: 3
LB-21: Privacyverklaring — ✅ Done
- ✅ AVG/GDPR-conforme privacypagina (/privacy)
- ✅ Transparantie over encryptie en 30-dagen policy
- ✅ Cookie consent (Functionele cookies melding)
- Prioriteit: Must-have | Punten: 2
Epic 7: Beveiliging & Hardening
LB-22: Rate limiting middleware — ✅ Done
- ✅ 10 requests/minuut per IP (
src/middleware.ts) - ✅ Bescherming registratie en login endpoints (
authRoutes) - Prioriteit: Must-have | Punten: 3
LB-23: Content Security Policy headers — ✅ Done
- ✅ Strikte CSP in next.config.ts
- Prioriteit: Should-have | Punten: 2
LB-24: hCaptcha op registratie — ✅ Done
- ✅ Bot-bescherming bij accountaanmaak via @hcaptcha/react-hcaptcha
- Prioriteit: Should-have | Punten: 2
LB-25: E2E tests — ✅ Done
- ✅ Playwright geïnstalleerd en geconfigureerd
- ✅ playwright.vibe.config.ts aanwezig
- ✅ Spec-bestanden: routing, admin, cirkels, notities, opening
- ✅ Globale setup (cleanup test-cirkels)
- ✅ .env.test.example voor testcredentials
- Prioriteit: Should-have | Punten: 5
Epic 8: Infrastructuur & Deploy
LB-26: Vercel deployment — ✅ Done
- ✅ Productie: liefdevolleblik.nl (master branch)
- ✅ Test: test.liefdevolleblik.nl (test branch)
- ✅ Environment variables geconfigureerd
- Prioriteit: Must-have | Punten: 3
LB-27: DNS & Domein configuratie — ✅ Done
- ✅ A-records naar Vercel (76.76.21.21)
- ✅ SSL certificaten actief
- Prioriteit: Must-have | Punten: 2
LB-28: WhatsApp Business verificatie — ⏸️ Parked
- ⬜ Meta Business Account aanmaken
- ⬜ Telefoonnummer verificatie
- ⬜ Template goedkeuring
- Prioriteit: Backlog (Wachten op SIM-kaart) | Punten: 3
LB-29: Resend domein verificatie — ✅ Done
- ✅ SPF, DKIM, DMARC records ingesteld
- ✅ blik@liefdevolleblik.nl als afzender geconfigureerd
- Prioriteit: Must-have | Punten: 2
LB-30: Telegram verzending op openingsdag (Alternatief voor WA) — ⏸️ Parked
- ⬜ Telegram bot aanmaken via BotFather
- ⬜ Bot token toevoegen in
.env - ⬜ Koppeling in DB (profielen aan user_id Telegram)
- ⬜ Cron trigger inrichten voor
/api/cron/dagelijkse-opening - Prioriteit: Backlog (Wachten op SIM-kaart) | Punten: 4
Admin Portaal (extra — buiten epics)
Admin Dashboard — ✅ Done
- ✅ Alleen toegankelijk voor rol
admin - ✅ 🛡️ Admin-knop in header
- ✅ Realtime statistieken: cirkels, leden, notities
- ✅ Mentor-rol toewijzen via e-mailadres
- ✅ Data Analytics placeholder (views nog te definiëren)
Omgevingsscheiding — ✅ Done
- ✅ Productie: "Binnenkort beschikbaar" — geen app-knoppen
- ✅ Test: volledige app met "Start een Blik" CTA
Samenvatting
| Status | Aantal |
|---|---|
| ✅ Done | 34 |
| 🔶 Gedeeltelijk | 0 |
| ⬜ Open | 0 |
| ⏸️ Parked | 3 |
| Totaal | 37 |
Must-have open (kritiek voor livegang)
Alle must-haves voor V1.0 zijn voltooid! 🎉
Totaal: 30 originele features + 4 admin/extra | ~123 story points
