Tendlodocumentatie-overzicht · stand 2026-07-12
Local-first · privacy-first · NL/EU-eerst

Eén rustige plek voor het hele gezin.

Tendlo is een local-first, privacy-first gezins-/huishoudassistent voor iOS en Android (Flutter). Alles wat een huishouden draaiende houdt — agenda, taken, boodschappen, maaltijden, schoolvakanties, sport, co-ouderschap, geldzaken, gezondheid — komt samen in één rustige app.

Data staat standaard op het eigen toestel; cloud-sync en gezinsdelen zijn opt-in (Supabase + PowerSync, EU). AI (documentscan, capture-herkenning, gegronde assistent) is een optionele versneller, nooit een vereiste. De historie van een gezin wordt nooit "gegijzeld".

Kerncijfers stand 2026-07-12

28
registry-modules (5 Free, 23 Plus), alle 28 ✅ Live en deep-linkbaar
6
domeinen (eten · gezin · huis · geld · gezondheid · bewaren); geld en gezondheid zijn sensitive (standaard privé) — herzien 2026-08-06; de domeinpagina's onder Product tonen nog de oude negen-indeling
17
kern-surface-routes, alle ✅ Live (herzien 2026-08-06)
50
gesyncte Postgres-tabellen (incl. member_module_prefs); daarnaast server-only + 4 legacy
~2.110
tests in 397 testbestanden; 6 integration-tests + screenshot-harnas
3
sync-streams én 3 Edge Functions (ai-proxy, invite-member, relocate-attachments)
2M
tokens/gebruiker/maand AI-fair-use-limiet, afgedwongen in de ai-proxy (429)
€59,99
per jaar: Plus Family (definitief bevestigd 2026-08-05; nog aan te maken in App Store Connect)

Statuslegenda

Status: ✅ Live (gebouwd, bereikbaar op genoemde route) · 🟡 Gedeeltelijk (werkt, met benoemd gat) · 🔧 In uitvoering · 📋 Gepland (met fase) · 💤 Bewust uitgesteld / non-goal

Vier sporen

Zo ziet het eruit

Drie schermen uit de app (testdata-screenshots, synthetische gegevens): Taken en Boodschappen in het lichte thema, Agenda in het donkere thema.

Taken-scherm (licht thema): takenlijst gegroepeerd per categorie met deadlines
Taken (tab 2) — licht thema
Agenda-scherm (donker thema): geünificeerde lijst per dag met module-injecties
Agenda — donker thema
Boodschappen-scherm (licht thema): boodschappenlijst met categorieën en afgevinkte items
Boodschappen — licht thema
Bron: docs/product/README.md · docs/product/visie-en-doelen.md · docs/archive/superseded/product/status-overzicht.md · docs/business/verdienmodel-en-pricing.md

Spoor Product

Tendlo bestaat uit een altijd-gratis kern van 8 vaste surfaces (de vier tabs plus de schermen eromheen) en 28 registry-modules verdeeld over 6 domeinen (herzien 2026-08-06; de kaarten en domeinpagina's hieronder tonen nog de oude negen — zie de notitie daar). Alle 28 registry-modules zijn gebouwd en bereikbaar (✅ Live, stand 2026-07-12). Tier: 5 Free, 23 Plus — maar Plus-handhaving staat nog uit. Sinds rechten fase 3 (live 2026-07-12) zijn nieuwe items standaard privé-tenzij-gezinsinfra en zijn module-activatie + meldingen persoonlijk per lid.

Status: ✅ Live (gebouwd, bereikbaar op genoemde route) · 🟡 Gedeeltelijk (werkt, met benoemd gat) · 🔧 In uitvoering · 📋 Gepland (met fase) · 💤 Bewust uitgesteld / non-goal

Hoe modules samenhangen

Modules registreren zichzelf in een registry en krijgen daardoor "gratis": een route (deep-linkbaar), een tegel in Mijn leven, agenda-injectie, Vandaag-secties, reminders, AI-extractors, capture-landingen en module-instellingen. De domeinen geld (tot 6 augustus 2026 financieel geheten) en gezondheid zijn gemarkeerd als sensitive: items zijn daar standaard privé per gebruiker en AI vereist een aparte per-domein-opt-in.

De 8 kern-surfaces gratis kern

De vier tabs plus de vaste schermen eromheen vormen de altijd-gratis kern.

SurfaceRoute(s)StatusDetail
Vandaag (dagbriefing, tab 1)/vandaag✅ Livebekijk
Taken (tab 2)/taken✅ Livebekijk
Agenda (via Mijn leven/appbar)/agenda✅ Livebekijk
Lijstjes & Boodschappen/lijstjes, /lijstjes/:id✅ Livebekijk
Inbox & capture (FAB, share-sheet)/inbox✅ Livebekijk
Assistent (tab 4)/assistent✅ Livebekijk
Instellingen & beheer (incl. Mijn leven, modules, meldingen, beveiliging, back-up, privacy, sync, gezin)/instellingen e.a.✅ Livebekijk
Onboarding/welkom✅ Livebekijk

De 9 domeinen en 28 registry-modules

Herzien 2026-08-06 — deze indeling is de oude.

De app kent sinds merge 0ea70a81 nog zes domeinen: Eten · Gezin · Huis · Geld · Gezondheid · Bewaren (lib/features/app_domains.dart:81-120). Planning, Bewaarlijsten, Vastgoed, Voorraad en Welzijn bestaan niet meer als domein en Financieel heet nu Geld; hun modules zijn onder de zes verdeeld (per module te zien aan domainId: in de *_module.dart-descriptors). De negen domeinkaarten en -pagina's hieronder zijn nog niet herschreven — lees ze als de stand van 2026-07-12, niet als de huidige indeling. De modules zelf en hun beschrijvingen kloppen wél; alleen de groepering eromheen is verouderd.

Beeld

Taken, Agenda en Boodschappen staan als echte screenshots op de homepagina. Voor Vandaag en de Assistent is er nog geen screenshot; hieronder een impressie in huisstijl (CSS-mockup, geen echte schermafbeelding).

Impressie
Vandaag · dagbriefing
Goedemorgen
Wat vraagt je aandacht
diner niet geplandtaak zonder eigenaar
Nu
Urgent item 1
Urgent item 2
Dagstroom
Ochtend · afspraak
Middag · klusje
Avond · maaltijd
Familiestrook · wie doet wat vandaag
Lid A · Lid B · Lid C
Vandaag (tab 1) — impressie
Impressie
Assistent · tab 4
Vraag het je gezin-data
"Wanneer is oma jarig?"
Antwoord, gegrond op eigen appdata (7 modules)
"Zet melk op de lijst"
Bevestigingskaart — pas na bevestigen wordt geschreven
BevestigenAnnuleren
géén open chatbot · dicteerknop on-device
Assistent — impressie
Bron: docs/product/README.md · docs/archive/superseded/product/status-overzicht.md · de moduledocs in docs/product/modules/

Kern-surfaces gratis kern

De 8 vaste schermen die samen de altijd-gratis kern vormen — geen registry-modules, maar de ruggengraat waar alle modules op aanhaken.

Status: ✅ Live (gebouwd, bereikbaar op genoemde route) · 🟡 Gedeeltelijk (werkt, met benoemd gat) · 🔧 In uitvoering · 📋 Gepland (met fase) · 💤 Bewust uitgesteld / non-goal

Vandaag

✅ Live/vandaag (tab 1, starttab) · lib/features/today/

Doel. De dagbriefing van Tendlo: één scherm dat 's ochtends in één blik de dag samenvat en zegt wat aandacht vraagt. Zelfverbergende secties, gevoed door de andere modules — een lege sectie verdwijnt gewoon, zodat het scherm rustig blijft.

Zo werkt het nu

  • ✅ Header met begroeting + weer (Open-Meteo + geolocatie) en de dagbriefing-zin (deterministisch, optioneel door AI herschreven)
  • ✅ Nu-blok (max 3 urgente items), dagstroom per dagdeel en "Nog te doen"
  • 🟡 Gaps-band "Wat vraagt je aandacht" (diner niet gepland, taken zonder eigenaar, inbox-achterstand) — per-gap-instellingen zijn expliciete follow-up
  • 🟡 Discovery-sectie (max 3 setup-nudges) — dismiss is bewust alleen in-memory per sessie (v1)
  • ✅ Regelgebaseerde suggesties (opzegdeadlines, vervallend onderhoud), familiestrook, Klaar-bak, quote van de dag en invite-prompt

Waar het naartoe moet

  • 📋 Briefing + gaps samenvoegen tot één kaart (akkoord 2026-07-06, Golf 2)
  • 📋 "Wie doet wat vandaag"-groepering per lid (Golf 1-infra)
  • 📋 Generiek nudge-component + swipe-dismiss (Golf 1)
  • 📋 Tech-debt: van module-fan-out naar base-primitive-queries (M3+)
Bron: docs/product/modules/vandaag.md

Taken

✅ Live/taken (tab 2) · lib/features/tasks/

Doel. De gezamenlijke takenlijst van het huishouden: taken per categorie, met deadline, toewijzing aan een gezinslid en herhaling. Een van de drie kern-primitives (naast Agenda en Lijstjes) waar andere modules op bouwen.

Zo werkt het nu

  • ✅ Takenlijst met categorieën, afvinken en een aparte Afgerond-sectie
  • ✅ Quick add (1-tap-invoer met default-categorie) en huishoud-sjablonen
  • ✅ Detail-pane: tik = lezen, bewerken = expliciete actie (UX-principe 2026-07-06)
  • ✅ Toewijzing aan gezinsleden — hertoewijzing triggert reminder-resync op het toestel van de nieuwe eigenaar
  • ✅ Herhaling: deadline rolt door bij afvinken; reminders met actieknoppen op de melding

Waar het naartoe moet

  • 📋 Taakverdeling-inzicht (wie doet hoeveel) — akkoord 2026-07-06, Golf 1/2
  • 💤 Subtaken / checklist per taak — bewust later (triage-item B12)
  • 📋 Rijke taak-container (comments/foto/locatie) — backlog
Bron: docs/product/modules/taken.md

Agenda

✅ Live/agenda (agenda-knop in de AppBar + drawer) · lib/features/agenda/

Doel. Eén samengevoegde tijdlijn voor het hele huishouden: eigen afspraken, alles wat modules bijdragen (verjaardagen, sport, schoolvakanties, …) en — na expliciete koppeling — de agenda van het toestel, in één per dag gegroepeerde lijst over het komende jaar.

Zo werkt het nu

  • ✅ Geünificeerde lijst-agenda (12 maanden) met module-accent-iconen, avatars en herhaal-marker
  • ✅ Eigen afspraken met herhaling (calendar_events-primitive), quick-chips en lid-picker
  • ✅ Module-injecties van 10 modules met eigen icoon/accent/detailroute
  • ✅ Device-agenda read-only (permissie pas bij koppelen); conflictdetectie bij overlap
  • ✅ AI-scan in de afspraak-sheet en een dagelijkse digest-melding (afspraken + taken + verjaardagen)

Waar het naartoe moet

  • 📋 AI vrije-tekst-invoer ("dinsdag 14u tandarts") — Golf 1
  • 📋 Twee-weg Google/Apple-agenda-sync — M3+
  • 💤 Week-/maandweergave en reistijd-herinnering — bewust later
Bron: docs/product/modules/agenda.md

Lijstjes & Boodschappen

✅ Live/lijstjes, /lijstjes/:id · lib/features/lists/

Doel. Gedeelde checklists voor het huishouden op de lijst-primitive. De boodschappenlijst is de ingebouwde standaardlijst (altijd gepind); daarnaast vrije, gekleurde lijsten. De registry-module Bewaarlijsten is hetzelfde scherm onder een andere route — er is bewust maar één lijstsysteem.

Zo werkt het nu

  • ✅ Lijstenoverzicht + lijst-detail met afvinken
  • ✅ Slimme invoer-parser: "2x melk" wordt hoeveelheid + product — zonder AI
  • ✅ AI-splitsing van een dump (heel boodschappenbriefje → losse regels) en AI-scan (foto/PDF)
  • ✅ Inflow uit Maaltijden (ingrediënten met dedupe) en Voorraad (lage voorraad → één tik naar de lijst)

Waar het naartoe moet

  • 📋 Favorieten / vaste producten — Golf 2
  • 📋 AI schap-classificatie (Plus) en afvinken → voorraad ophogen
  • 💤 Schapsortering en real-time presence — geparkeerd
Bron: docs/product/modules/lijstjes-boodschappen.md

Inbox & capture

✅ Live/inbox + capture-FAB midden op de tabbalk · lib/features/inbox/

Doel. Het vangnet van Tendlo: alles wat je snel wilt vastleggen (getypt, gedicteerd of van buiten de app gedeeld) landt hier en wordt later getriageerd naar de juiste module. Handmatige invoer is de #1 klacht in deze markt; capture is daarom een van de drie doorsnijdende pijlers.

Zo werkt het nu

  • ✅ Bel-knop met ongelezen-badge op elke tab; capture-FAB met typen of dicteren (on-device spraak)
  • ✅ Duidelijke types springen direct door: Taak → Taken, Maaltijd → Boodschappen, Afspraak → agenda-sheet
  • ✅ "Herken automatisch" (AI): kiest een module en opent diens add-sheet voorgevuld
  • ✅ Share-sheet-intake (tekst/URL/afbeelding/PDF) — Android via SEND-intents, iOS via een geregistreerd ShareExtension-target
  • ✅ Triage met één actie naar taak / agenda / boodschappen / bewaarlijst / voorraad; AI-categorisatie altijd expliciet te bevestigen

Waar het naartoe moet

  • 📋 Batch-triage en proactieve AI-categorisatie in batch — Golf 1/2
  • 💤 Duplicaat-detectie — bewust later
  • 💤 E-mail/WhatsApp-ingestie — geparkeerd, pas ná bewezen foto/PDF-capture (M3+)
Bron: docs/product/modules/inbox-capture.md

Assistent

✅ Live/assistent (tab 4) · lib/features/assistant/

Doel. Een gegronde vraag-en-antwoord-laag over je eigen appdata — nadrukkelijk géén open chatbot. Een router-stap classificeert elke vraag naar een ondersteunde module + actie en weigert alles daarbuiten; de assistent muteert nooit zelfstandig data. AI-antwoorden zelf zijn Plus-gated.

Zo werkt het nu

  • ✅ Twee-staps router over 7 modules: verjaardagen, sportkalender, agenda, taken, boodschappen, maaltijden, voorraad
  • ✅ Create-voorstellen worden een bevestigingskaart — nooit een directe write
  • ✅ Deterministische redirects naar de juiste sheet bij afgewezen vragen; dicteerknop (on-device)
  • 🟡 Voorbeeld-chips: de garantie-voorbeeldprompt valt buiten de 7 ondersteunde modules en eindigt in een weigering (benoemd gat)

Waar het naartoe moet

  • 📋 Owner-volgorde (2026-07-06): meer modules → meer create-acties → multi-turn-gesprekken (Golf 2+)
  • 💤 Non-goal (permanent): géén open AI-chatbot (owner-besluit 2026-06-19)
Bron: docs/product/modules/assistent.md

Instellingen & beheer

✅ Live/instellingen + /modules-beheren, /meldingen, /beveiliging, /backup, /privacy, /sync-status, /gezin-beheren

Doel. De beheerlaag van Tendlo: profiel en gezinsleden, modules aan/uit, meldingen, beveiliging, back-up, privacy en sync. Het instellingen-scherm is zelf declaratief/injectable: modules dragen hun eigen instellingen-secties bij via de registry.

Zo werkt het nu

  • ✅ Profiel + ledenbeheer (admin-only; rolmodel: ouder = beheerder, kind/extern niet)
  • ✅ Thema + taal (nl/en/de) — taal wisselen verandert nooit data/AI-gedrag
  • ✅ Modules beheren: per-module aan/uit is sinds rechten fase 3 persoonlijk per lid (gezinsset als startpunt voor nieuwe/keuzeloze leden; beheerder-blokkade alleen voor kind/extern), gepresenteerd als inklapbare lijst per domein met per rij toggle + instellingen-icoon. Per-module notificatie-schema's (meerdere tijden per dag) blijven een "planned extension"
  • ✅ Meldingen: globale switch, stille-uren-venster, per module toggle + voorlooptijd — sinds fase 3 persoonlijk per lid (gezinswaarde als default); alle notificaties lokaal
  • ✅ Beveiliging (app-lock PIN/biometrie), back-up (gescopede JSON-export/restore), sync-status en gezin beheren
  • 🟡 Privacy: AVG-uitleg, analytics-consent, lokale wipe — server-side accountverwijdering ontbreekt nog (M1)
  • 🟡 Tendlo Plus-upsell: placeholder-prijzen, trial-CTA verborgen, geen aankoopflow (M1/"B5")

Waar het naartoe moet

  • 📋 RevenueCat + paywall + 14-daagse trial — M1; daarna gaat Plus-enforcement aan
  • 📋 Server-side accountverwijdering — M1 (AVG-blokker)
  • ✅ Rechten fase 3 (live 2026-07-12): privé-tenzij-gezinsinfra deel-defaults, deelmodus "alleen bekijken", verwijderen alleen-eigenaar, module-activatie + meldingen persoonlijk per lid, een gesyncte favorietenbalk en in-app aankondigingen
  • 💤 SQLCipher-DB-encryptie — geparkeerd (lage ROI naast iOS Data Protection)
Bron: docs/product/modules/instellingen-en-beheer.md

Onboarding

✅ Live/welkom · lib/features/onboarding/

Doel. De eerste-startervaring: in vier korte stappen van installatie naar een werkende, gepersonaliseerde app — zonder dat een account nodig is. Cloud-sync en gezin-delen zijn opt-in en komen pas later (via login).

Zo werkt het nu

  • ✅ 4-stappen-flow: Welkom (brand-hero) → naam → gezin → modulekeuze
  • ✅ Gezin is opt-in, solo is de default (owner-besluit 2026-06-16)
  • ✅ Modulekeuze per module, met "Populair"-voorselectie
  • ✅ Invite-accept tijdens onboarding; bij eerste cloud-login worden lokale data geadopteerd
  • 📋 14-daagse Plus-trial in onboarding — spec 2026-06-17, wacht op RevenueCat-wiring (M1)

Waar het naartoe moet

  • 📋 Paywall/trial-stap (B5/RevenueCat) — M1
  • 📋 Consent-stap (analytics/AI-disclosure) — M2
  • Paywall hoort pas ná het "family moment" (tweede lid erbij), niet vóór de eerste waarde-ervaring
Bron: docs/product/modules/onboarding.md
Bron: docs/product/modules/ — vandaag.md · taken.md · agenda.md · lijstjes-boodschappen.md · inbox-capture.md · assistent.md · instellingen-en-beheer.md · onboarding.md

Domein Gezin

✅ 5/5 modules live

Sport, school, verjaardagen, co-ouderschap en gezinsafspraken — de NL/EU-gezinsdiepte die Tendlo onderscheidt van internationale gezinsapps.

Status: ✅ Live (gebouwd, bereikbaar op genoemde route) · 🟡 Gedeeltelijk (werkt, met benoemd gat) · 🔧 In uitvoering · 📋 Gepland (met fase) · 💤 Bewust uitgesteld / non-goal

Sportkalender

✅ LivePlus/module/sportkalender

Doel. Alle trainingen en wedstrijden van de (sportende) gezinsleden op één plek, per team of individuele sport, zodat niemand meer hoeft te zoeken in clubapps of groepsapps. De owner-spec (2026-06-18) is de bron-van-waarheid voor deze module.

Zo werkt het nu

  • ✅ Teams & individuele sport; trainingen/wedstrijden met thuis/uit, locatie en herhaling (wekelijks/tweewekelijks)
  • ✅ Afgelasting (doorgestreept, te heractiveren) en AI-scan van een wedstrijdschema (foto/PDF → voorgevulde events)
  • 🟡 iCal-import per team — handmatige actie per keer; automatische periodieke sync ontbreekt nog (📋 Golf 3)
  • ✅ Reminders, agenda-injectie en gegronde assistent-vragen (één van de 7 modules)

Waar het naartoe moet

  • 📋 Golf 3: automatische periodieke iCal-sync, vervoer/carpool-afspraak per wedstrijd, kortere invoer, AI teampagina/foto → team + wedstrijden in één keer
Bron: docs/product/modules/sportkalender.md

Schoolvakanties

✅ LiveFree/module/schoolvakanties

Doel. Schoolvakanties, feestdagen en studiedagen per schooljaar in beeld, zonder handmatig overtypen: de officiële rijksoverheid-vakantiedata per regio (noord/midden/zuid) zit gebundeld in de app.

Zo werkt het nu

  • ✅ Periodes per schooljaar, handmatig aan te vullen/bewerken
  • ✅ Rijksoverheid-dataset-import: schooljaren 2024-2025 t/m 2029-2030, per regio
  • ✅ NL-feestdagen (berekend), AI-scan van een schoolbrief en agenda-spiegel (blauwe hele-dag-band)

Waar het naartoe moet

  • 📋 Golf 3: automatisch aanbod van het nieuwe schooljaar, regio per kind, koppeling met co-ouderschap (ná het herhaalschema daar), AI schoolbrief → studiedag, leden-picker "wie is vrij"
Bron: docs/product/modules/schoolvakanties.md

Verjaardagen

✅ LiveFree/module/verjaardagen

Doel. Nooit meer een verjaardag, trouwdag of jubileum vergeten: jaarlijks terugkerende gebeurtenissen met automatische leeftijdsberekening en een melding op de dag zelf (nooit vooraf, conform de owner-spec van 2026-06-18).

Zo werkt het nu

  • ✅ Jaarlijkse gebeurtenissen (verjaardag, trouwdag, jubileum, start bedrijf, anders); jaartal optioneel, leeftijd en countdown automatisch
  • ✅ Reminders op de dag zelf, taart-icoon in de agenda en vermelding in de dagelijkse digest
  • ✅ Delen per item — Verjaardagen was de pilot-module van rechten-fase 2.1 ("gedeeld met specifieke leden", afgedwongen in DAO + RLS + sync-stream)
  • ✅ Gegronde assistent-vragen ("Wanneer is oma jarig?")

Waar het naartoe moet

  • 📋 Golf 3: koppelen aan een gezinslid, cadeau-idee/wishlist per persoon, automatische taak "cadeau kopen" X dagen vooraf, AI kalenderfoto → meerdere verjaardagen. 💤 Mijlpaal-highlight bewust doorgeschoven.
Bron: docs/product/modules/verjaardagen.md

Co-ouderschap

✅ LivePlus/module/coouderschap

Doel. Voor gezinnen met gescheiden ouders: in één oogopslag zien waar de kinderen wanneer zijn ("even weken bij mij, oneven bij papa"). Concurrerende gezinsapps missen dit vrijwel allemaal.

Zo werkt het nu

  • 🟡 Periodes "wie is wanneer waar" — benoemd gat: geen herhaalschema; een vast twee-wekelijks patroon moet nu periode voor periode handmatig worden ingevoerd (📋 Golf 3)
  • ✅ Lopend/komend-status, reminders + agenda-spiegel (indigo band) en Vandaag-integratie (dagstroom + familiestrook)

Waar het naartoe moet

  • 📋 Golf 3, éérst: het herhalend schema — het grootste gemis én de hardste afhankelijkheid: het blokkeert drie andere items (schoolvakantie-koppeling, wissel-melding, AI-schema-invoer). Daarnaast: gezinslid-picker en overdracht-checklist per wissel.
Bron: docs/product/modules/coouderschap.md

Gezinsafspraken

✅ LivePlus/module/gezinsafspraken (+ klusjes, corvee, rubriek/:rubriek)

Doel. "Duidelijke gezinsafspraken en klusjes op één plek. Kinderen pakken zelf op, ouders houden overzicht." Ouders leggen vast wat er geldt (zakgeld, kleedgeld, huisregels, vakantie/rapport) en zetten klusjes uit met een beloning; kinderen nemen klusjes aan op hun eigen toestel, ouders keuren goed en betalen handmatig uit. 🔧 OpenSpec-change op 66/67 taken (de enige open taak is bewust uitgesteld).

Zo werkt het nu

  • ✅ Hub met rubriek-tegels; klusjes-taakbord met statussen Open → Aangenomen → Klaar → Goedgekeurd → Uitbetaald
  • ✅ Eerlijke rotatie (24 uur voorrang voor wie vorige keer niet deed), samen-doen met beloning-verdeling en corvee-roulatie (onbetaald)
  • ✅ Zakgeld-ledger & saldo per kind (handmatig uitbetalen), kleedgeld-bonnen met AI-herkenning en wenslijst per kind
  • ✅ Geld-guard server-side: beloning, goedkeuren en uitbetalen zijn admin-only (Postgres-migratie 0040/0041)
  • 🟡 Bord-privacy voor siblings — masking is in v1 client-side; server-side afdwingen is bewust v1.1

Waar het naartoe moet

  • 💤 v1.1 (bewust uitgesteld, besluit 2026-07-10): wenslijst → spaardoel-conversie, server-side bord-privacy, push tussen toestellen, automatische zakgeld-bijschrijving
Bron: docs/product/modules/gezinsafspraken.md
Bron: docs/product/modules/ — sportkalender.md · schoolvakanties.md · verjaardagen.md · coouderschap.md · gezinsafspraken.md

Domein Planning

✅ 5/5 modules live

Afval, vakanties, beweging en eten: de plannende modules, met de directe lijn recept → maaltijd → boodschappenlijst als spil.

Status: ✅ Live (gebouwd, bereikbaar op genoemde route) · 🟡 Gedeeltelijk (werkt, met benoemd gat) · 🔧 In uitvoering · 📋 Gepland (met fase) · 💤 Bewust uitgesteld / non-goal

Afvalkalender

✅ LiveFree/module/afvalkalender

Doel. "Nooit een container missen, met minimale invoer": ophaalregels per afvalsoort met de volgende ophaaldag bovenaan, een herinnering vooraf en een "buitenzetten"-rij op Vandaag. Typisch NL-gemak (gemeentelijke .ics-kalenders).

Zo werkt het nu

  • ✅ Ophaalregels per afvalsoort (GFT, papier, rest, …) met herhaling en berekende volgende beurt
  • ✅ .ics-import vanaf bestand én URL (eenmalige fetch); vakantiepauze + skip van één beurt
  • ✅ Reminders + agenda-spiegel; pauze/demping op één toestel werkt door in de reminders van andere toestellen
  • ✅ "Buitenzetten" op Vandaag (ophaalbeurt van vandaag/morgen in de dagstroom)

Waar het naartoe moet

  • 📋 Golf 4: gemeente-URL koppelen met automatische updates, notificatie de avond ervoor, AI postcode → kalender-suggestie en AI foto van de papieren kalender → hele reeks
Bron: docs/product/modules/afvalkalender.md

Vakantieplanning

✅ LivePlus/module/vakantieplanning

Doel. Geboekte reizen én vakantie-ideeën op één plek, met per vakantie een dagplanning, ideeënlijst en voorbereidingstaken — zodat de aanloop naar een reis niet in losse notities en groepsapps versnippert.

Zo werkt het nu

  • ✅ Vakanties in tabs (gepland / ideeën / …); detail met dagplanning, ideeën en voorbereidingstaken
  • ✅ Reminders + agenda-spiegel; vakantieperiode als band met vliegtuig-icoon in de agenda

Waar het naartoe moet

  • 📋 Golf 4: checklist-sjablonen per reistype, voorbereidings-badge, idee → boeking in één tap, budget/kosten per vakantie, AI vrije tekst → vakantie + checklist
Bron: docs/product/modules/vakantieplanning.md

Beweging

✅ LivePlus/module/beweging

Doel. Eigen sport- en beweegafspraken plannen en wekelijkse consistentie zichtbaar maken: weeksessies met voortgang en een streak die motiveert om het ritme vast te houden. (Voor sportende kinderen met teams is er de aparte Sportkalender.)

Zo werkt het nu

  • ✅ Weeksessies met zichtbare voortgang van de lopende week en een streak (aaneengesloten weken)
  • ✅ Herhaling, reminders + agenda-spiegel en agenda-injectie (via die weg ook op Vandaag)

Waar het naartoe moet

  • 📋 Golf 4: vast wekelijks sessie-sjabloon, weekdoel (X sessies per week), gemiste sessie herplannen, AI vrije tekst → sessie
Bron: docs/product/modules/beweging.md

Maaltijden

✅ LiveFree/module/maaltijden

Doel. Het eetschema van het gezin plannen: wie eet wat en wanneer, met een directe lijn van recept naar planning naar boodschappenlijst. "Wat eten we vanavond?" is één van de meest gestelde gezinsvragen — de diner-gap op Vandaag signaleert het actief.

Zo werkt het nu

  • ✅ Planbord (rollend 14 dagen) met maaltijdtypen ontbijt / lunch / tussendoor / diner
  • ✅ Maaltijd-slot = agenda-event (op de calendar_events-primitive), met conflictdetectie bij dubbele boeking
  • ✅ Recept-kiezer in de add-sheet; ingrediënten gaan gededupliceerd naar de boodschappenlijst
  • ✅ Diner-gap op Vandaag en gegronde assistent-vragen

Waar het naartoe moet

  • 📋 Golf 4: slots slepen/kopiëren + "herhaal vorige week", AI meerdere slots in één keer + weekmenu genereren (Plus). 💤 Portie-schaling bewust doorgeschoven.
Bron: docs/product/modules/maaltijden.md

Recepten

✅ LivePlus/module/recepten

Doel. Een herbruikbare receptenbibliotheek die honderden recepten aankan en doorschakelt naar plannen en boodschappen: zoeken en verzamelingen doen het werk, met alleen de naam als verplicht veld. Recepten-v2 is geland op 2026-07-10 (25/25 taken).

Zo werkt het nu

  • ✅ Zoeken op naam + ingrediënten + tags; vaste verzamelingen (Alles · Familierecepten · Favorieten · Recent toegevoegd)
  • ✅ Tag-groepen (keuken, gerecht, moment, dieet), familierecept-markering en cover-foto's
  • ✅ Kookmodus (fullscreen stap-voor-stap, scherm-aan) en "Inplannen" vanaf detail met dubbel-plan-detectie
  • ✅ AI foto-import én AI URL-import (webpagina → recept); deelmodel per recept
  • 🟡 Favoriet-hart per lid — werkt, maar device-lokaal: favorieten roamen niet tussen toestellen (post-testfase: join-tabel)

Waar het naartoe moet

  • 📋 Golf 4: AI social-media-screenshot → recept. 📋 Post-testfase: favorieten server-side. 💤 RecipeCategory-enum vs gerecht-tags: data-remap is een aparte owner-beslissing.
Bron: docs/product/modules/recepten.md
Bron: docs/product/modules/ — afvalkalender.md · vakantieplanning.md · beweging.md · maaltijden.md · recepten.md

Domein Financieel

✅ 9/9 modules livesensitive

Negen geldmodules rond de Vaste kosten-hub. Het domein is gemarkeerd als gevoelig: records zijn standaard privé per gebruiker, en AI werkt hier alleen na een aparte sensitive-domein-opt-in bovenop de AI-masterswitch. Plus-handhaving staat in de testfase uit; AI is wél al Plus-gated.

Status: ✅ Live (gebouwd, bereikbaar op genoemde route) · 🟡 Gedeeltelijk (werkt, met benoemd gat) · 🔧 In uitvoering · 📋 Gepland (met fase) · 💤 Bewust uitgesteld / non-goal

Vaste kosten (hub)

✅ LivePlus/module/vaste-kosten

Doel. Eén hub die alle vaste lasten van het huishouden bij elkaar brengt: handmatige posten plus wat er al in de andere geldmodules staat (abonnementen, verzekeringen, leningen, spaardoelen, rekeningkosten). De hub toont maand- en jaartotalen, grafieken en wat er van het inkomen overblijft ("besteedbaar").

Zo werkt het nu

  • ✅ Hub-aggregatie met koppel-rijen (live uit de module-repos; niet gematerialiseerd, niet puur virtueel — besluit 2026-07-07)
  • ✅ Handmatige posten met vrije categorie en frequentie (maand/kwartaal/jaar); twee-weg aanmaken vanuit de hub met fuzzy-check tegen dubbelen
  • ✅ Afwijking-signalering bij bedragswijziging (chip met accepteer-actie)
  • ✅ Grafieken (F5): categorie-verdeling, cashflow binnen de maand en 12-maands piekkalender
  • ✅ Besteedbaar-kaart (inkomsten − gereserveerde vaste kosten) en spaardoel-maandinleg als reservering

Waar het naartoe moet

  • 📋 Golf 6: ontversnippering — Verzekeringen en Abonnementen als filterbare sub-secties ín de hub (⚠️ data-remap vergt apart owner-akkoord); jaarlijkse-lastenkalender, opzeg-alert en prijsstijging-tracker
Bron: docs/product/modules/vaste-kosten.md

Inkomsten

✅ LivePlus/module/inkomsten

Doel. Terugkerende inkomsten (salaris, toeslagen, verhuur, …) vastleggen per maand en per jaar, zodat de Vaste kosten-hub kan laten zien wat er na de vaste lasten overblijft ("besteedbaar"). Gebouwd in wave F3 van het financieel-herontwerp.

Zo werkt het nu

  • ✅ Terugkerende inkomsten met maand-/jaarbedragen en vrije categorieën (geen vaste enum)
  • ✅ Besteedbaar-berekening, weergegeven als kaart in de Vaste kosten-hub
  • 💤 AI-scan / reminders — bewust niet aanwezig; de module is smal gehouden

Waar het naartoe moet

  • 📋 Promotie van Besteedbaar tot eigen volwaardige weergave/module kan later (F3-notitie)
Bron: docs/product/modules/inkomsten.md

Spaardoelen

✅ LivePlus/module/spaardoelen

Doel. Sparen naar concrete doelen (vakantie, buffer, aankoop) met zichtbare voortgang. Het saldo is nooit een los ingetypt getal maar wordt afgeleid uit een ledger van bijdragen. Gebouwd en afgerond als wave F6 (2026-07-09).

Zo werkt het nu

  • ✅ Doelen met doelbedrag, optionele streefdatum, startbedrag, kleur en gekoppelde bankrekening
  • ✅ Ledger-model: saldo = som van bijdragen (+ startbedrag); opname = negatieve bijdrage
  • ✅ Projectie "op schema" (verwachte einddatum uit maandinleg) en maandinleg als hub-reservering
  • ✅ Delen per doel (default privé, deelbaar via deelmodel fase 2)

Waar het naartoe moet

  • 💤 v1.1 (bewust): automatische maandinleg-boekingen, bank-integratie, voortgangsgrafiek; wenslijst→spaardoel-conversie vanuit Gezinsafspraken
Bron: docs/product/modules/spaardoelen.md

Verzekeringen

✅ LivePlus/module/verzekeringen

Doel. Alle polissen van het huishouden op één plek: premie, dekking en vooral de opzegdeadline — zodat je nooit stilzwijgend een jaar vastzit. Een polis-pdf of -brief kan met AI worden gescand in plaats van overgetypt.

Zo werkt het nu

  • ✅ Polissenlijst met maandpremie en afgeleide "opzeggen voor"-datum; premie-frequentie maand/kwartaal/jaar
  • ✅ AI-polis-scan met fuzzy match tegen bestaande polissen en premievergelijking bij een gewijzigde premie
  • ✅ Opzegtermijn-reminders en Vandaag-suggesties (opzegdeadline binnen de horizon, standaard 35 dagen)
  • ✅ Bijlagen (polis-pdf) en capture-landing vanuit quick-capture/share-sheet

Waar het naartoe moet

  • 📋 Golf 6: sub-sectie in de Vaste kosten-hub (⚠️ data-remap vergt apart owner-akkoord); jaarlijkse-lastenkalender en prijsstijging-tracker op hub-niveau
Bron: docs/product/modules/verzekeringen.md

Garanties

✅ LivePlus/module/garanties

Doel. Aankopen met garantieperiode bijhouden, zodat je bij een defect meteen weet of er nog garantie op zit en waar de bon is. De bon of het garantiebewijs kan met AI worden gescand.

Zo werkt het nu

  • ✅ Garantielijst gesorteerd op verloop met statusbadge (geldig / verloopt bijna / verlopen)
  • ✅ AI-bon-scan (product, aankoopdatum, termijn voorgevuld), verloop-reminders en bijlagen
  • 🟡 Assistent kent garanties niet: de voorbeeldprompt over de wasmachine-garantie eindigt in een weigering (benoemd gat)

Waar het naartoe moet

  • 📋 Golf 6: bon-foto als éérste stap van de invoerflow en een AI-voorstel voor de garantietermijn; assistent-dekking voor garanties is nog niet ingepland
Bron: docs/product/modules/garanties.md

Abonnementen

✅ LivePlus/module/abonnementen

Doel. Overzicht van alle lopende abonnementen (streaming, sport, software, …) met wat ze per maand kosten, wanneer de incasso loopt en vóór wanneer je moet opzeggen. Totalen worden altijd afgeleid en nooit opgeslagen.

Zo werkt het nu

  • ✅ Abonnementen per categorie met subtotalen en maandtotaal (afgeleid)
  • ✅ Incasso- en opzegdatums (verlengdatum + opzegtermijn → afgeleide "opzeggen voor"-datum)
  • ✅ Fuzzy-koppeling met de Vaste kosten-hub (geen stille dubbelen), opzeg-reminders en Vandaag-opzegsuggesties
  • ✅ Vrije categorie + bankrekening per abonnement; bijlagen (contract/bevestigingsmail)

Waar het naartoe moet

  • 📋 Golf 6: sub-sectie in de Vaste kosten-hub (⚠️ data-remap vergt apart owner-akkoord); opzeg-alert-verdieping en prijsstijging-tracker
Bron: docs/product/modules/abonnementen.md

Wagenpark

✅ LivePlus/module/wagenpark

Doel. De voertuigen van het huishouden met alles wat eraan hangt: APK, banden, servicebeurten en documenten — met een urgentiebadge per item zodat je ziet wat eerst moet. Daarnaast een indicatieve afschrijvingsschatting per voertuig. Verdiept in wave F4.

Zo werkt het nu

  • ✅ Voertuigen met onderhouds-/documentitems en urgentiebadge (afgeleid uit de vervaldatum)
  • ✅ APK- en servicedatum op het voertuig, afschrijvingsschatting en notities
  • ✅ Reminders voor vervallende voertuig-items en bijlagen (kentekenbewijs, factuur)
  • 💤 AI-scan — geen eigen extractor; kenteken→specs is een later idee

Waar het naartoe moet

  • 📋 Golf 6: koppeling voertuig ↔ verzekering/onderhoud voor kosten per auto per jaar; quick-add-chips en AI kenteken→specs
Bron: docs/product/modules/wagenpark.md

Leningen & hypotheek

✅ LivePlus/module/leningen

Doel. Leningen en de hypotheek op één plek: openstaand saldo, rente en maandlast, met bovenaan het totaal aan schuld en totale maandlast. Een jaaroverzicht of leningblad kan met AI worden gescand in plaats van overgetypt.

Zo werkt het nu

  • ✅ Leninglijst met saldo/rente/maandlast per type; totaaloverzicht in de header (afgeleid)
  • ✅ AI-scan van lening-/hypotheekoverzichten (geldverstrekker, bedrag, rente, looptijd, maandlast, einddatum voorgevuld — F4)
  • ✅ Reminders, vrije categorie + bankrekening, bijlagen en capture-landing

Waar het naartoe moet

  • 📋 Golf 6: aflossingsschema met grafiek (aflos-simulator later), renteherziening-alert en verdieping van de hub-koppeling
Bron: docs/product/modules/leningen.md

Bankrekeningen

✅ LivePlus/module/bankrekeningen

Doel. Een bewust smalle naslagmodule: welke rekeningen en passen heeft het huishouden, zonder saldi en zonder volledige rekeningnummers. Andere geldmodules verwijzen ernaar ("wordt betaald van rekening …"). Er wordt nooit meer dan de laatste 4 cijfers opgeslagen of getoond.

Zo werkt het nu

  • ✅ Rekeningenlijst met gemaskeerd IBAN (NL•• •••• •••• <laatste 4>) en passen per rekening
  • ✅ Maandelijkse rekeningkosten verschijnen automatisch als post in de Vaste kosten-hub
  • 💤 AI-scan, reminders, agenda/Vandaag — bewust afwezig: naslagkaart, geen actiemodule
  • 💤 Foto-scan van bankpas/IBAN — permanente non-goal (anti-fraude, besluit 2026-07-06)

Waar het naartoe moet

  • 📋 Golf 6: "+ pas" direct op de rekening-kaart, vervaldatum-alert voor passen, eigenaar ↔ gezinslid-koppeling. Open: veilige identificatie van een gezamenlijke rekening (laatste 4 cijfers + persoon).
Bron: docs/product/modules/bankrekeningen.md
Bron: docs/product/modules/ — vaste-kosten.md · inkomsten.md · spaardoelen.md · verzekeringen.md · garanties.md · abonnementen.md · wagenpark.md · leningen.md · bankrekeningen.md

Domein Gezondheid

✅ 4/4 modules livesensitive · strikt privé

Routines, gewicht, medicatie en cyclus. Het gezondheidsdomein is sensitive én kent bewust géén deelmodel: alles is strikt privé per gebruiker (owner-besluit 2026-07-08). Pillen & vitamines en Cyclus zitten als enige twee achter een optionele gezondheids-toegangscode.

Status: ✅ Live (gebouwd, bereikbaar op genoemde route) · 🟡 Gedeeltelijk (werkt, met benoemd gat) · 🔧 In uitvoering · 📋 Gepland (met fase) · 💤 Bewust uitgesteld / non-goal

Routines

✅ LivePlus/module/routines

Doel. Ochtend- en avondroutines vastleggen en dagelijks afvinken, met zicht op de dagvoortgang. Voor wie vaste gewoontes wil volhouden zonder een aparte habit-tracker-app. Routines zijn van de gebruiker zelf, niet van het gezin.

Zo werkt het nu

  • ✅ Routinelijst met ochtend-/avondsecties, afvinken per dag en dagvoortgang
  • ✅ Cadans/herhaling, reminders en per-module notificatie-toggle + voorlooptijd
  • ✅ Privacy: bewust geen deelmodel; geen agenda-injectie en geen Vandaag-sectie

Waar het naartoe moet

  • 📋 Golf 5: streaks over routines heen. 💤 Delen met gezinsleden: non-goal zolang het gezondheidsdomein strikt privé is.
Bron: docs/product/modules/routines.md

Gewicht

✅ LivePlus/module/gewicht

Doel. Gewichtsmetingen bijhouden en het verloop richting een doelgewicht zichtbaar maken — handmatig loggen in twee tikken, of automatisch via een opt-in koppeling met Apple Health. Strikt persoonlijk: gewicht is nooit zichtbaar voor andere gezinsleden.

Zo werkt het nu

  • ✅ Metingen met delta en verloopgrafiek; doelgewicht; quick action "+1 meting" in de shell-balk
  • ✅ Apple Health-import: opt-in, default uit, alleen lezen — schrijven naar Health expliciet niet
  • ✅ Privacy: bewust geen deelmodel

Waar het naartoe moet

  • 📋 Golf 5: streaks, notificatie-actie "weeg vandaag", trendlijn bij het doel, AI weegschaalfoto → invoer (Plus + sensitive-opt-in)
Bron: docs/product/modules/gewicht.md

Pillen & vitamines

✅ LivePlus/module/pillen-vitamines (achter optionele toegangscode)

Doel. Medicijnen, vitamines en de anticonceptiepil op tijd innemen: "op het juiste moment een zacht seintje", zonder medisch dossier-gevoel. Geland vanuit de OpenSpec-wachtrij van 2026-07-10. Inname-data is nooit zichtbaar voor andere gezinsleden.

Zo werkt het nu

  • ✅ Dagoverzicht (wat moet vandaag nog ingenomen) en ritmes incl. pil-patronen 21+7, 28 en continu
  • ✅ Innameledger: elke inname of overslaan wordt gelogd
  • ✅ Reminders met notificatie-acties (Ingenomen / Uitstellen / Overslaan) direct vanaf de melding, ook na koude start
  • ✅ Rijen op Vandaag; optionele toegangscode (gedeeld met Cyclus)

Waar het naartoe moet

  • 💤 v1.1: samengevoegde meldingen + snooze-duurkeuze, reisstand/tijdzones, doktersbezoek-export, dagelijkse log-herinnering. 📋 Golf 5: mee in het gezondheidscluster.
Bron: docs/product/modules/pillen-vitamines.md

Cyclus

✅ LivePlus/module/cyclus (achter optionele toegangscode)

Doel. Cyclus, klachten en stemming bijhouden en patronen herkennen — óók zonder menstruatie als houvast (spiraal, tiener), met een uitlegmodus op tienerniveau. De meest privacygevoelige module van de app en bewust een eiland: geen meldingen, geen Vandaag-integratie, nooit deelbaar.

Zo werkt het nu

  • ✅ Maandkalender met bloedings-/klacht-markers en pil-stopweek-weergave (gekoppeld aan Pillen & vitamines)
  • ✅ Dag-logsheet met chips (bloeding, klachten, stemming) en setup met 4 modi + uitlegmodus
  • ✅ Patroonherkenning: client-side, niet-diagnostisch, deterministisch — er gaat niets naar een AI-model
  • ✅ Bewust géén reminders en géén Vandaag: cyclusdata verschijnt nergens buiten het eigen, afgeschermde scherm

Waar het naartoe moet

  • 💤 Non-goal (permanent): géén zwangerschaps- of vruchtbaarheidsfunctionaliteit. 💤 v1.1: dagelijkse log-herinnering, doktersbezoek-export.
Bron: docs/product/modules/cyclus.md
Bron: docs/product/modules/ — routines.md · gewicht.md · pillen-vitamines.md · cyclus.md

Domein Huis

✅ 1/1 module live
Status: ✅ Live (gebouwd, bereikbaar op genoemde route) · 🟡 Gedeeltelijk (werkt, met benoemd gat) · 🔧 In uitvoering · 📋 Gepland (met fase) · 💤 Bewust uitgesteld / non-goal

Onderhoud

✅ LivePlus/module/onderhoud

Doel. Periodiek onderhoud van huis, boot, auto en tuin niet vergeten: elk item heeft een interval (bv. "cv-ketel elke 24 maanden") en de app leidt daaruit af wat binnenkort of te laat is. Sinds rechten fase 3 is de deel-default privé (niet gevoelig, maar besluit H rekent huis & bezit tot privé); configureerbaar per gezin/lid via de SharePicker, met deelmodus "alleen bekijken".

Zo werkt het nu

  • ✅ Categorie-tabs (huis, boot, auto, tuin, anders) en intervallen met afgeleide status per item
  • ✅ Reminders vóór de vervaldatum; agenda-spiegel + agenda-injectie
  • ✅ Vandaag-integratie: vervallend/achterstallig onderhoud in "Nog te doen" (horizon standaard 14 dagen) en als bevestigbare suggestie
  • ✅ Bijlagen (handleiding/factuur bij het item)

Waar het naartoe moet

  • 📋 Golf 5: swipe-om-af-te-ronden, onderhoudslogboek met kosten (doorgekoppeld naar financieel), AI-scan van bon of typeplaatje → velden + intervalvoorstel
Bron: docs/product/modules/onderhoud.md
Bron: docs/product/modules/onderhoud.md

Domein Bewaarlijsten

✅ 1/1 module live
Status: ✅ Live (gebouwd, bereikbaar op genoemde route) · 🟡 Gedeeltelijk (werkt, met benoemd gat) · 🔧 In uitvoering · 📋 Gepland (met fase) · 💤 Bewust uitgesteld / non-goal

Bewaarlijsten

✅ LiveFree/module/bewaarlijsten

Doel. Vrije, gekleurde lijsten voor alles wat je wilt bewaren: cadeau-ideeën, boeken, plekken om heen te gaan, klusjes-voor-later. Eén van de vijf gratis registry-modules. Technisch geen eigen systeem maar een gezicht op de gedeelde lijst-primitive — dezelfde lijsten die ook Boodschappen aandrijft.

Zo werkt het nu

  • ✅ Gekleurde bewaarlijsten — de route wijst naar hetzelfde scherm als /lijstjes
  • ✅ Slimme invoer-parser en AI-splitsing van een tekst-dump (AI valt altijd onder Plus, ook in deze gratis module)
  • ✅ Triagedoel vanuit de inbox ("Bewaren"-captures landen zo in een lijst)
  • ✅ Deel-default sinds rechten fase 3 privé (eigen lijstjes/bewaarlijsten; configureerbaar per gezin/lid, met SharePicker en deelmodus "alleen bekijken") — de ingebouwde Boodschappen-lijst blijft heel-gezin

Waar het naartoe moet

  • 📋 Golf 5: secties/tags + slepen binnen een lijst, inflow uit andere modules, deadline/herinnering per item + archiveren, AI tekst/foto → items
Bron: docs/product/modules/bewaarlijsten.md
Bron: docs/product/modules/bewaarlijsten.md

Domein Vastgoed

✅ 1/1 module live
Status: ✅ Live (gebouwd, bereikbaar op genoemde route) · 🟡 Gedeeltelijk (werkt, met benoemd gat) · 🔧 In uitvoering · 📋 Gepland (met fase) · 💤 Bewust uitgesteld / non-goal

Vastgoed

✅ LivePlus/module/vastgoed

Doel. Voor huishoudens met een tweede woning of verhuurobject: objecten en hun boekingen (gast + periode) bijhouden, dubbele boekingen voorkomen en check-in/check-out niet missen. Het langetermijndoel is een mini-PMS (property-management-light): geen channel-manager, wel overzicht. Deel-default sinds rechten fase 3 privé (besluit H; configureerbaar per gezin/lid, met deelmodus "alleen bekijken").

Zo werkt het nu

  • ✅ Objectenlijst → detail met boekingen per gast/datum; boekingsstatussen
  • ✅ Overlap-detectie (waarschuwt bij dubbele boekingen op hetzelfde object)
  • ✅ Check-in/check-out-reminders (default 1 dag vooraf), agenda-spiegel + injectie en bijlagen per object

Waar het naartoe moet

  • 📋 Golf 5: schoonmaak-/wisseltaak na check-out, omzet en kosten per pand + jaaroverzicht, statusfilter, AI boekingsmail → voorgevulde boeking
Bron: docs/product/modules/vastgoed.md
Bron: docs/product/modules/vastgoed.md

Domein Voorraad

✅ 1/1 module live
Status: ✅ Live (gebouwd, bereikbaar op genoemde route) · 🟡 Gedeeltelijk (werkt, met benoemd gat) · 🔧 In uitvoering · 📋 Gepland (met fase) · 💤 Bewust uitgesteld / non-goal

Voorraad

✅ LivePlus/module/voorraad

Doel. Weten wat er in huis ligt — vriezer, koelkast, voorraadkast — met houdbaarheidsbewaking (THT) en een directe brug naar de boodschappenlijst zodra iets bijna op is. Een kassabon kan met AI worden gescand om items in bulk toe te voegen. Deel-default sinds rechten fase 3 privé (besluit H; configureerbaar per gezin/lid, met deelmodus "alleen bekijken").

Zo werkt het nu

  • ✅ Items per bewaarlocatie (vriezer, koelkast, voorraadkast, overig) met THT-versheidsbadge en THT-reminders
  • ✅ Aantal-steppers + swipe-verwijderen met undo; lage voorraad → één tik naar de boodschappenlijst
  • ✅ AI-kassabon-scan (productnaam, aantal, THT voorgevuld), capture-landing en inbox-triagedoel
  • ✅ Gegronde assistent-dekking (één van de 7 modules)

Waar het naartoe moet

  • 📋 Doelmodel: 1:1-extensie op list_items (herplatforming richting launch/M3+). 📋 Golf 5: boodschap afvinken → voorraad ophogen; AI kastfoto → producten.
Bron: docs/product/modules/voorraad.md
Bron: docs/product/modules/voorraad.md

Domein Welzijn

✅ 1/1 module live
Status: ✅ Live (gebouwd, bereikbaar op genoemde route) · 🟡 Gedeeltelijk (werkt, met benoemd gat) · 🔧 In uitvoering · 📋 Gepland (met fase) · 💤 Bewust uitgesteld / non-goal

Quote van de dag

✅ LivePlus/module/quote

Doel. Een kalme dagelijkse quote die past bij zelfgekozen thema's, op een zelfgekozen moment — een klein welzijnsmoment in de dagbriefing, geen social feed. Eerste (en vooralsnog enige) module in het nieuwe welzijn-domein; geland vanuit de OpenSpec-wachtrij van 2026-07-10.

Zo werkt het nu

  • ✅ Dagquote uit een gecureerde dataset van publiek-domein/parafrase-teksten — bewust géén beschermde citaten
  • ✅ Variatie-engine met anti-herhaling: "nooit twee keer dezelfde quote, nooit vijf dagen hetzelfde soort"
  • ✅ Thema's, gewichten en taal per lid; Vandaag-kaart; dagelijkse reminder; "Nog één" per dag; delen en rapporteren
  • ✅ Historie device-lokaal (bewust): getoond-historie en voorkeuren blijven op het toestel, geen sync

Waar het naartoe moet

  • 💤 v1.1: weekend-afwijkend moment, pauzeperiode, AI-poolaanvulling, sync van historie/favorieten, widget/lockscreen-weergave, voorlezen (TTS). Favorieten/archief uit het proposal-doelbeeld is nog niet in de code terug te vinden.
Bron: docs/archive/superseded/product/modules/quote.md
Bron: docs/archive/superseded/product/modules/quote.md

Spoor Business

Voor wie Tendlo is, tegen wie het concurreert en hoe het geld gaat verdienen. Alles hier is een consolidatie van intern onderzoek en owner-besluiten — met de gaten er eerlijk bij.

Doelgroep & markt

Gezinnen/huishoudens, NL/EU-eerst, met meertalig-internationaal als expliciete ambitie. Talen in de app nu: NL (default), EN, DE. De volgorde — "privacy-first NL/EU eerst" versus "breed internationaal meteen" — is een open beslissing sinds 2026-06-14. Er bestaat geen apart doelgroep-/persona-document; de doelgroep is impliciet vastgelegd in het marktonderzoek (2026-06-14).

Kansrijke segmenten (marktonderzoek 2026-06-14)

  • De "mental load"-dragende ouder ("chief household officer") — 75% van gebruikers zegt dat zo'n app frictie vermindert (studie onder 393 gezinnen, geciteerd in het onderzoek).
  • Gemengde-platform-gezinnen (één ouder Android, één iPhone) — volgens het onderzoek "de grootste onderbediende groep".
  • Privacy-bewuste consumenten in NL/DE — 94% van App Store-gebruikers weegt privacy-labels mee; 50% kiest een transparant merk zelfs bij hogere prijs (Usercentrics 2025, geciteerd).
  • Co-ouderschaps-gezinnen en gezinnen met schoolgaande kinderen — NL-schoolvakantieregio's als moat.
  • "Cozi-refugees" — gebruikers die na Cozi's paywall van mei 2024 actief alternatieven zoeken.

Eerste expansiemarkt: Duitsland (DE/AT/CH) — grootste aangrenzende markt (~97M Duitstaligen), hoogste privacy-gevoeligheid, zelfde AVG-kader. Betaalbereidheid: Nederland betaalt ~62% méér dan de VS voor app-abonnementen (Adapty 2025); het EU-VS-gat is slechts ~6% (RevenueCat 2025) → prijzen op/boven Cozi Gold zijn verantwoord. Beta-doelgroep: 5–15 testgezinnen via TestFlight / Play closed track.

Concurrentie in het kort

Prijzen en aantallen zijn de stand van de onderzoeksdatums 2026-06-14/17 en zijn daarna niet herverifieerd.

ConcurrentPrijs (intern gedocumenteerd)Interne conclusie (kern)
Cozi (incumbent, 20M+ geregistreerde users)Free (ads, 30-dagen-cap) / Gold $39/jrVertrouwensgat na de mei-2024-paywall (Trustpilot 2,1); géén data-export ("historie gegijzeld"). Les: nooit retroactief paywallen.
FamilyWall (FR/EU, 13,5M+ gezinnen geclaimd)Premium $44,99/jr per huishoudenBreedste cloud-concurrent, dichtste analoog; gratis tier "berucht te dun"; koppelt data aan advertising.
Maple (212K+ users)Maple+ ~$40/jrAI-native exemplar (e-mail-triage, routines, share-sheet-capture); cloud-verplicht, AI op familie-e-mail = privacyzorg.
TimeTree (60M users)Premium $44,99/jr, per-userPer-user-prijs wordt gehaat → Tendlo per-huishouden; geen taken/recepten/huishouden.
OurHome100% gratisBeste kids-gamification — de #1 kid-engagement-hook die Tendlo miste (intussen geadresseerd in Gezinsafspraken); breekt zonder internet.
Skylight Calendar (hardware, 1,3M gezinnen)$160–599 + Plus $79/jrKernwaarde achter dubbele paywall. Ons antwoord: kiosk-/keukenmodus op een oude tablet.
NL-spelers: Qudoo · Chup — Gezinsplanner · Klender€5,99/mnd + €99 lifetime · IAP €11,99–19,99 · volledig gratisQudoo genoemd als "directe concurrent"; Klender "zet een gratis-anker in NL".
Overkoepelende marktconclusie: local-first/offline is onbezet wit gebied — élke onderzochte concurrent vereist internet; niemand combineert local-first + AI-native + NL/EU-lokalisatie. Tendlo is functioneel al breder dan vrijwel elke concurrent (~25 modules vs. 6–12); de gaps zitten in UX-legibiliteit, engagement-hooks en GTM/trust — niet in feature-breedte.

Positionering & differentiators (gap-analyse 2026-06-16)

Twee originele differentiators zijn sindsdien bijgesteld: de "genuinely complete gratis tier" is afgezwakt door het freemium-besluit, en de BYO-AI-key is afgeschaft ten gunste van managed AI via de eigen proxy.

Verdienmodel & pricing

Geldend model: Tendlo is freemium, abonnement-only (geen lifetime, geen ads, ooit). Gratis = de dagelijkse kern + een handvol modules, volledig lokaal en met handmatige invoer; Plus = de overige modules, cloud-/gezin-sync én alle AI — ook AI binnen gratis modules. Plus wordt per huishouden verkocht (Family), met een Solo-variant. Prijzen zijn definitief bevestigd (2026-08-05) maar staan nog niet in de stores; enforcement staat in de app inmiddels wél aan.

ProductJaarMaand
Plus Family (hero; per huishouden, tot 6 leden, ~€10 p.p./jr)€59,99€7,99
Plus Solo€39,99€5,99

Prijzen incl. 21% BTW; maandprijzen bewust hoog om naar jaarlijks te sturen (jaar default geselecteerd). Trial (definitief 2026-08-05, te bouwen bij B5/RevenueCat): 14 dagen gratis op alle vier de producten, aangeboden bij onboarding én zodra een gebruiker een Plus-module/feature selecteert; bij niet accepteren blijven Plus-modules zichtbaar als disabled mét upsell. Bij Plus Family krijgt élk lid van het huishouden Plus, óók tijdens de trial. Aanmaken in App Store Connect: store-setup-handleiding. Marge-model (2026-06-17): reken op ~70% van de stickerprijs — €59,99 → ~€42 netto per Family-jaar; freemium-conversie behoudend inschatten op ~2–3% (RevenueCat 2026-benchmark).

Freemium-grens (geldend besluit 2026-06-17)

Scenario B "compleet gratis-gevoel" met 2 owner-correcties (Recepten en Sportkalender blijven Plus):

Besluitgeschiedenis freemium-grens (drie generaties)

GeneratieDatumInhoudStatus
"Gratis compleet" (≈ Scenario C)2026-06-16 (advies gap-analyse)ALLE modules gratis on-device; Plus = alléén managed AI + cloud/sync❌ Niet gekozen
"Maximaal afschermen" (≈ Scenario A)2026-06-16 (owner-keuze)Alleen de 4 kern-surfaces gratis; alle registry-modules + AI + sync = Plus❌ Een dag later herzien; leeft nog door in enkele latere docs (drift)
Scenario B met correcties2026-06-17 (owner-besluit)9 gratis (4 kern-surfaces + 5 modules); Recepten + Sportkalender expliciet Plus; overige registry-modules + AI + sync = Plus (code-telling 2026-07-12: 5 Free / 23 Plus van 28)Geldend, in code geverifieerd
⚠️ Bekende formulerings-drift: enkele recentere plandocumenten hanteren nog de strengere lezing van 2026-06-16. De code op main en het tiering-beslisstuk van 2026-06-17 zijn leidend: 9 gratis. Formele herbevestiging van de modulelijn staat nog open.

AI-verdienmodel

Geldend (owner 2026-06-19, verfijnd 2026-07-06): unlimited + fair use — Plus = alle AI inbegrepen, géén credit-teller/packs/consumable-SKU; FUP per persoon gemeten én geblokkeerd bij overmatig gebruik. Dit verving het credit-pack-model van 2026-06-18. Onderbouwing: alle AI is gebonden per-actie (geen open chat) — lichte actie ~$0,002–0,005, document ~$0,003–0,01; zelfs 1000 acties/mnd ≈ $3–10, ruim binnen €59,99/jr. Huidige technische rem: FUP 2.000.000 tokens/gebruiker/maand in de ai-proxy + globale OpenRouter-spend-cap $30/mnd.

Implementatiestatus (2026-07-12)

Merk & juridisch

Eerlijke gaten-lijst — wat is níét gedocumenteerd

  1. Marktomvang (TAM/SAM/SOM) en formele persona's — nergens gekwantificeerd.
  2. Financiële projecties (omzet, break-even, LTV/CAC, MRR-doelen) — alleen categorie-benchmarks.
  3. Go-to-market-plan (launchplan, kanalen, marketingbudget) — alleen losse ASO-tactieken en het GTM-wedge-principe.
  4. Operationele kosten (maandlasten Supabase/PowerSync/Resend/Sentry/PostHog/RevenueCat) — geen bedragen.
  5. AI-chatbots/algemene assistenten als substituut — niet als concurrent-cluster onderzocht.
  6. Support-organisatie, KPI-raamwerk, partnerships, exit-/bedrijfsdoelen — niets vastgelegd.
  7. Open strategiekeuze: NL/EU-eerst vs. breed internationaal (open sinds 2026-06-14).
Bron: docs/business/README.md · docs/business/markt-en-doelgroep.md · docs/business/concurrentie.md · docs/business/verdienmodel-en-pricing.md

Spoor Techniek

Tendlo is een mobiele gezins-/persoonlijke-assistent-app voor uitsluitend Android en iOS, gebouwd met Flutter (versie gepind op 3.44.1 in CI) en Riverpod, met Drift op SQLite als lokale database en PowerSync voor offline-first sync. De app is local-first met een runtime cloud-switch: zonder cloud-configuratie draait alles volledig lokaal; mét configuratie én login schakelt de app om naar Supabase-auth + PowerSync-sync, en worden bestaande lokale data eenmalig geadopteerd.

1. Architectuur-lagen

Flutter-app (uitsluitend iOS + Android) core/ = infrastructuur, feature-vrij · features/ = 24 feature-mappen Riverpod (state) · go_router (navigatie) · module-registry (28 modules) Eén binary; local↔cloud-switch at runtime (app_root.dart) Drift op PowerSync (lokale SQLite) Lokale modus: Drift opent zelf SQLite (schemaVersion 35) Cloud-modus: PowerSync bezit de SQLite; Drift via drift_sqlite_async Local-first pad — zonder cloud Zonder de dart-defines (SUPABASE_URL e.a.) draait alles volledig lokaal: dev-profiel, NoopSyncService, geen enkele cloud-verbinding. Dit is tegelijk de gratis-tier-ervaring. PowerSync Cloud (EU) Sync Streams editie 3 — download-scope: household_shared · user_private · shared_with_me continu, offline-first Supabase (EU, eu-west-1) Postgres + RLS · Auth (magic-link) · Storage Edge Functions (3): ai-proxy · invite-member · relocate-attachments prod: noeffngomyiglttudamq replicatie uploads (REST) + auth OpenRouter (VS) LLM-inferentie; key uitsluitend server-side in de ai-proxy alle AI via ai-proxy FUP 2M tokens p.p./mnd
Architectuur-lagen. Het local-first pad (links) werkt zonder enige cloud; de rechterkant is opt-in (cloud-modus). Bron: docs/architecture/README.md · sync-en-offline.md.

2. Modulesamenhang

Drie kern-primitives (agenda, taken, lijstjes) waar modules op injecteren; Vandaag is een pure consument — het integratiehart dat door de andere modules wordt gevoed.

Capture FAB (typen/dicteren) · deel-menu (share-sheet) Inbox vangnet + triage Triage-doelen (één actie) taak · agenda · boodschappen · bewaarlijst · voorraad AI ("Herken automatisch") kiest optioneel een module en opent diens add-sheet voorgevuld — altijd te bevestigen. Agenda (primitive) 10 modules injecteren: verjaardagen, schoolvakanties, co-ouderschap, sport, maaltijden, beweging, afval, vakantie, … Taken (primitive) deadline, toewijzing, herhaling; suggesties kunnen een taak aanmaken Lijstjes / Boodschappen ← Maaltijden: ingrediënten (dedupe) ← Voorraad: lage voorraad, één tik Bewaarlijsten = zelfde primitive Vaste kosten-hub (financieel) Abonnementen ↔ hub: fuzzy-koppeling, koppel-rijen leest ook: verzekeringen, leningen, spaardoelen, bankrekeningen (rekeningkosten), inkomsten (besteedbaar) Reminder-pijplijn 30 resyncers bij boot/dag-rollover; uitsluitend lokale notificaties (geen push/FCM/APNs); budget-planner voor de iOS-cap van 64 pending Vandaag — het integratiehart (tab 1) Dagstroom & Nu-blok gevoed door: agenda, taken, boodschappen, maaltijden, afvalkalender ("buitenzetten"), co-ouderschap, verjaardagen, gezinsafspraken (klusjes/zakgeld), medicatie en onderhoud · Suggesties uit: verzekeringen, abonnementen, vaste kosten en onderhoud · verder: weer, quote van de dag, inbox-achterstand (gap) en gezinsuitnodigingen Cyclus heeft bewust géén Vandaag-aansluiting
Modulesamenhang: capture → inbox → triage, module-injecties op de drie primitives, geldmodules rond de hub, en Vandaag als integratiehart. Bron: docs/product/README.md · gebruikersflows.md · moduledocs.

3. Datamodel-clusters

50 gesyncte Postgres-tabellen · migraties 0001–0045 (0038/0039 overgeslagen) · Drift schemaVersion 35 49 gesynct (PowerSync-schema + sync-config) Identiteit/huishouden · 3 households · members · module_states Foundation-primitives · 4 calendar_events · tasks · lists · list_items Inbox/bijlagen · 2 inbox_items · attachments Gezin · 5 recurring_dates · sport_teams · sport_events · … Gezinsafspraken · 6 family_agreements · chores · allowance_ledger · … Planning · 6 afval_pickups · vacations · meal_slots · recipes · … Financieel · 12 — privé-per-gebruiker fixed_costs · income_entries · savings_goals · … Gezondheid · 7 — privé-per-gebruiker routines · weight_entries · medication_items · … Huis/vastgoed/voorraad · 4 — maintenance_items · properties · bookings · stock_items 5 server-only nooit in de app-database: pending_invites · merge_audit ai_usage_logs household_plus_subscription module_tier_overrides 4 legacy/ongebruikt vervangen door de primitives (migratie 0021), nooit gedropt: appointments · grocery_items saved_items · saved_lists 3 sync-streams (download-scope) household_shared = visibility 0 (gezinsbreed) · user_private = owner-rijen, o.a. financieel/gezondheid · shared_with_me = visibility 2 visibility: 0 = household-gedeeld · 1 = privé-van-gebruiker · 2 = gericht gedeeld met leden + 6 lokaal-only tabellen (nooit gesynct): app_settings_rows · app_lock_config_rows · ai_settings_rows · invites · today_dismissals · quote_shown_history
Datamodel-clusters met tellingen. Bron: docs/architecture/datamodel.md.

4. Kern-gebruikersflow

Onboarding 1. Welkom 2. Naam 3. Gezin (opt-in) 4. Modulekeuze Vandaag dagbriefing: gaps, Nu-blok, dagstroom, suggesties Capture FAB (typen), deel-menu, dicteren (on-device) Inbox- triage één actie per item Module taak, agenda, lijst, voorraad duidelijke types springen direct door: Taak → Taken · Maaltijd → Boodschappen · Afspraak → agenda-sheet De app werkt direct, volledig lokaal; een account is pas nodig voor cloud-sync/gezinsdelen. Bewaren/Notitie landen in de inbox; met open AI-gate kiest "Herken automatisch" een module en opent diens add-sheet voorgevuld.
Kern-gebruikersflow van onboarding tot module. Bron: docs/product/gebruikersflows.md.

Sync & offline in het kort

De 4-weg-lockstep

Elke schema-wijziging aan een gesyncte tabel raakt vier plekken die exact gelijk moeten blijven: de Drift-tabel (bron) → het gegenereerde PowerSync-schema → de Postgres-migratie → de sync-config. Pariteitstests bewaken dit; een mismatch is een runtime-fout, geen compile-fout. Uitrolvolgorde: migratie eerst, dan sync-config, dan pas de app-build.

RLS vs. sync-streams

RLS is de schrijf-beveiliging, sync-streams zijn de download-scope — twee helften van één slot die dezelfde regels moeten uitdrukken en in lockstep blijven. Rollen: 0=owner, 1=partner, 2=kind, 3=extern + een is_admin-vlag; beide trigger-vergrendeld. Uploads: fatale fouten worden gedropt (en gerapporteerd) in plaats van de queue te blokkeren.

Privacy & AVG

Kernprincipe: local-first — standaard staat alle data lokaal op het toestel; zonder cloud-configuratie verlaat niets het toestel. Cloud-sync is gepositioneerd als onderdeel van de betaalde Plus-tier. Verwerkingsverantwoordelijke: Aqua-IT B.V. Analytics is opt-in en default uit (PostHog EU, uitsluitend anonieme events); crash reporting via Sentry zonder PII. Export: gescopede JSON-export via /backup (bevat alleen wat het aanvragende lid mag zien). Lokale verwijdering: "alle lokale gegevens verwijderen" op het privacy-scherm.

Twee eerlijke AVG-gaten (stand 2026-07-12):
  • Geen server-side accountverwijdering. Er bestaat geen delete-account Edge Function; een cloud-gebruiker kan zijn serverdata en auth-account niet zelf verwijderen. Ingepland in fase M1; moet vóór externe gebruikers gedicht zijn.
  • Geen retentiejobs. Geen automatische opschoning voor ai_usage_logs, merge_audit of soft-deletes; de bewaartermijn is de facto onbeperkt. Hoort in een retentiebeleid vóór launch.

Sub-processors

VerwerkerDoelRegioWanneer actief
Supabaseauth (magic-link), database, storage, edge functionsEU (eu-west-1)alleen cloud-modus
PowerSyncsync lokaal ↔ cloudEUalleen cloud-modus
OpenRoutermanaged AI (LLM-inferentie); alleen content die de gebruiker expliciet laat verwerkenVSalleen bij AI-gebruik (Plus, ingelogd)
Resende-mailbezorging: invite-mails + Supabase-auth-mails (afzender Tendlo <noreply@tendlo.app>)VS-bedrijfbij invites en auth-mails — ontbrak in de oude sub-processor-lijst
PostHogproductanalytics — anonieme events, geen PIIEUalleen na opt-in
Sentrycrash-/foutrapportage — stacktraces, geen PIIEU (Duitsland)bij een crash/fout
Apple / Googlebetaalrails (IAP)VS/EUpas bij abonnementen
RevenueCatabonnement-entitlementsVSgepland, nog niet aangesloten

Overige integraties blijven on-device: Apple Health en de device-agenda worden alleen gelezen; spraak loopt via on-device OS-spraakherkenning; weer (Open-Meteo) krijgt alleen coördinaten. Notificaties zijn uitsluitend lokaal — geen push/FCM/APNs.

AI-fundament

De enige AI-transportroute is de Supabase Edge Function ai-proxy → OpenRouter; de key staat uitsluitend server-side en BYO-keys worden niet meer ondersteund. De AiGate combineert vier voorwaarden: Plus-entitlement → hoofdschakelaar → per-capability-toggle → per-domein-opt-in voor geld/gezondheid (het domein financieel heet sinds 6 augustus 2026 geld). Zolang de instellingen laden weigert de gate alles.

Modelrouting per capability

CapabilityModel (OpenRouter-slug)max_tokenstemperature
categorizegoogle/gemini-3-flash-preview5120.1
summarizePreviewgoogle/gemini-3-flash-preview5120.4
suggestgoogle/gemini-3-flash-preview10240.4
extractDocument — vision/OCR (foto/PDF)qwen/qwen3-vl-235b-a22b-instruct20480
extractDocument — tekstvariantgoogle/gemini-3-flash-preview20480
chatanthropic/claude-sonnet-4.520480.7

Kostenremmen & metering

  • max_tokens-clamp: elke request gekapt op 4096 tokens
  • Fair-use-maandlimiet: 2.000.000 tokens per auth-user per maand; overschreden → HTTP 429 (fair_use_exceeded), zonder upstream-call
  • Globale OpenRouter-spend-cap: $30/maand
  • Metering in de server-only tabel ai_usage_logs: tokentellingen en statuscode — géén promptinhoud
  • Modellen per omgeving te tunen zonder app-release via env-vars (AI_MODEL_<INTENT>, allowlist)

Autonomie-grenzen van de assistent

  • De assistent muteert nooit zelfstandig: elke create wordt een bevestigingskaart (AssistantProposal)
  • Gegrond over 7 modules: verjaardagen, sportkalender, agenda, taken, boodschappen, maaltijden, voorraad
  • Out-of-scope-vragen → weigering of deterministische redirect; bewust géén open chatbot
  • Sensitive-domeinen (geld/gezondheid) zijn default uitgesloten van elke AI-verwerking

Security in het kort

Bron: docs/architecture/README.md · datamodel.md · sync-en-offline.md · integraties-en-privacy.md · ai.md · security-en-rechten.md · infrastructuur-en-deploy.md · docs/product/gebruikersflows.md

Status & roadmap

Deze presentatie heeft peildatum 12 juli en loopt achter. Voor de actuele stand — waar we staan, wat er nog moet voor TestFlight, en wie aan zet is — zie Status en route naar TestFlight. Voor het doorlopen van de app met de demo-accounts, zie Testinformatie. De markdown-documenten en die twee pagina's zijn leidend; deze presentatie is een afgeleide weergave.

Peildatum: 2026-07-12. Waar staat Tendlo: alles hieronder is op de peildatum tegen de code geverifieerd. Het product is klaar genoeg voor beta; de weg naar release loopt via commercie, juridisch en operationeel (RevenueCat, AVG, store), niet via meer features.

Status: ✅ Live (gebouwd, bereikbaar op genoemde route) · 🟡 Gedeeltelijk (werkt, met benoemd gat) · 🔧 In uitvoering · 📋 Gepland (met fase) · 💤 Bewust uitgesteld / non-goal

Kerncijfers (stand 2026-07-12)

Registry-modules (28) — statustabel

ModuleDomeinTierStatusRouteOpmerking
SportkalendergezinPlus/module/sportkalender.ics-import, AI-schema-scan, reminders, agenda-injectie
SchoolvakantiesgezinFree/module/schoolvakantiesrijksoverheid-dataset per regio t/m 2029-2030
VerjaardagengezinFree/module/verjaardagendeelmodel-pilot (rechten fase 2.1)
Co-ouderschapgezinPlus/module/coouderschapherhaalschema is het grootste geplande gemis (📋 Golf 3)
GezinsafsprakengezinPlus/module/gezinsafsprakennieuwste module; openspec-change 66/67 taken af
AfvalkalenderplanningFree/module/afvalkalender.ics-import, pauze/skip, "buitenzetten" op Vandaag
VakantieplanningplanningPlus/module/vakantieplanningdetail met dagplanning/checklists
BewegingplanningPlus/module/bewegingweeksessies + streak
MaaltijdenplanningFree/module/maaltijdenrecept-koppeling, ingrediënten → boodschappen
ReceptenplanningPlus/module/receptenrecepten-v2 af (zoeken, collecties, kookmodus, URL-import)
Vaste kostenfinancieelPlus/module/vaste-kostenhub met live koppel-rijen + grafieken (F2/F5)
InkomstenfinancieelPlus/module/inkomstenincl. besteedbaar-overzicht (F3)
SpaardoelenfinancieelPlus/module/spaardoelenledger-model (F6, af 2026-07-09)
VerzekeringenfinancieelPlus/module/verzekeringenAI-polis-scan, opzegtermijn-reminders
GarantiesfinancieelPlus/module/garantiesAI-bon-scan, verloop-reminders
AbonnementenfinancieelPlus/module/abonnementenfuzzy-koppeling met Vaste kosten
WagenparkfinancieelPlus/module/wagenparkAPK/service-urgentie, afschrijvingsschatting
Leningen & hypotheekfinancieelPlus/module/leningenAI-scan van overzichten
BankrekeningenfinancieelPlus/module/bankrekeningenbewust smal; IBAN gemaskeerd; géén scan (anti-fraude)
OnderhoudhuisPlus/module/onderhoudintervallen huis/boot/auto/tuin/anders, Vandaag-suggesties
RoutinesgezondheidPlus/module/routinesochtend-/avondroutines met cadans
GewichtgezondheidPlus/module/gewichtgrafiek, doelgewicht, opt-in Apple Health-import
Pillen & vitaminesgezondheidPlus/module/pillen-vitaminesachter optionele gezondheids-toegangscode
CyclusgezondheidPlus/module/cyclusbewust eiland: geen reminders/Vandaag-koppeling
BewaarlijstenbewaarlijstenFree/module/bewaarlijstenzelfde scherm als /lijstjes (lijst-primitive)
VastgoedvastgoedPlus/module/vastgoedboekingen + overlap-detectie
VoorraadvoorraadPlus/module/voorraadTHT-bewaking, laag → boodschappenlijst, kassabon-scan
Quote van de dagwelzijnPlus/module/quotegecureerde dataset, anti-herhaling, Vandaag-kaart

Kern-surfaces (18 routes)

SurfaceRouteStatus
Vandaag (tab 1)/vandaag
Taken (tab 2)/taken
Mijn leven (tab 3)/mijn-leven
Assistent (tab 4)/assistent
Agenda/agenda
Lijstjes/Boodschappen/lijstjes, /lijstjes/:id
Inbox/inbox
Instellingen/instellingen
Meldingen/meldingen
Modules beheren/modules-beheren
Gezin beheren/gezin-beheren
Beveiliging/beveiliging
Back-up/backup
Privacy/privacy
Sync-status/sync-status
Login/invite/login
Onboarding/welkom
Herzien 2026-08-06 — de 18e rij "Domein-overzicht" (/domein/:id, 🟡 slapend) is vervallen.

Die route en lib/features/shell/screens/domain_screen.dart zijn met F1-9 (E-MOD-06) verwijderd — merge 20f1b910, 6 augustus 2026. lib/features/shell/screens/ bevat nu alleen nog mijn_leven_screen.dart, de router-doc benoemt de uitfasering zelf (lib/core/router/app_router.dart:7-9) en test/core/router/domein_route_verwijderd_test.dart bewaakt dat de route niet terugkomt. Waar deze pagina eerder "17 live, 1 slapend" zei: er is geen slapende surface meer.

Domeinen zelf zijn niet verdwenen. Ze blijven de vaste categorieën van de modulecatalogus — onboarding, modulebeheer, meldingeninstellingen en AI-instellingen ordenen er nog steeds op, en domain.sensitive stuurt nog altijd de AI-poort. Alleen dít ene scherm is weg.

🟡 De gedeeltelijk-lijst (benoemde gaten, stand 2026-07-12)

  1. Plus/monetisatie is een lege huls (bewust): enforcement uit, geen RevenueCat/aankoopflow, trial-CTA verborgen, upsell-sheet toont placeholder-prijzen (📋 milestone M1/"B5").
  2. Assistent-voorbeeldprompt belooft te veel: de garantie-vraag in de voorbeelden valt buiten de 7 ondersteunde modules en eindigt in een weigering.
  3. Vandaag-gaps: per-gap-instellingen/persistentie zijn expliciete follow-up; dismiss-van-de-dag werkt wél.
  4. Per-module notificatie-schema's (meerdere tijden per dag) zijn "planned extension".
  5. Discovery-dismiss niet persistent (bewust v1, alleen in-memory per sessie).
  6. ModuleDescriptor preview-summary/badge-hooks nog niet gebouwd.
  7. Cyclus is een eiland: als enige registry-module geen reminder-resyncer en geen Vandaag-aansluiting — vermoedelijk bewust (privacy), maar nergens vastgelegd.
  8. Server-side accountverwijdering ontbreekt (AVG-gat; lokale wipe + gescopede export bestaan wél; 📋 M1).

Milestones M0–M3

MilestoneDoelStand 2026-07-12
M0releasebasis🔧 deels: custom SMTP ✅ (2026-06-16), open beslissingen vastgelegd ✅ (2026-07-06); Android release-signing, cloud-rondrit-e2e-verificatie, bundle-id↔RevenueCat-verzoening en CI-migratie-check niet als afgerond gedocumenteerd
M1 → gesloten betacommercie + AVG🔧 deels: AI-FUP-handhaving per persoon ✅ (in ai-proxy gebouwd); RevenueCat/paywall/trial, gehoste privacy/terms, server-side accountverwijdering, store-producten, beta-gezinnen 📋 open
M2 → publieke releaseAndroid-pariteit, CI-build/signing, store-inzending📋 gepland
M3+post-release (widgets, twee-weg agenda-sync, web-companion, e-mail-ingestie…)📋/💤

Fase-stand per roadmap-as

Module-verbetergolven 0–6

Golf 0 ✅ compleet · Golf 1 + 2 grotendeels ✅ · Golf 3–6 open — met het co-ouderschap-herhaalschema als eerstvolgende blokkerende bouwsteen in Golf 3, en Golf 6 (financiële ontversnippering) migratie-gated achter een apart owner-besluit.

Financieel F1–F6

F1 fundament ✅ · F2 hub-herbouw ✅ · F3 Inkomsten + Besteedbaar ✅ · F4 AI & wagenpark ✅ · F5 visualisatie ✅ · F6 Spaardoelen ✅ (2026-07-09) — de wave-reeks is afgerond; de ontversnippering is doorgeschoven naar Golf 6.

Rechten/rollen fase 0–3

fase 0 ✅ · fase 1 (per-lid module-toegang) ✅ · fase 2.0 fundament ✅ · 2.1 pilot verjaardagen ✅ · 2.2/2.3 grotendeels uitgevoerd, formele afsluiting + finale E2E-bevestigingsrun open · fase 3 (deel-defaults, deelmodus, module-activatie per lid) ✅ live (gedeployed 2026-07-12) — zie de bouwronde hieronder.

OpenSpec-bouwwachtrij (2026-07-10)

recepten-v2 ✅ 25/25 · gezondheid-medicatie-cyclus ✅ 50/50 · quote-van-de-dag ✅ 37/37 · gezinsafspraken 🔧 66/67 (laatste taak open).

Rechten fase 3 + favorietenbalk + module-beheer-UX + in-app aankondigingen ✅ (live 2026-07-12)

Naar aanleiding van testerfeedback is een gebundelde bouwronde gebouwd, getest en op prod gedeployed die drie eerdere owner-besluiten (deels) omdraait. Owner-besluiten H–X + M–O + ADR-0001..0005 zijn allemaal akkoord; de kern:

Uitrol (2026-07-12): de volledige bouwronde (share-policy-registry + resolver, gezinsbrede + persoonlijke deel-voorkeur, containers-cascade, member_module_prefs, activatie/meldingen per lid, modules-lijst-UX, deel-hint, deelmodus, bulk-remap en favorietenbalk F1–F3) is gemerged, getest en gedeployed. Detailbron: docs/archive/implemented/design/rechten-fase3-deel-defaults-plan.md (besluiten H–L, P–X), docs/archive/implemented/design/favorietenbalk-sneltoetsen-plan.md (M–O) en de ADR's docs/architecture/adr/0001–0005. De deel-defaults per module zijn conform de code-registry (lib/core/modules/share_policy.dart) verwerkt in de moduledocs onder docs/product/modules/.

Open owner-punten (owner-geblokkeerd)

Uit de in totaal 27 open vragen (stand 2026-07-12) zijn dit de extern/commercieel geblokkeerde punten:

  1. B5/RevenueCat: subscription-producten + prijzen in App Store Connect/Play Console, store-credentials, bundle-id-bevestiging ná eerste upload.
  2. Juridisch/AVG: privacybeleid + voorwaarden + hosting-URL; akkoord sub-processor-lijst; grondslag kinderdata.
  3. Naam-clearance Tendlo (juridisch advies) + domeinen/handles vastleggen.
  4. Store-readiness: Play-account, store-teksten/screenshots/keywords, support-mail; 5–15 beta-testers.
  5. Share Extension: eenmalig Xcode-target aanmaken — ✅ ingehaald door de code (target geregistreerd, geverifieerd 2026-07-11).
  6. Notificatiegeluid-assets: eigen geluiden of defaults.
  7. Vandaag fase 1/2: tester-oordeel over afvinken/Klaar-bak.

De prijskeuzes (Solo naast Family, trial-variant, maand-abonnement bij launch, exacte storefront-punten) zijn op 2026-08-05 gesloten; wat overblijft zijn o.a. de formele herbevestiging van de freemium-grens en beleids-/techniekvragen — het volledige overzicht staat in docs/product/roadmap.md.

Belangrijkste technische restpunten

Bron: docs/archive/superseded/product/status-overzicht.md · docs/product/roadmap.md