/manga_clean_arch

Manga app with a feature-first layered clean architecture, generic caching, lazy loading, debouncing, throttling, and adaptive theming.

Primary LanguageDartMIT LicenseMIT

Manga App

Manga app with a feature-first layered clean architecture, generic caching, lazy loading, debouncing, throttling, and adaptive theming. The UI of the app is intentionally kept simple, as my primary objective was to showcase the implementation of clean architecture, generic caching, lazy loading, debouncing, and throttling.

Features

  • Popular Mangas List: The app displays a list of popular mangas. This list is loaded lazily to optimize performance and reduce initial loading times. Additionally, throttling is implemented to minimize consecutive API calls.
  • View Details: Access detailed information about each manga.
  • Favorites: Add and store favorite mangas locally using HiveDB.
  • Search: Find any manga with the search feature. Debouncing technique is used to prevent unnecessary API calls.
  • Adaptive Theme: The app automatically adjusts its theme based on the device's settings and remembers user preferences.

Built With

Preview

Folder Structure

  • "app" folder holds files specific to this particular application.
  • "core" folder contains application-agnostic code that can be reused in other projects.
  • "feature" folder represents the app's feature set. Each feature is divided into subfolders for data, domain, and presentation.

Packages

Run this project

Clone this repository
git clone https://github.com/cem256/manga_clean_arch
Go to the project directory
cd manga_clean_arch
Get all the packages
flutter pub get
Execute these scripts in the terminal
sh scripst/build_runner.sh
sh scripts/localization.sh
Run the project