Ecuador — Cuenca
Projects

FamVan — A private family app for a growing family

FamVan — A private family app for a growing family
September 11, 2026
FamVan is a private app for one family, built for the run-up to a birth and the years after it. One shared timeline for photos and videos, a pregnancy tracker, countdowns to the dates that matter, albums by month and by person, sealed letters, and a vault for the documents nobody can find when they need them. It runs on iOS, Android and the web from one Flutter codebase, on a Supabase backend. I designed and built all of it. The premise is the opposite of a social network. There is no feed algorithm, no discovery, no audience. The people in it are the entire product. Every family already has a group chat, and every family loses things in it. A photo from March is unreachable by June. A due date is a message, not a countdown. The grandparents get forwarded a subset, late. Nobody can find the vaccination card. The research was close to home and mostly observational: watch which things get asked for repeatedly, and which get lost. The pattern was that families do not lack a place to send photos. They lack a place where the photos stay findable, where the timeline has structure, and where different people can have genuinely different levels of access. That last point drove the architecture. FamVan has parents, kids, relatives, and people with no login at all — the baby has a profile long before the baby has a password. Sign-in accommodates that range. Someone can sign in by typing their name and a six-digit PIN, which is what makes a real account workable for a child. Adults can use email and password or Google. A family is created once and joined afterwards with a six-letter code. Access follows the role rather than a single shared login. The vault, which holds documents and health cards, is parents-only. The AI helpers are opt-in and parents-only. Posts carry visibility levels, so not everything reaches everyone. Every one of those rules is enforced by Postgres row-level security policies, not by hiding buttons in the interface. A kid's account cannot read the vault because the database will not return the rows. The feature that best explains the product is the pregnancy camera. A weekly bump photo series only works if the photos line up. In practice they never do — the angle drifts, the distance changes, and the timelapse jitters. So the camera overlays last week's photo as a faint ghost while you frame the new one. You line yourself up against your own previous shot. The series can then be replayed as a timelapse and exported as a GIF, because a series that cannot leave the app is a series nobody shares. The same overlay camera handles the baby's monthly photos after the birth. It is a small feature that only exists because someone watched the problem happen.
  • Timeline: photo and video posts with poster frames and a full-screen viewer, visibility levels, tags, reactions, comments, editing, and realtime updates.
  • Pregnancy: a week-by-week countdown and notes, the bump camera, name votes, appointments, quick logs, and a "baby has arrived" flow that transitions the whole app.
  • Baby: age, a growth chart against an approximate WHO band, milestones, monthly photos, and the vaccination schedule.
  • Run-up to the birth: a guess-the-birthday game whose guesses stay sealed until the baby arrives and then score themselves, shared checklists with hospital-bag and birth-plan templates, a kick counter, and a contraction timer that recognises the 5-1-1 pattern and says when to call.
  • Keepsakes: letters sealed until a date, albums by month and person, a family tree, birthday interviews that ask the same ten questions every year so the answers sit side by side, and a year-in-review with a shareable collage.
  • Practical: dates with countdowns, a parents-only vault, on-device reminders, push notifications, a calendar subscription link for Google and Apple Calendar, a printable PDF photo book, and a full export of everything.
The app ships in English, Spanish and Dutch. That is not a market decision, it is a family with roots in Belgium living in Ecuador. Twenty-four translation files are split by domain — pregnancy, baby, timeline, keepsakes, planning, family, content, core — so a feature's strings live with the feature. Building for three languages from the start also keeps the layouts honest. Dutch compound words are long, and a button that only fits in English is a button designed wrong.
  • App: Flutter with Riverpod for state, go_router for navigation, and a single codebase across iOS, Android and web.
  • Backend: Supabase — Postgres with row-level security, Auth, Storage, realtime on posts, comments and reactions, and database functions for creating a family, issuing invites and joining with a code.
  • Media: camera capture with an overlay, video thumbnails, cached network images, and image processing for the timelapse and GIF export.
  • Documents: PDF generation and printing for the photo book; calendar export as .ics or a private subscription link.
  • Notifications: local scheduled notifications for dates, appointments and vaccinations, with Firebase Messaging for push.
  • Setup: a Python script that applies the migrations, configures auth, creates the first accounts and puts them in a family, so the whole backend is reproducible in one command.
Permissions belong in the database. The temptation with a family app is to treat access as a UI concern, because everyone involved is trusted. That is exactly the reasoning that leaks a vault. Pushing every rule into row-level security meant writing more policies than screens, and it means a bug in a widget cannot expose a document. A child's account is a design problem, not a technical one. A six-digit PIN over a name is less secure than a password and far more usable for a kid who should still have a real identity in the app rather than borrowing a parent's. Choosing that deliberately, and keeping the sensitive areas behind roles, was the trade worth making. Features for a moment in time need an ending. The contraction timer and the guess-the-birthday game are useless a week after the birth. Building the "baby has arrived" transition — where the pregnancy surfaces retire and the baby surfaces take over — was more design work than either feature itself, and without it the app would have aged badly within a month of shipping. A family app that holds. The photos stay findable, the dates count down on their own, the grandparents see what they should, the kid has his own login, and the bump series lines up. It is the least commercial thing I have built and one of the most used.