Three native clients, one backend
A Next.js 16 / React 19 web app, a Kotlin + Jetpack Compose Android app and a SwiftUI iOS app share the same API and Supabase Postgres database. The OpenAPI contract is generated from zod schemas, so the mobile clients stay in step.
Security by design
All writes go through the API with validation and permission checks, and the database rejects direct client writes. Reads use row-level security, so you only see your own groups.
Production in Mumbai
The API and database moved from Sydney and the US to Mumbai with zero data loss, to sit close to Indian users. Skeleton screens and instant tap feedback mean the app is never blank.
Sign-in on locked-down networks
Corporate DNS filters blocked Firebase’s default sign-in domain, so sign-in now runs through GameDay’s own domain via a proxy, with no change for users.
Scheduled jobs
Postgres cron runs kickoff reminders, day-poll follow-ups and payment nudges every 15 minutes.
Analytics without location
Product analytics are recorded server-side for every platform, with crash reporting in the apps. IP-based location lookup is turned off everywhere.
Tested across platforms
A separate staging database, Playwright end-to-end tests in the browser, and Android emulators and the iOS simulator driven by UI automation against staging.
Release pipeline
Vercel deploys from GitHub Actions, signed Android App Bundles with Play App Signing, and versioned GitHub releases.