Live sports debates app with real-time audio and video
A mobile app where fans debate sports live, by voice and video, on AI-generated topics, with coins, ratings and paid products. I built the React Native app and its Supabase backend: real-time rooms on Agora, debate stages run by edge functions, AI topics and moderation, and Stripe payments.
The problem
The idea: let sports fans debate live, by voice and video, on fresh AI-generated topics, with coins, ratings and leaderboards.
A live debate has stages and several people in a room, so the backend has to start, advance and finish debates reliably.
What I did
- Built the React Native app: live debates by voice and video on Agora, with cloud recording.
- Built the backend on Supabase: 41 edge functions run the whole debate lifecycle — joining or creating a debate atomically, moving it through stages, a watchdog that unsticks stuck debates, and user ratings.
- Real-time trending debates with Supabase Realtime.
- AI-generated debate topics and moderation of user topics through the Perplexity API, with sports data from TheSportsDB.
- Coins, leaderboards and paid products with Stripe and webhooks.
- Animations in Rive.
Tech stack
- Mobile
- React Native 0.79
- React 19
- TypeScript
- Redux Toolkit
- TanStack Query
- Apollo Client
- React Navigation 7
- Reanimated
- Rive animations
- Real-time
- Agora (voice and video)
- Agora cloud recording
- Supabase Realtime
- Socket.IO
- Backend
- Supabase Postgres
- 41 Supabase Edge Functions
- Tiered data cleanup
- AI & data
- Perplexity API (topics and moderation)
- TheSportsDB
- Payments
- Stripe React Native
- Stripe webhooks
- In-app coins
- Auth & media
- Google Sign-In
- Apple Sign-In
- Keychain
- VisionCamera
- react-native-video with caching
Have a similar problem? Tell me about it.
A few sentences about the business problem are enough to start.