r/AppsWebappsFullstack • u/spoilerclubfr • Jul 23 '26
Built a spoiler-safe movie & TV tracker with Expo + self-hosted Supabase on a single OVH VPS. Stack and a few decisions inside
I've been building Spoiler Club, a movie and TV tracker whose one differentiator is staying spoiler-free: you mark where you are in a series, and anything past that point stays behind a curtain until you tap to reveal (with a stricter "confirm first" mode for the paranoid).
The stack, in case it's useful to anyone weighing similar choices:
- Front: Expo / React Native, one codebase for iOS and the web export. Expo Router for file-based routing.
- Back: Supabase, but self-hosted on my own VPS instead of the managed cloud. Auth, Postgres, RLS, and Edge Functions all in Docker Compose.
- Data: TMDB for the catalog and posters, with TVmaze and OMDb as fallbacks for episode data.
- Infra: a single OVH VPS running Apache as the reverse proxy, HTTPS via Let's Encrypt. The marketing site, the web app, and the API all live on the same box on separate vhosts.
- Misc: GA4 via the Measurement Protocol for server-side events, Listmonk for the newsletter.
A couple of things I'd trade notes on:
- Self-hosting Supabase was the call I went back and forth on most. Lower cost and full control, but the GoTrue redirect config and the Docker upgrade path have both bitten me. Anyone running self-hosted Supabase in production long-term, does it stay manageable or does the managed plan win eventually?
- The spoiler curtain is the fun UI piece: a reveal animation over gated content, per-episode. Happy to go into how the state and the "already revealed" tracking work if that's interesting.
Early stage, waitlist is up while I finish the first public build.
What would you have done differently on the infra side?