Inspiration
Video is one of the most reliable sources of calm and focus for many people with autism and intellectual or developmental disabilities. The open platforms it usually lives on are not calm. Search, recommendations, autoplay, and comments pull a viewer somewhere new every few seconds, so a family member or support staffer ends up hovering over every session. Cubby started from a simple idea: let a trusted adult decide what is in the library, and let the viewer watch freely inside those walls.
What it does
An account admin builds a library of approved videos and playlists, organized per viewer profile. The viewer opens the app to only that library. There is no YouTube search (a viewer can only search their own approved library), no recommended row, no autoplay to an unknown next video, and no path out to the open web. Roles are explicit: Admin owns the account, a Curator can add to their own library, and a Viewer only watches. It runs on iOS, Android, and the web on one shared account.
How we built it
Vite, React, and TypeScript, wrapped with Capacitor for iOS and Android. Supabase for auth, database, and edge functions. YouTube Data API v3 for the video catalog. RevenueCat Web Billing on our own Stripe for the Family subscription on the web, with the iOS app intentionally kept as a sign in and watch reader so accounts and payments live on the web. A Supabase edge function receives RevenueCat webhooks and writes the entitlement to the account.
How we use RevenueCat
RevenueCat Web Billing powers the Family subscription purchase on the web and syncs the entitlement back to the app, so one answer to "is this account Family?" holds across iOS, Android, and web. It replaces the per-platform entitlement logic we were maintaining by hand and gives us subscription analytics without building a pipeline. We stay the merchant of record on our own Stripe.
The flow: an admin taps Upgrade to Family plan on the web, pays in RevenueCat Web Billing's checkout, RevenueCat sends the event to our Supabase webhook, and the account reads Family on every device. It went live in production on September 29, 2026. In our first production purchase, the entitlement reached the account about six seconds after checkout.
Challenges we ran into
Apple's reader model means iOS can never show a price or an upgrade path, so every purchase happens on the web while the entitlement still has to reach the iOS app right away. Keeping the experience genuinely locked down, with no accidental door to the open web, took as much design work as the features people can see.
Accomplishments that we're proud of
A shipping product on the App Store with a real, constrained viewing experience, plus a web and Android footprint that share one account and one subscription, now unified through RevenueCat.
What we learned
Constraint is the feature. For this audience the value is in what the app refuses to do.
What's next for Cubby
Complete the Android production launch and keep deepening the sensory and accessibility controls in the player.


Log in or sign up for Devpost to join the conversation.