Back to portfolio

Chapter 02 · Multi-platform product engineering

Family Finance V3

Google Pay M3 · P0–P5 Shipped · Live Backends

A household finance platform shipped across web, Expo, and Android with unified Inbox, Goals, Reports, Health, Phase 5 insights, and honest backend maturity framing.

Source: family-finance/CLAUDE.md
Family Finance Wallet beranda — account cards, saldo, and shortcuts
  • 4client surfaces: web, Expo, Android, backend
  • P0–P5V3 redesign phases shipped on main
  • 0private finance records exposed publicly

Wallet UI flow

Screens from the live Google Pay M3 wallet.

Assets below are recaptured from the current Family Finance wallet UI. Each flow pairs product behavior with the backend boundary it proves.

Family Finance Wallet beranda with BCA, Jenius, and cash cards

Flow 01

Wallet home

The Google Pay–style wallet home shows account cards, monthly Masuk/Keluar/Bersih, outbox sync, and shortcuts into Catat, scan, AI, anggaran, and family.

InsightAggregatorService exposes cashflow, burndown, leakage, heatmap, correlation, and trade-off endpoints.

Family Finance Wallet inbox with OCR, Gmail, WhatsApp, and voice drafts

Flow 02

Unified Inbox

Gmail, WhatsApp, AI, and receipt drafts share one review queue with confidence sorting and draft inspector routing.

IntakeDraft source filtering and confirm/reject actions stay backend-owned before ledger mutation.

Family Finance Wallet Target hub — tujuan, tantangan, portofolio

Flow 03

Goals hub

Savings goals, portfolio holdings, and challenges sit behind a segmented V3 control with gap analysis and fastest-runway logic.

Goal APIs protect family membership while progress and runway calculations stay centralized.

Family Finance Wallet reports with YoY, Insight AI, and weekly trend

Flow 04

Reports

Monthly summaries, year-over-year comparisons, and export paths use the same V3 token system across web and native shells.

Report endpoints remain the first candidates for read-model caching as household traffic grows.

Family Finance Wallet health with Strava correlation

Flow 05

Health

Power curve and muscle heatmap visualizations translate synced activity summaries into household fitness context.

Health summaries reuse backend activity contracts with client-side chart adapters under the frozen-backend constraint.

Family Finance Wallet Kas transactions list

Flow 06

Transactions & recurring

Income and expense lists, filters, and recurring controls share V3 chrome with state-preserving edit paths.

Finance mutations invalidate the shared financeInvalidationKeys set, including reports-summary.

Family Finance Wallet Anggaran category limits

Flow 07

Budgets & categories

Category budgets, coach insight banners, and progress bars keep spend visibility aligned across platforms.

Category writes carry nameId for Indonesian localization parity with web.

Family Finance Wallet settings and integrations

Flow 08

Family & integrations

Household switching, invites, Gmail, Strava, Hevy, WhatsApp, and Google Sheets sync live under V3 settings surfaces.

OAuth tokens and provider state stay server-side behind protected backend services.

Screen Showcase

Complete Multi-Platform UI Set

Family Finance Wallet beranda
Family Finance Wallet inbox
Family Finance Wallet transactions
Family Finance Wallet goals hub
Family Finance Wallet reports
Family Finance Wallet AI assistant
Family Finance Wallet health
Family Finance Wallet budgets

Multi-platform journey

Same contracts across web, Expo, and Android.

V3 & FF4 parity work wired inbox, goals, reports, health, and dashboard insights into each native shell while keeping finance mutations backend-owned.

Family Finance Wallet mobile beranda

Journey 01

V3 home dashboard

Android and Expo home screens surface spend, savings, widgets, and insight charts from the same mobile API contracts.

Dashboard DTOs stay family-scoped without exposing raw persistence models.

Journey 02

Unified inbox queue

Draft review, duplicate hints, and inspector routing compress intake triage into one mobile-native queue.

Draft fetch enforces familyId boundaries; errors surface real API codes instead of generic copy.

Journey 03

Goals segmented hub

Savings, portfolio holdings, and challenges share one tabbed hub with parity logic ported from Android.

Goal CRUD endpoints enforce membership before any progress writeback.

Journey 04

Reports & Health routes

Pushed routes under Settings/More carry Reports and Health where the five-slot tab bar has no room.

Read APIs stay stable while V3 navigation graphs add deep links without backend churn.

Journey 05

V2/V3 switch architecture

Confirm→applying→rollback flow with a two-key crash-safe commit marker lets households opt into V3 safely.

Version preference persists server-side; clients never trust local route state for finance scope.

Journey 06

Multi-platform parity

Web, Expo, and Jetpack Compose V3 screens share inbox, goals, reports, health, and Phase 5 insight coverage.

Backend remains frozen while frontends consolidate IA around the same chapter map.

Tech stack

Grouped by ownership boundary.

Web

  • Next.js App Router
  • React 19
  • TypeScript
  • Ledger shell
  • V3 tokens
  • next-intl
  • NextAuth

Backend

  • Go
  • Gin
  • GORM
  • PostgreSQL
  • domain services
  • mobile /api/v1 routes
  • background AI audit jobs

Mobile

  • Expo
  • React Native
  • Jetpack Compose
  • SecureStore
  • TanStack Query
  • FCM
  • mobile bearer sessions

Integrations

  • Google OAuth
  • Gmail Pub/Sub
  • WhatsApp webhooks
  • Gemini
  • DeepSeek
  • Strava
  • Hevy
  • Frankfurter FX

Quality and deployment

  • Vitest
  • Go tests
  • API contracts
  • no web DB access checks
  • Cloud Run
  • Open Graph sharing

Backend maturity

Strong backend signal without infrastructure overclaiming.

Redis cache-aside

Redis is not currently implemented in family-finance-backend.

Add Redis later for dashboard and reporting read models, using family-scoped keys, short TTLs, and write invalidation.

Kafka assessment

Kafka is not currently implemented in family-finance-backend.

Use an outbox-first async model before Kafka; reserve Kafka for replayable multi-consumer event streams.

Durable jobs

The backend has Gmail Pub/Sub callbacks, worker-style backfill, goroutines, and an in-process monthly scheduler.

Move monthly summaries, push notifications, and provider retries to durable outbox-backed workers.

Observability

Request IDs, Cloud Armor planning, and tests exist, but metrics/tracing are not yet a full observability platform.

Add structured logs, metrics, traces, queue-depth alerts, provider latency tracking, and DB pool saturation alerts.

Backend proof points

What hiring managers should notice.

  • ✓Backend is the system of record for family-scoped finance data.
  • ✓Web, mobile, and Android clients consume stable backend DTOs instead of owning persistence.
  • ✓Mobile sessions are validated by backend middleware and stored as token hashes.
  • ✓Provider events are converted into reviewable drafts before ledger mutation.
  • ✓V3 redesign phases 0–5 shipped with multi-platform parity; Redis and Kafka remain documented roadmap decisions.