Forj is a mobile dating app I built over 4 months with one collaborator: 28,000+ lines of strict TypeScript across ~34 screens, shipped as signed release builds for both iOS and Android.
The app covers the full surface of a modern dating product:
Sign-in with Google, Apple, and LinkedIn (native SDKs for Google/Apple, OAuth code flow for LinkedIn), all verified server-side
A swipe-based discovery feed with gesture-driven cards, tap and pan race in parallel, 3D perspective exit animations, three swipe directions, and a direction-aware undo
Real-time chat over Socket.IO with optimistic sending, acknowledgment timeouts, read receipts, and typing indicators
Voice calls powered by Agora RTC, with a minimized-call banner that keeps the call alive while you use the rest of the app
Native in-app purchases via StoreKit 2 and Play Billing, with server-side receipt verification before any transaction is finalized
Selfie-based identity verification, super likes, server-enforced daily swipe limits, and premium gating
Push notifications with Firebase Cloud Messaging handling transport and Expo Notifications handling presentation and action buttons
Over-the-air updates with a staged percentage rollout, so fixes reach users without waiting on store review
Store assets
Results
Signed release builds shipped for both iOS and Android, built to store-submission standard (including a reviewer login path)
Calls survive navigation, backgrounding, and notification-based answering without dropping or resetting state
Zero client-side trust in sensitive logic; swipe quotas, matches, and payments are all server-authoritative
Hotfixes deployable to a controlled percentage of users without store review
Reflection
The biggest lesson: the boring choice is often the right one. Pinning chat to long-polling instead of WebSockets eliminated an entire class of proxy failures. Verifying build artifacts instead of trusting the build system caught a bug that would have shipped the wrong backend to users. Production readiness isn't a feature you add; it's a hundred small decisions about what can fail, and what happens when it does.
Developed a professional dating app with advanced features for iOS and Android. Forj is a mobile dating app I built over 5 months with one collaborator.