This is a submission for the GitHub Finish-Up-A-Thon Challenge
What I Built
I built Cineverse, a cinematic movie discovery app powered by the TMDB API. It allows users to:
- 🎬 Browse trending and popular movies
- 🔍 Search for any movie by title
- 📖 View detailed movie info (ratings, overview, release date)
- ❤️ Save favorites and manage a personal watchlist
- 👤 Create an account and sync data across devices
- 🛡️ Admin dashboard with role-based access control
The app is built with Flutter, backed by Firebase Authentication and Cloud Firestore, and designed with a premium dark cinematic theme.
Demo
🔗 GitHub Repository: github.com/Ali23102001/cineverse_app
Key Features in Action
| Feature | Description |
|---|---|
| 🔐 Login & Register | Email/Password + Google Sign-In via Firebase Auth |
| 📧 Email Verification | New users must verify their email before accessing the app |
| 🏠 Home Screen | Trending movies fetched live from the TMDB API |
| 🔍 Search | Real-time movie search with beautiful result cards |
| 🎬 Movie Details | Full movie info with backdrop images, ratings, and overview |
| ❤️ Favorites & Watchlist | Cloud-synced via Firestore — accessible from any device |
| 👤 Profile | User profile with sign-out and account management |
| 🛡️ Admin Dashboard | Restricted to admin email only, with automatic redirect for unauthorized users |
The Comeback Story
❌ Before: The Abandoned Prototype
Cineverse started as a basic Flutter project — a simple movie browsing app with:
- Local storage for everything (no cloud, no sync)
- No real authentication system
- No user accounts, favorites, or watchlists
- Constant crashes on Android due to misconfigured build files
- Just a skeleton that looked okay but didn't work as a real app
I abandoned it because the jump from "local prototype" to "production-ready app" felt overwhelming. Firebase configuration, platform-specific issues, authentication flows... it was too much to tackle at the time.
✅ After: The Finished Product
When the GitHub Finish-Up-A-Thon Challenge dropped, I knew this was the one. Here's everything I changed:
🔥 Firebase Authentication — Completely replaced local storage auth with Firebase. Users can now sign up with Email/Password or Google Sign-In, with full email verification flow.
☁️ Cloud Firestore Integration — User profiles, favorites, and watchlists are stored in Firestore and sync across all devices in real-time.
🛡️ Admin Dashboard — Built a secure admin panel restricted by email-based role checking. Unauthorized users get automatically redirected to the home screen.
🔧 Platform Fixes — Resolved deep Android build crashes (
build.gradle.kts,AndroidManifest.xml) and Web configuration issues that were preventing Firebase from initializing properly.🎨 Polished UI — Refined the splash screen, navigation shell, and overall theme to feel premium and cinematic.
📧 Email Verification Screen — Added a dedicated verification flow so users can't access the app without confirming their email first.
The app went from a broken prototype to a fully functional, cloud-synced movie discovery platform.
My Experience with GitHub Copilot
GitHub Copilot was instrumental in finishing this project. Here's specifically how it helped:
🚀 Firebase Boilerplate
Setting up firebase_auth, google_sign_in, and cloud_firestore involves a LOT of repetitive setup code. Copilot auto-completed entire authentication service methods — sign in, sign up, sign out, email verification — saving me hours of typing and documentation-checking.
🔧 Platform Configuration Hell
The hardest part of reviving Cineverse was fixing Android and Web platform configs. Copilot helped me:
- Fix the
build.gradle.ktsKotlin DSL syntax for Firebase plugins - Configure the correct
AndroidManifest.xmlintent filters for Google Sign-In - Set up
firebase_options.dartwith the right project configuration
🛡️ Access Control Logic
When I needed to restrict the Admin Dashboard to a specific admin email, Copilot immediately suggested the pattern: check FirebaseAuth.instance.currentUser?.email on screen load, and redirect unauthorized users using Navigator.pushReplacement. Clean and effective.
🧭 Navigation & State Management
Copilot helped me refactor the app's navigation from simple push/pop to a proper shell-based layout with a bottom navigation bar, ensuring smooth transitions between Home, Search, Favorites, Watchlist, and Profile screens.
Bottom line: Copilot turned what would have been a multi-week slog through Firebase docs into a focused, productive revival. It felt like pair-programming with someone who already knew the entire Firebase + Flutter ecosystem by heart.
Built with ❤️ using Flutter, Firebase, and GitHub Copilot










