I'm Wasey, a solo developer from Varanasi, India. I just graduated with a B.Tech in CS and instead of job hunting, I spent the last 18 months building DramaHub — a fully live OTT streaming app on Google Play Store.
Current stats:
📦 7,000+ downloads
👥 1,000+ daily active users
💰 ₹0/month infrastructure cost
💥 Sub-1% crash rate
Here's the honest story of how I built it and what nearly broke it.
The Architecture
I had zero budget for servers. So I made GitHub the database. All drama content, episode metadata, and app config live as JSON files in a GitHub repository. A Cloudflare Worker sits in front and caches everything at the edge globally. Free. No backend server needed.
The admin panel is a Flutter Web app that talks directly to the GitHub REST API. I can add dramas, change episode links, toggle ads, switch CDN providers, force update users — all without releasing a single APK update.
The Crash That Taught Me Everything
One day the app went completely down. Every user got a crash on launch.
The reason: my Cloudflare Worker wasn't caching properly. Every request was hitting GitHub directly and I burned through the API rate limit in minutes. App dead.
I fixed the Worker caching properly. Then I added a full backup system — if the primary API ever goes down, I can switch to a direct GitHub raw URL or a backup Worker from the admin panel in under 60 seconds. No new APK release needed. I built that entire system in one night after the crash.
The YouTube Problem
YouTube's embedded player works perfectly on web but breaks inside Flutter apps. I solved it by building a WebView-based player inside the app with custom controls and a URL whitelist. Later I added a remote config toggle — if any player causes issues, I can switch the entire app to a different player from the admin panel instantly. DramaHub runs a dual player system — YouTube WebView as primary, custom player with Cloudflare R2 as secondary. No APK update needed.
The Ads Problem
Integrating CAS.ai SDK was painful — some adapters weren't initializing properly and caused crashes. Fixed it by isolating each adapter, testing one by one, and adding fallback logic. Now ads are fully remote-controlled — per screen toggles, session caps, cooldown timers, all via JSON config.
What I Learned
Build your admin panel first. The ability to change anything without a new release saved me dozens of times. Remote config is not a feature — it's survival.
Also — GitHub as a database actually works at production scale if you architect the caching layer correctly. Don't let anyone tell you it's a hack.
What's Next
I also built NetworksInsights — a live B2B SaaS platform (affiliate network directory, G2/Trustpilot model). 12-table PostgreSQL, 87-issue security audit completed. That's my next focus.
Happy to answer any questions about the zero-cost architecture, Flutter production patterns, or the GitHub-as-database system.
— Wasey
🔗 Portfolio: waseyjamal.vercel.app
🔗 Play Store: https://play.google.com/store/apps/details?id=com.dramahub.drama_hub
🔗 GitHub: github.com/waseyjamal
🔗 Twitter: @waseybuilds