FiveOne
A published iOS and Android dating app built as a four-round elimination game rather than a swipe feed. Past 20,000 downloads, on a React Native client with a real-time NestJS backend.

Overview
FiveOne rejects the infinite-scroll premise most dating apps are built on. A match seats five guys and one girl in a single timed group chat, and across four rounds the group gets smaller until one connection is left. The mechanic is the product: conversation has stakes because elimination is real, and the app is engineered around that — synchronized rounds, live presence, and a chat that several people occupy at once.
The mobile client is bare React Native — no Expo — shipped to both the App Store and Google Play. It carries Firebase authentication with Google and Apple sign-in, push notifications through Firebase Messaging and Notifee, Socket.io for live chat and round transitions, Reanimated for the card and round animations, MMKV and redux-persist for state that survives cold starts, and PostHog with session replay for behavioural analytics.
The backend is a modular NestJS service on Prisma and PostgreSQL, split into the domains the game actually needs: matches and game configuration, wildcards, timed rounds, chat, follows, timeline, notifications, reporting and moderation, login-attempt throttling, media handling, and Gemini-generated conversation prompts. A separate ads-client module wires the app into an in-house ad network alongside AdMob, so monetization is not solely rented from Google.
A Next.js site handles everything the stores require and the app itself cannot: a smart deep link that routes visitors to the right store or opens the installed app, support, privacy policy, terms, and self-service account deletion.
Key Features
- Four-round elimination match engine with server-authoritative timers, so every participant sees the same round state and eliminations cannot be raced client-side
- Real-time group chat over Socket.io with presence, delivery state and reconnect handling on flaky mobile networks
- Wildcard economy — a wildcard skips a player into a semi-final, and 100 wildcards trade up to a Super Wildcard for a direct match with a daily top pick
- Firebase authentication with Google and Apple sign-in, backed by login-attempt throttling and refresh handling on the NestJS side
- Push notifications through Firebase Messaging with Notifee for rich local presentation and scheduling
- Dual monetization: AdMob plus an in-house ad network integrated through a dedicated ads-client module
- Gemini-generated conversation prompts and pickup lines, seeded and moderated rather than free-form model output
- Reporting, blocking and moderation paths required for store review, plus self-service account deletion on the web
- Next.js marketing site with a smart deep link that detects platform and routes to App Store, Play Store, or the installed app
- PostHog analytics with mobile session replay driving retention and round-completion analysis