/Mova

Movie App with Flutter, designed to demonstrate the implementation of clean architecture and BLoc pattern.

Primary LanguageDart

Mova

movie app demonstrates how the clean architecture and BLoC pattern can be used to build a robust and scalable mobile application that can handle multiple APIs with different endpoints. It showcases how the separation of concerns, reactive programming, and modularization can simplify complex development tasks and make code easier to maintain and extend.

Warning
Execution will Stop due to the huge size of the clean architecture it's not fitting to complete the project, but this amount is more than enough for educational purposes 🙏

Features ✨

There is 3 section here with 3 different colors :

  • 🟩 Implemented Features:

    • Now Playing : Provides users with real-time information about currently playing movies(90%)
    • Top Rated : Displays a curated list of the highest-rated movies based on user ratings, critics' reviews, and popular demand(100%)
    • Upcoming : Showcases a list of upcoming movie releases, allowing users to stay updated on the latest releases, release dates, and movie details.(100%)
    • Details : Provides comprehensive details about a specific movie based on its unique ID. Users can access information such as genres, runtime, cast and crew, ratings, and reviews for a particular movie. (100%)
    • cast: Allows users to view information about the cast and crew of movies.(100%)
  • 🟥 Features in Progress:

  • ⬛ Known Features:



Techniques used 🛠️

preview
  • Minimum SDK level 21
  • Architecture
    • Clean Architecture (Presentation layer - Data layer - Domain layer)
    • Repository pattern
    • Singleton pattern
  • Bloc - used for state management, implements the BLoC for managing app logic and state.
  • Equatable - used for comparing objects in Dart/Flutter by overriding the hashCode method to check for equality.
  • Get It - handles dependency injection/management.
  • Dartz - used for functional programming in Dart, provides tools for working with immutable data, performing side-effects, and handling errors using Either and Option types.
  • Dio - used for making HTTP requests.
  • Flutter Screen Util - used for responsive design in Flutter apps, provides a simple way to scale UI elements and layouts based on the device's screen size and pixel density using a set of utility functions and classes.
  • Cached Network Image - user for automatically caches and displays images from a URL.
  • google_fonts - provides a set of free and open-source fonts from the Google Fonts library.
  • carousel_slider - simple customizable widget for displaying a sequence of images.
  • Shimmer - used for creating loading or placeholder animations.