Movie Mania Browser (MMB) is a robust, scalable Flutter application designed to provide a seamless movie discovery experience. Built with Clean Architecture principles, MMB fetches real-time data from the TMDB API to allow users to explore popular films, search for favorites, and manage a local watchlist.
This project demonstrates modern Android/iOS development practices, including separation of concerns, dependency injection via Riverpod, and offline caching with Floor.
- Popular Movies: Fetches and displays a curated list of popular movies from the TMDB API with seamless infinite scrolling (pagination).
- Smart Search: Instantly find specific movies by title or keyword.
- Persistent Watchlist: Users can save movies to a local watchlist using Floor database, allowing access to favorites even when offline.
- Rich Media: View high-resolution posters, synopses, cast details, and watch trailers directly within the app.
- Responsive Design: A polished UI that adapts to different screen sizes.
MMB is built using the Clean Architecture pattern to ensure the codebase remains testable, maintainable, and scalable. The app is divided into three distinct layers:
- Responsibility: Manages the UI and user interactions.
- State Management: Utilizes Riverpod to manage state reactively and separate business logic from UI widgets.
- Responsibility: Contains the business logic, Entities, and Use Cases.
- Independence: This layer is completely isolated from external libraries, frameworks, or data sources.
- Responsibility: Handles data retrieval and storage.
- Components:
- Remote: Uses Chopper for efficient API communication with TMDB.
- Local: Uses Floor (SQLite abstraction) for caching and persisting the watchlist.
- Models: Handles JSON serialization/deserialization via
json_serializable.
| Category | Technology | Description |
|---|---|---|
| Core | Flutter | UI Toolkit for building natively compiled applications. |
| State Management | Riverpod | A reactive caching and data-binding framework. |
| Networking | Chopper | HTTP client generator for Dart. |
| Local Storage | Floor | A clear and concise SQLite abstraction for Flutter. |
| Serialization | json_serializable | Automates JSON serialization code. |
| Pagination | infinite_scroll_pagination | Lazily load and display data in chunks. |
To get a local copy up and running, follow these simple steps.
git clone https://github.com/EngFred/Movie-Mania-Browser
cd mmb-
Open the Project: Open the project in your preferred IDE (e.g., VSCode, Android Studio).
-
Install Dependencies:
flutter pub get
-
Configure TMDB API Key:
- Obtain an API key from TMDB.
- Add the API key to your project (e.g., in a
.envfile or directly in the code).
-
Build and Run:
- Run the app on an emulator or a physical device:
flutter run
- Run the app on an emulator or a physical device:
- Browsing Movies: Navigate through the list of popular movies, with automatic pagination as you scroll.
- Searching Movies: Use the search feature to find specific movies by title.
- Adding to Watchlist: Add movies to your watchlist for easy access later.
- Viewing Details: Click on a movie to see detailed information and watch trailers.
This project is licensed under the MIT License - see the LICENSE file for details.
- Special thanks to TMDB for providing access to their extensive movie database.
- Thanks to the Flutter community for their contributions and support.
- Inspired by clean architecture principles to create a maintainable and scalable application.
Explore the world of movies with MMB! Discover popular films, keep track of your watchlist, and enjoy a seamless movie-browsing experience.
