Moovie is an Android application that helps people discover films, track their watchlists and favorites, view interactive analytics, and explore nearby cinema locations.
Is based on a Offline-First architecture, Moovie keeps all user data immediately available locally via Room and Preferences DataStore, while synchronizing changes to a remote Supabase database.
- 🌐 Dynamic TMDB Scraping: Seamlessly browse and search movies using the TMDB API.
- 🔄 Real-time Cloud Sync: Synchronize user datas with Supabase.
- 🗺️ Cinema Explorer: Interactive Maps showing nearby movie theaters and their details.
- 📊 Interactive Analytics: Data visualization showing movie tracking stats. with custom canvas
- 🏆 Social Leaderboard: A gamified screen showing top Moovie community members with podium.
- 🔒 Biometric Security: Safeguard your app content with an optional biometric lock.
- 🎨 Premium Visuals: Custom theme and in-app notification banners.
- UI Framework: Jetpack Compose (100% Declarative UI)
- Dependency Injection: Koin
- Local Persistence:
- Room Database (Movies catalog, favorites, watchlist cache)
- Preferences DataStore (App settings, themes, language, biometric lock flag)
- Network & API:
- Ktor (HTTP requests)
- Supabase Kotlin SDK v3.0+ (Authentication, PostgreSQL Database, Cloud Storage)
- Location & Mapping: Google Maps SDK for Android & Fused Location Provider
- Image Loading: Coil (with cache-busting implementation)
- Security: Jetpack Biometric library
Tip
For a detailed, visual overview of the application architecture, data flow diagrams, and offline-first synchronization strategy, check the Technical Architecture Documentation.
- Android Studio.
- A Google Maps SDK for Android Api Key.
- A TMDB API Key.
- A Supabase Project URL and Public Anon Key.
Create a local.properties file in the root of the project and define your keys:
# TMDB API Configuration
TMDB_API_KEY=YOUR_TMDB_API_KEY
# Maps SDK for Android
MAPS_API_KEY=YOUR_GOOGLE_MAPS_API_KEY
# Supabase Client Configuration
SUPABASE_URL=https://YOUR_PROJECT_ID.supabase.co
SUPABASE_KEY=YOUR_SUPABASE_PUBLIC_ANON_KEYClone the project, sync the Gradle configuration, and deploy to your Android device or emulator:
./gradlew assembleDebugHere is a glimpse of the app interface:
| Home & Mood Discovery | User Settings | Leaderboard Podium |
|---|---|---|
![]() |
![]() |
![]() |
This project is licensed under the MIT License - see the LICENSE file for details.



