Wereldwijd beschikbaar
Projecten

FamVan — Een privéapp voor een gezin dat groeit

FamVan — Een privéapp voor een gezin dat groeit
11 september 2026
FamVan is een privéapp voor één gezin, gebouwd voor de aanloop naar een geboorte en de jaren daarna. Eén gedeelde tijdlijn voor foto's en video's, een zwangerschapstracker, aftellingen naar de data die ertoe doen, albums per maand en per persoon, verzegelde brieven en een kluis voor de documenten die niemand kan terugvinden wanneer ze nodig zijn. De app draait op iOS, Android en het web vanuit één Flutter-codebase, op een Supabase-backend. Ik heb alles ontworpen en gebouwd. Het uitgangspunt is het tegenovergestelde van een sociaal netwerk. Geen feedalgoritme, geen discovery, geen publiek. De mensen erin zijn het hele product. Elk gezin heeft al een groepschat, en elk gezin verliest er dingen in. Een foto van maart is in juni onbereikbaar. Een uitgerekende datum is een bericht, geen aftelling. De grootouders krijgen laat een selectie doorgestuurd. Niemand vindt de vaccinatiekaart terug. Het onderzoek was dichtbij huis en vooral observationeel: kijken welke dingen herhaaldelijk gevraagd worden en welke verloren gaan. Het patroon was dat gezinnen geen plek tekortkomen om foto's naartoe te sturen. Ze komen een plek tekort waar de foto's vindbaar blijven, waar de tijdlijn structuur heeft en waar verschillende mensen echt verschillende niveaus van toegang kunnen hebben. Dat laatste punt stuurde de architectuur. FamVan heeft ouders, kinderen, familieleden en mensen zonder enige login — de baby heeft een profiel lang voor de baby een wachtwoord heeft. De login houdt rekening met die hele range. Je kan je aanmelden door je naam en een zescijferige pincode in te typen, wat een echt account haalbaar maakt voor een kind. Volwassenen kunnen e-mail en wachtwoord of Google gebruiken. Een gezin wordt één keer aangemaakt en daarna sluit je je aan met een code van zes letters. Toegang volgt de rol in plaats van één gedeelde login. De kluis, met documenten en gezondheidskaarten, is alleen voor ouders. De AI-hulpjes zijn opt-in en alleen voor ouders. Posts hebben zichtbaarheidsniveaus, dus niet alles bereikt iedereen. Al die regels worden afgedwongen door Postgres row-level security policies, niet door knoppen in de interface te verstoppen. Een account van een kind kan de kluis niet lezen omdat de database de rijen niet teruggeeft. De functie die het product het best verklaart, is de zwangerschapscamera. Een wekelijkse reeks buikfoto's werkt alleen als de foto's op elkaar aansluiten. In de praktijk doen ze dat nooit — de hoek verschuift, de afstand verandert en de timelapse trilt. Daarom legt de camera de foto van vorige week als een vaag spookbeeld over het beeld terwijl je de nieuwe kadert. Je lijnt jezelf uit tegen je eigen vorige opname. De reeks kan dan als timelapse worden afgespeeld en als GIF geëxporteerd, want een reeks die de app niet kan verlaten, is een reeks die niemand deelt. Dezelfde overlaycamera doet na de geboorte dienst voor de maandelijkse foto's van de baby. Het is een kleine functie die er alleen is omdat iemand het probleem heeft zien gebeuren.
  • Tijdlijn: foto- en videoposts met posterframes en een viewer op volledig scherm, zichtbaarheidsniveaus, tags, reacties, commentaar, bewerken en realtime updates.
  • Zwangerschap: een aftelling per week met notities, de buikcamera, naamstemmen, afspraken, snelle logs en een "de baby is er"-flow die de hele app laat overgaan.
  • Baby: leeftijd, een groeicurve tegen een benaderende WHO-band, mijlpalen, maandelijkse foto's en het vaccinatieschema.
  • Aanloop naar de geboorte: een raad-de-geboortedatum-spel waarvan de gokken verzegeld blijven tot de baby er is en zich dan zelf scoren, gedeelde checklists met templates voor de ziekenhuistas en het geboorteplan, een schopteller en een weeëntimer die het 5-1-1-patroon herkent en zegt wanneer je moet bellen.
  • Aandenkens: brieven die verzegeld blijven tot een datum, albums per maand en per persoon, een stamboom, verjaardagsinterviews die elk jaar dezelfde tien vragen stellen zodat de antwoorden naast elkaar staan, en een jaaroverzicht met een deelbare collage.
  • Praktisch: data met aftellingen, een kluis alleen voor ouders, herinneringen op het toestel, pushmeldingen, een abonnementslink voor Google en Apple Calendar, een afdrukbaar PDF-fotoboek en een volledige export van alles.
De app komt in het Engels, Spaans en Nederlands. Dat is geen marktbeslissing, het is een gezin met wortels in België dat in Ecuador woont. Vierentwintig vertaalbestanden zijn per domein opgesplitst — zwangerschap, baby, tijdlijn, aandenkens, planning, gezin, content, core — zodat de strings van een functie bij die functie wonen. Van bij het begin voor drie talen bouwen houdt ook de layouts eerlijk. Nederlandse samenstellingen zijn lang, en een knop die alleen in het Engels past, is een verkeerd ontworpen knop.
  • App: Flutter met Riverpod voor state, go_router voor navigatie en één codebase voor iOS, Android en web.
  • Backend: Supabase — Postgres met row-level security, Auth, Storage, realtime op posts, commentaar en reacties, en databasefuncties om een gezin aan te maken, uitnodigingen uit te sturen en met een code toe te treden.
  • Media: camera-opname met een overlay, videothumbnails, gecachete netwerkafbeeldingen en beeldverwerking voor de timelapse en de GIF-export.
  • Documenten: PDF-generatie en afdrukken voor het fotoboek; kalenderexport als .ics of een privé-abonnementslink.
  • Meldingen: lokale geplande meldingen voor data, afspraken en vaccinaties, met Firebase Messaging voor push.
  • Setup: een Python-script dat de migraties toepast, auth configureert, de eerste accounts aanmaakt en ze in een gezin plaatst, zodat de hele backend reproduceerbaar is met één commando.
Permissies horen in de database. De verleiding bij een gezinapp is om toegang als een UI-aangelegenheid te behandelen, want iedereen die meedoet, is te vertrouwen. Net die redenering laat een kluis lekken. Elke regel in row-level security duwen betekende meer policies schrijven dan schermen, en het betekent dat een bug in een widget geen document kan blootleggen. Een account voor een kind is een ontwerpprobleem, geen technisch probleem. Een zescijferige pincode op een naam is minder veilig dan een wachtwoord en veel bruikbaarder voor een kind dat toch een echte identiteit in de app moet hebben in plaats van die van een ouder te lenen. Daar bewust voor kiezen, en de gevoelige zones achter rollen houden, was de afweging die het waard was. Functies voor een moment hebben een einde nodig. De weeëntimer en het raad-de-geboortedatum-spel zijn een week na de geboorte nutteloos. De "de baby is er"-overgang bouwen — waarbij de zwangerschapsonderdelen verdwijnen en de babyonderdelen het overnemen — was meer ontwerpwerk dan beide functies samen, en zonder die overgang was de app binnen een maand na oplevering slecht verouderd. Een gezinapp die standhoudt. De foto's blijven vindbaar, de data tellen vanzelf af, de grootouders zien wat ze moeten zien, het kind heeft zijn eigen login en de buikreeks sluit aan. Het is het minst commerciële ding dat ik gebouwd heb en een van de meest gebruikte.

Website op maat

Vertel me in een paar regels wat je doet en wat je wil bereiken. Je krijgt binnen twee werkdagen een reactie met een eerlijke inschatting en een voorstel voor een intake van 30 minuten.

Vraag een voorstel