The problem
Screen advertising platforms are built for large operators. The bar, barbershop or gym with one TV showing a screensaver has no way to sell that time, and the local business down the street has no way to buy it without an enterprise media deal.
Approach
- A two-sided marketplace: owners pair a screen they already have and set availability and price; advertisers find nearby screens on a map, upload a creative and book slots.
- No hardware. The player installs on existing screens, so supply grows without shipping devices.
- The screen owner is the merchant of record. Payment is a Stripe Connect direct charge to the owner, the owner keeps 80% of the screen-time price and the platform 20%, and card processing is a separate line paid by the advertiser, so the owner's share is not eroded by fees.
- Every creative is moderated before it can play.
Architecture
- React 18 and Vite web app with statically prerendered public routes, a Capacitor build of the owner dashboard for iOS and Android, and Supabase Postgres, Auth, Storage and edge functions behind it.
- One player across web, Android TV, Fire TV, Roku, Samsung Tizen, LG webOS, tvOS and Windows. Every player runs the same hour plan, reports each play and its liveness, and fades through black between items.
- Packaged players update their own bundle and roll back if a new one is bad, so a fleet of screens can be updated remotely.
- Every edge function passes through an auth gate and logs through a shared structured logger. A watchdog alerts when Stripe webhooks go quiet.
What shipped
- Screen pairing, availability and pricing, and an owner home with earnings and proof of play.
- An advertiser booking wizard with map discovery, creative upload, promo codes, and delivery in the hour that was bought.
- Booking lifecycle and notifications: either party can call a booking off until it plays, and refunds, disputes and creative decisions reach the right inbox.
- House content for idle time, with day-parting and an owner-tunable split.
- PayPal alongside Stripe as a first-class payout rail, and store submission prepared for all six TV-platform apps.
By the numbers
- Screen platforms
- 8
- Edge functions
- 130
- Passing tests
- 7,450
Stack
React 18SupabaseStripe ConnectMapLibre GLCapacitorTV apps
Building something like this?
Tell us what you're working on and we'll tell you honestly whether we're the right team for it.
Start a conversation