Case 02 — Engineering & Build React · Supabase · Capacitor 2026
Rarely Heard Voices

One codebase.
Every surface.

A single React app shipping to web, iOS and Android — designed, built and deployed end-to-end.

Role

Lead Product Designer / Engineer

Stack

React 18Vite 5SupabaseCapacitor 8Tailwind

Delivery

Vercel CDAuto-update PWAVitest

Process

Weekly demo cycle on iPhone 14 Pro Max · deploy-on-green from main

1React codebase
3Shipping surfaces
9Supabase edge functions
8Scoped React contexts
Less surface to maintain
01 — The challenge

Ship to everything, with a small team

RHV needed to reach members as an installable iOS and Android app, run a full admin console, and power event-day tooling — all without standing up a separate backend team or a second admin product. The constraint shaped the architecture: a deliberately small, modern stack chosen for speed of iteration and operational simplicity, where the same code powers the member experience, the admin console and the event tools at once.

A single codebase ships to web, iOS PWA, Android PWA and the App-Store and Play-Store shells — a 4× reduction in the surface area the team has to maintain.

02 — Architecture

A vertically integrated product

RHV is a React 18 PWA built with Vite 5, deployed continuously to Vercel and wrapped with Capacitor 8 for native iOS and Android distribution. Supabase provides Postgres, Auth, Realtime and Storage, plus a Deno edge-functions runtime for transactional email and webhooks. State is split across eight scoped React contexts so boundaries stay predictable — Auth, Members, Messages, Feed, WLTM Board, and more.

LayerTechnologyWhy it was chosen
FrontendReact 18 · Vite 5 · React Router 6Lazy-loaded routes, fast HMR, mature ecosystem.
StylingTailwind CSS + RHV tokensA strict design system with no runtime cost.
StateEight scoped React contextsPredictable boundaries per domain.
BackendSupabase (Postgres / Auth / Realtime / Storage)Production-grade auth + realtime without a custom server.
EdgeSupabase Edge Functions (Deno)Transactional email via Resend, welcome / approval flows, webhooks.
PWAvite-plugin-pwa + WorkboxInstallable, offline-first, auto-updating service worker.
NativeCapacitor 8 (iOS / Android)App-store distribution from the same codebase.
i18ni18next + react-i18nextEnglish & Spanish, scoped per page.
TestingVitest + React Testing LibraryComponent & integration coverage.
DeliveryVercel CD from main → productionOne-click deploys, preview URLs per PR.
03 — Notable engineering decisions

The interesting bits

01 Dual-mode data layer

Every data function checks a single feature flag and falls back to localStorage when Supabase is disabled — so the full app runs as a zero-backend demo for pitches, screenshots and offline testing.

02 Read-receipts that survive reload

Optimistic UI → DB persist → sessionStorage backup. Conversations stay correctly marked as read even when a database write loses the race with a navigation event.

03 Auto-updating PWA

The build emits a version.json; the service worker polls every 60s and triggers a graceful reload when a new version ships. Members never see a stale app.

04 Rate limiting at the edge of the UI

Posts, comments and reactions are throttled locally (5 posts/day, 20 comments/hour) before ever hitting the database — the network feels considered, not noisy.

05 Tier-aware permissions

A small access-control helper centralises the six-tier visibility rules so every page, filter and search query stays in sync with the "Boardroom-stays-hidden" contract.

06 Compliance built in

GDPR consent capture with an audit log, granular email preferences, blocking, reporting, account deletion — and a privacy gate that blocks the app until a member uploads a real photo.

04 — Native-feeling PWA
RHV PWA profile screen rendering full-bleed on iPhone
100dvh layouts
RHV directory with safe-area-aware bottom navigation
Safe-area bottom nav
RHV notifications panel as a GPU-composited overlay
GPU transitions
RHV locations map embedded in the PWA
Embedded maps
05 — Outcome & impact

A product the team can run on autopilot

RHV shipped as a quietly polished product the team can run, extend and operate without engineering bottlenecks. One product, every surface: a single codebase ships to web, iOS, Android and both app stores. Operations without an ops team: registration approvals, tier changes, event scheduling, segmented push notifications and content moderation all happen inside the same app — no second admin product, no SQL console required.

Compliance from day one and ship-velocity by default: auto-deploy from main to Vercel, an auto-updating service worker, a Vitest suite and a version-pinned PWA cache make every change land with zero member friction — the app continues to ship multiple times a week.

"Quiet, considered, and built for the people in the room."

Where it goes next: deeper event tooling, richer matchmaking, sponsor analytics, a careers track — and, longer term, expansion beyond retail into adjacent invitation-only communities that share the same brief: a private network, designed with restraint.

Back to — Case 01

The Design