All projects

Family Planner

Mobile applicationIn development

Shared schedules, household planning, and a calmer view of the family week.

In development

Mobile app in development. The current prototype uses synthetic local data; household authorization and the production backend are being built before a real-family beta.

Overview.

Family Planner is an iOS and Android app for the everyday work of running a household: knowing what is happening, keeping track of responsibilities and keeping the conversation next to the plan. The prototype brings a Today view, calendar, recurring tasks, family directory and event discussions into one mobile interface.

The wider product direction includes a family charter, shared routines and licensed Scripture content. I’m retaining the useful Expo interface while rebuilding the data foundation around explicit household membership, roles and reviewable authorization.

The screens here are the working local prototype with fictional sample data. The approved Nhost architecture, encrypted offline support and reviewed AI briefing workflow describe the next foundation, not a released service.

Screens & workflows.

Application screens and development prototypes. Select a capture for a closer look.

See the day at a glance

  1. Open Home to review the day and recent household activity.
  2. Read the prototype’s clearly labeled sample daily brief.
  3. Use the quick actions to open Calendar, add an event or add a task.
  4. Refresh to review the current local sample state.

Plan and discuss an event

  1. Choose a day in the calendar and review its events.
  2. Add an event with a title, date and timed or all-day schedule.
  3. Open the event to review its details.
  4. Keep related conversation in the event’s own discussion thread.

Build a daily routine

  1. Open the daily planner and choose a date.
  2. Add a one-time, daily or weekly task.
  3. Choose the relevant weekdays for a weekly routine.
  4. Mark a task complete or undo a completion and review the day’s progress.

Review an AI suggestion · planned

  1. An opted-in adult requests a briefing from authorized household items.
  2. A server function requests a structured proposal with source references.
  3. The adult reviews, edits, accepts or rejects each suggestion.
  4. Accepted changes go through the same authorized commands as manual edits.

Inside the build.

Explore the components, their boundaries, and the decisions behind them.

The working prototype keeps real Expo Router screens and generated query hooks behind an injectable request boundary. Its safe preview substitutes an in-memory executor. The approved production direction moves identity and relational data to Nhost and Hasura, then adds household-scoped offline replication and server-side orchestration in stages.

Mobile application · implemented prototype

Provide the retained Home, Calendar, Planner, Family, Profile and event-discussion screens.

  • File-based routes separate tab navigation from event/task forms and detail screens. Shared colors, Nunito typography, safe areas and keyboard handling carry the same design through the app.
  • TanStack Query hooks coordinate reads, mutations and cache invalidation through the generated API client.
  • An application identity interface keeps screens separate from the current legacy identity provider and gives the synthetic preview its own local identity.

Design decisions & tradeoffs.

Keep the useful interface and replace the data boundary

The existing Expo screens remain the product foundation. An identity abstraction and injectable request executor let the interface be tested while the backend changes in vertical slices.

The tradeoffThe migration temporarily maintains old and new contracts, but avoids a full mobile rewrite and makes progress independently demonstrable.

Make authorization part of the relational model

The target Postgres/Hasura design ties records to households, current memberships and explicit roles, with permissions stored and tested alongside code.

The tradeoffPolicy and relationship changes require negative authorization tests and careful metadata review; hiding a screen is never treated as a security boundary.

Build offline support after the tenant boundary

The approved plan starts with authorized cloud access, then an encrypted read cache, then a narrowly scoped mutation outbox with version checks and idempotency.

The tradeoffA first-party protocol avoids another sync dependency but creates responsibility for cursors, tombstones, replay, conflicts and revocation. Complex operations stay online initially.

Keep AI proposal-based

The planned briefing can summarize approved source items and suggest actions, but an adult reviews the result before any normal application command applies a change.

The tradeoffThis introduces a review step and structured-output validation, while keeping household decisions and mutation authority with the user.

Technical stack.

Mobile client · current

  • Expo 54
  • React Native 0.81
  • React 19
  • TypeScript 5.9
  • Expo Router 6

Shared iOS/Android interface with file-based routes and a browser preview for rapid interaction checks.

Client state & contracts · current

  • TanStack Query
  • OpenAPI
  • Orval
  • Zod

Generated hooks, validated boundaries and cache invalidation; an injected executor runs the synthetic preview without household-data requests.

Native experience · current libraries

  • React Native Reanimated
  • Expo Haptics
  • Expo SecureStore
  • Expo Calendar
  • Expo Notifications

Native interaction and integration modules are present. Calendar writes, reminders and push registration stay disabled in the shown synthetic preview.

Backend · approved target

  • Nhost Auth
  • PostgreSQL
  • Hasura GraphQL
  • Nhost Functions
  • GraphQL code generation

Planned replacement for the isolated legacy backend, with committed migrations and deny-by-default household permissions.

Offline & AI · planned

  • expo-sqlite
  • SQLCipher
  • Idempotent outbox
  • OpenAI Responses API
  • Structured outputs

Staged encrypted caching and reviewed AI proposals follow authorization and privacy gates; these are not released features.

Tooling & verification

  • Node 24
  • pnpm 10
  • ESLint
  • Prettier
  • Node test runner
  • TypeScript

Workspace, boundary, identity, synthetic-backend and local-date checks are executable today. Authorization suites, native end-to-end coverage and beta delivery expand with the migration.