Inspiration
I don't think this should be sounding like an inspiration, but since I started paying for subscription services, sometimes I get little surprises in my bank statement. And I'm not just talking about the streaming ones. I mean, most of the time that's because of that streaming service I forgot to cancel. But then I get myself thinking: "yup, that service I subscribed 3 months ago for watching an 8-episode TV Show that weekend...".
Why am I paying for that? Well, we have so much amazing content scattered across so many apps that it's hard to keep track of what to watch, where to watch, when to watch. I wanted to build a "unified control center" for entertainment. A single place where users could truly organize their watchlists and plan their viewing schedule efficiently, instead of getting lost in the noise.
Also, I noticed that, having access to everything often leads to spending more time scrolling than actually watching. My final goal was also to solve this decision fatigue, making sure users could be able to curate a high-intent watchlist and plan their viewing month-by-month.
What it does
I would call this app as an intelligent logistics engine for entertainment. It consolidates watchlists from every platform into a single unified dashboard. Then, it organizes your optimized viewing calendar for each month. It tells you when to activate specific subscriptions to match your viewing schedule, ensuring users are always engaging with active content rather than paying for unused services.
How I built it
I built this app using React Native 0.81 + Expo 54 + TypeScript. In terms of data, this uses Supabase PostgreSQL for storing user data, the native Authentication system from Supabase and also To prioritize User Experience, I built a hybrid offline-first architecture. The app leverages persistent local storage to load user data instantly and to run smoothly. Simultaneously, the system connects to a Supabase backend: there are processes running in the background that synchronize the local data with the cloud database. This allows me to maintain a 'single source of truth' for cross-device consistency.
Challenges I ran into
One of the biggest challenges here was with the hybrid approach storage. I needed to keep track of object changes so that the app could feel lively and show always the updates information to its users. I also needed to decide what sections and widgets to refresh on each action, and to reflect about those re-renders as a downside to my app's performance. Another big challenge I faced during the development was on the gestures widget for "Start Watching" in Home: I needed to make sure that the actions could be triggered in real time as the user swipes in a new content, and also maintain the visual animation of the slide gesture running smoothly.
Accomplishments that we're proud of
The absolute highlight was the moment the scheduling algorithm worked for the first time. That showed me what I had on my mind, and it actually works like a charm when the streaming availability is provided. Taking a chaotic input of random movies and TV Shows and having the code successfully sort them into a coherent, optimized monthly plan felt like magic. It validated the entire concept.
What we learned
I learned that when you move away from "fetch-on-render" to synchronizing in the background, state management is an absolute key. All this makes things significantly harder to implement and maintain, but the fast User Experience I get when I use the app is really worth the effort.
What's next for StreamScribe
One of the first things I would try to make more robust is the Streaming Availability. The app could have some sort of feature so that users could gain reputation points (or Achievements!) by contributing to "feeding" the app manually with this data. Another feature I would love to see working would be the social part of this app. This app would be perfect with a Social Watchlist. Imagine having the possibility of merging your watchlists with your friends and family? Say goodbye to having no one to discuss the crazy last episode with. An annual retrospective would also be a very valuable feature for users, since it could focus on their viewing habits, while also serving as a good place to show the real value this app adds.
Built With
- expo-go
- postgresql
- rapidapi
- react-native
- supabase
- typescript
Log in or sign up for Devpost to join the conversation.