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

Top comments (0)