{"id":32784679,"url":"https://github.com/m4700f/cinematch","last_synced_at":"2026-04-14T04:03:44.995Z","repository":{"id":322223919,"uuid":"1088595374","full_name":"M4700F/CineMatch","owner":"M4700F","description":null,"archived":false,"fork":false,"pushed_at":"2025-11-03T09:49:25.000Z","size":7090,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-03T10:16:32.265Z","etag":null,"topics":["fastapi","flutter","spring-boot","supabase"],"latest_commit_sha":null,"homepage":"","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/M4700F.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-03T07:30:00.000Z","updated_at":"2025-11-03T09:49:29.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/M4700F/CineMatch","commit_stats":null,"previous_names":["m4700f/cinematch"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/M4700F/CineMatch","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/M4700F%2FCineMatch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/M4700F%2FCineMatch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/M4700F%2FCineMatch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/M4700F%2FCineMatch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/M4700F","download_url":"https://codeload.github.com/M4700F/CineMatch/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/M4700F%2FCineMatch/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":282745088,"owners_count":26720200,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-05T02:00:05.946Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fastapi","flutter","spring-boot","supabase"],"created_at":"2025-11-05T02:00:44.552Z","updated_at":"2025-11-05T02:02:05.404Z","avatar_url":"https://github.com/M4700F.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🎬 CineMatch\n\n\u003cdiv align=\"center\"\u003e\n\n**A comprehensive movie recommendation platform with intelligent AI-powered suggestions**\n\n[![Flutter](https://img.shields.io/badge/Flutter-02569B?style=for-the-badge\u0026logo=flutter\u0026logoColor=white)](https://flutter.dev)\n[![Spring Boot](https://img.shields.io/badge/Spring_Boot-6DB33F?style=for-the-badge\u0026logo=spring-boot\u0026logoColor=white)](https://spring.io/projects/spring-boot)\n[![FastAPI](https://img.shields.io/badge/FastAPI-009688?style=for-the-badge\u0026logo=fastapi\u0026logoColor=white)](https://fastapi.tiangolo.com)\n[![PostgreSQL](https://img.shields.io/badge/PostgreSQL-316192?style=for-the-badge\u0026logo=postgresql\u0026logoColor=white)](https://www.postgresql.org)\n[![Supabase](https://img.shields.io/badge/Supabase-3ECF8E?style=for-the-badge\u0026logo=supabase\u0026logoColor=white)](https://supabase.com)\n\n\u003c/div\u003e\n\n---\n\n## 📖 Overview\n\nCineMatch is a full-stack movie recommendation platform that combines modern mobile development with powerful backend services to deliver personalized movie suggestions. The app features AI-powered mood-based recommendations powered by Google Gemini, intelligent chatbot integration, and a seamless user experience across devices.\n\n## ✨ Key Features\n\n### 🔐 User Management\n- Secure authentication and authorization using JWT\n- Personalized user profiles\n- Custom watchlist management\n\n### 🎥 Movie Discovery\n- Browse extensive movie database powered by MovieLens Dataset\n- Detailed movie information\n- Search and filtering\n- User rating system\n\n### 🤖 AI-Powered Recommendations\n- **Mood Discovery**: Get movie suggestions based on your current mood using Google Gemini AI\n- **Neural Network Engine**: FastAPI-powered recommendation algorithm\n- **Chat Integration**: AI chatbot for movie-related queries and personalized suggestions\n\n### 🎨 User Experience\n- Personalized Recommendation based on genre preferences\n- Smooth carousel displays\n- Responsive UI design\n\n## 🛠️ Technology Stack\n\n### Frontend\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cb\u003eFramework\u003c/b\u003e\u003c/td\u003e\n\u003ctd\u003eFlutter (Dart)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cb\u003eState Management\u003c/b\u003e\u003c/td\u003e\n\u003ctd\u003eRiverpod\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cb\u003eNavigation\u003c/b\u003e\u003c/td\u003e\n\u003ctd\u003ego_router\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cb\u003eAPI Communication\u003c/b\u003e\u003c/td\u003e\n\u003ctd\u003ehttp\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cb\u003eLocal Storage\u003c/b\u003e\u003c/td\u003e\n\u003ctd\u003eshared_preferences\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n\n### Backend\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cb\u003eMain Framework\u003c/b\u003e\u003c/td\u003e\n\u003ctd\u003eSpring Boot (Java 21)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cb\u003eML Service\u003c/b\u003e\u003c/td\u003e\n\u003ctd\u003eFastAPI (Python)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cb\u003eDatabase\u003c/b\u003e\u003c/td\u003e\n\u003ctd\u003ePostgreSQL via Supabase\u003cbr\u003eH2 Database (Testing)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cb\u003eSecurity\u003c/b\u003e\u003c/td\u003e\n\u003ctd\u003eSpring Security + JWT\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cb\u003eExternal APIs\u003c/b\u003e\u003c/td\u003e\n\u003ctd\u003eTMDB API, Google Gemini AI\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n## 🏗️ Architecture\n\nCineMatch follows a clean, scalable microservices architecture with clear separation of concerns:\n\n### System Architecture\n![System Architecture](assets/system-architecture.png)\n\nThe system consists of three main components:\n- **Flutter Frontend**: Mobile application with Riverpod state management\n- **Spring Boot Backend**: Main API server handling business logic and data persistence\n- **FastAPI ML Service**: Neural network-powered recommendation engine\n\n### Database Schema\n![Database Schema](assets/database-schema-supabase.png)\n\nOur PostgreSQL database (hosted on Supabase) manages:\n- User profiles and authentication\n- Movie metadata\n- Watchlists and user interactions\n- Ratings\n\n### Neural Network Architecture\n![Neural Network Architecture](assets/neural-network-architecture.png)\n\nThe recommendation engine uses a sophisticated neural network to analyze user preferences to provide accurate movie suggestions tailored to each user.\n\n## 🚀 Getting Started\n\n### Prerequisites\n- Flutter SDK (latest stable version)\n- Java 21 JDK\n- Python 3.8+\n- PostgreSQL database (Supabase account)\n- Android Studio / VS code(for mobile development)\n- API Keys: TMDB API key, Google Gemini API key\n\n### Backend Setup (Spring Boot)\n\n```bash\ngit clone https://github.com/M4700F/CineMatch.git\n\ncd CineMatch/backend/springboot\n\n# Create .env file or set environment variables\n# See Environment Configuration section below\n\n./mvnw spring-boot:run\n```\n\n### ML Service Setup (FastAPI)\n\n```bash\ncd CineMatch/backend/fastapi\n\npip install -r requirements.txt\n\n# On Windows:\n.venv\\Scripts\\activate\n# On macOS/Linux:\nsource .venv/bin/activate\n\npython main.py\n```\n\nThe FastAPI service will be available at `http://localhost:8001`\n\n### Frontend Setup\n\n```bash\n\ncd CineMatch/frontend\n\nflutter pub get\n\n# Install any emulator from Android Studio\n# Run the application on emulator\nflutter run -d emulator-5554\n\n# For web\nflutter run -d chrome\n```\n\n### Environment Configuration\n\nCreate environment variables or `.env` file for the Spring Boot backend:\n\n```properties\n# Database Configuration (Supabase PostgreSQL)\nDB_URL=your_supabase_postgresql_url\nDB_USERNAME=your_database_username\nDB_PASSWORD=your_database_password\n\nJWT_SECRET=your_jwt_secret\n\n# TMDB API Configuration\nTMDB_API_KEY=your_tmdb_api_key\nTMDB_API_URL=https://api.themoviedb.org/3\n\n# Google Gemini AI Configuration\nGEMINI_API_KEY=your_gemini_api_key\nGEMINI_URL=https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent\n\n# FastAPI Service URL\nFASTAPI_URL=http://localhost:8001\n```\n\n**Getting API Keys:**\n- **TMDB API**: Register at [themoviedb.org](https://www.themoviedb.org/settings/api)\n- **Google Gemini**: Get your API key from [Google AI Studio](https://aistudio.google.com/app/u/1/api-keys)\n- **Supabase**: Create a project at [supabase.com](https://supabase.com)\n\n📱 Screenshots\n\u003cdiv align=\"center\"\u003e\n🏠 Home \u0026 Discovery\n\u003cp\u003e\n  \u003cimg src=\"assets/Home.png\" alt=\"Home Screen\" width=\"250\"/\u003e\n  \u003cimg src=\"assets/For You.png\" alt=\"For You Recommendations\" width=\"250\"/\u003e\n  \u003cimg src=\"assets/Search.png\" alt=\"Search\" width=\"250\"/\u003e\n\u003c/p\u003e\n🎭 AI-Powered Features\n\u003cp\u003e\n  \u003cimg src=\"assets/Mood Discovery.png\" alt=\"Mood Discovery\" width=\"250\"/\u003e\n  \u003cimg src=\"assets/Gemini AI.png\" alt=\"Gemini AI Chat\" width=\"250\"/\u003e\n  \u003cimg src=\"assets/Genre.png\" alt=\"Genre\" width=\"250\"/\u003e\n\u003c/p\u003e\n👤 User Features\n\u003cp\u003e\n  \u003cimg src=\"assets/Favourites.png\" alt=\"Favourites\" width=\"250\"/\u003e\n  \u003cimg src=\"assets/Profile.png\" alt=\"Profile\" width=\"250\"/\u003e\n\u003c/p\u003e\n\u003c/div\u003e\n\n## 🎯 Roadmap\n\n- [ ] Social features (follow friends, share recommendations)\n- [ ] Integration with streaming platforms\n- [ ] Movie release notifications\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Contributors\n\n**Maroof Ahmed**\n- GitHub: [M4700F](https://github.com/M4700F)\n- [LinkedIn](https://www.linkedin.com/in/maroof-ahmed-a472b3282/)\n\n**Syed Huzzatullah Mihad**\n- GitHub: [mihadcse](https://github.com/mihadcse)\n- [LinkedIn](https://www.linkedin.com/in/mihadcse/)\n\n**Faiyaz Abrar**\n- GitHub: [fazzyboo](https://github.com/fazzyboo)\n- [LinkedIn](https://github.com/fazzyboo)\n\n## Acknowledgments\n\n- Movie data provided by [MovieLens](https://grouplens.org/datasets/movielens/)\n- AI services powered by [Google Gemini](https://deepmind.google/technologies/gemini/)\n- Database hosting by [Supabase](https://supabase.com)\n- Icons and assets from the Flutter community\n\n---\n\n## Notes\n\nThe backend was hosted on `railway` but due to limited credit it has been stopped. The MovieLens dataset has to be manually uploaded. All the codes are given in the backend/fastapi directory.\n\n\n**⭐ Star this repository if you find it helpful!**\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm4700f%2Fcinematch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fm4700f%2Fcinematch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm4700f%2Fcinematch/lists"}