{"id":22413186,"url":"https://github.com/cem256/manga_clean_arch","last_synced_at":"2025-10-16T23:30:55.341Z","repository":{"id":188293102,"uuid":"666776032","full_name":"cem256/manga_clean_arch","owner":"cem256","description":"Manga app with a feature-first layered clean architecture, generic caching, lazy loading, debouncing, throttling, and adaptive theming.","archived":false,"fork":false,"pushed_at":"2024-07-29T20:18:31.000Z","size":59571,"stargazers_count":79,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-23T07:08:44.433Z","etag":null,"topics":["clean-architecture","dart","flutter","flutter-bloc","hivedb"],"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/cem256.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}},"created_at":"2023-07-15T14:38:00.000Z","updated_at":"2024-12-26T15:41:18.000Z","dependencies_parsed_at":"2024-12-05T14:22:15.136Z","dependency_job_id":null,"html_url":"https://github.com/cem256/manga_clean_arch","commit_stats":null,"previous_names":["cem256/manga_clean_arch"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cem256%2Fmanga_clean_arch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cem256%2Fmanga_clean_arch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cem256%2Fmanga_clean_arch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cem256%2Fmanga_clean_arch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cem256","download_url":"https://codeload.github.com/cem256/manga_clean_arch/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":236752333,"owners_count":19199230,"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","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":["clean-architecture","dart","flutter","flutter-bloc","hivedb"],"created_at":"2024-12-05T14:12:07.396Z","updated_at":"2025-10-16T23:30:48.842Z","avatar_url":"https://github.com/cem256.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Manga App\n\nManga 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.\n\n## Features\n\n- 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.\n- View Details: Access detailed information about each manga.\n- Favorites: Add and store favorite mangas locally using [HiveDB](https://pub.dev/packages/hive).\n- Search: Find any manga with the search feature. Debouncing technique is used to prevent unnecessary API calls.\n- Adaptive Theme: The app automatically adjusts its theme based on the device's settings and remembers user preferences.\n\n## Built With\n\n- [Flutter](https://flutter.dev/)\n- [Dart](https://dart.dev/)\n- [Jikan API v4](https://docs.api.jikan.moe/)\n\n## Preview\n\n\u003cp\u003e\n    \u003cimg src=\"screenshots/preview.gif\" width=\"19%\"/\u003e\n    \u003cimg src=\"screenshots/popular.png\" width=\"19%\"/\u003e\n    \u003cimg src=\"screenshots/detail.png\" width=\"19%\"/\u003e\n    \u003cimg src=\"screenshots/favorites.png\" width=\"19%\"/\u003e\n    \u003cimg src=\"screenshots/search.png\" width=\"19%\"/\u003e\n\u003c/p\u003e\n\n## Folder Structure\n\n- \"app\" folder holds files specific to this particular application.\n- \"core\" folder contains application-agnostic code that can be reused in other projects.\n- \"feature\" folder represents the app's feature set. Each feature is divided into subfolders for data, domain, and presentation.\n\n## Packages\n\n- State Management\n  - [Bloc](https://pub.dev/packages/flutter_bloc)\n- Caching\n  - [Hive](https://pub.dev/packages/hive)\n  - [HydratedBloc](https://pub.dev/packages/hydrated_bloc)\n- Networking\n  - [Dio](https://pub.dev/packages/dio)\n  - [PrettyDioLogger](https://pub.dev/packages/pretty_dio_logger)\n  - [DioSmartRetry](https://pub.dev/packages/dio_smart_retry)\n- Routing\n  - [AutoRoute](https://pub.dev/packages/auto_route)\n- Dependency Injection\n  - [GetIt](https://pub.dev/packages/get_it)\n- JsonParsing\n  - [JsonSerializable](https://pub.dev/packages/json_serializable)\n- Localization\n  - [EasyLocalization](https://pub.dev/packages/easy_localization)\n- Functional Programming\n  - [FpDart](https://pub.dev/packages/fpdart)\n- Logging\n  - [Logger](https://pub.dev/packages/logger)\n- Testing\n  - [Mocktail](https://pub.dev/packages/mocktail)\n  - [BlocTest](https://pub.dev/packages/bloc_test)\n\n### Run this project\n\n##### Clone this repository\n\n```sh\ngit clone https://github.com/cem256/manga_clean_arch\n```\n\n##### Go to the project directory\n\n```sh\ncd manga_clean_arch\n```\n\n##### Get all the packages\n\n```sh\nflutter pub get\n```\n\n##### Execute these scripts in the terminal\n\n```sh\nsh scripst/build_runner.sh\nsh scripts/localization.sh\n```\n\n##### Run the project\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcem256%2Fmanga_clean_arch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcem256%2Fmanga_clean_arch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcem256%2Fmanga_clean_arch/lists"}