Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mahmoodhamdi/anime-app
A Flutter Anime App to practice Clean Architecture concepts, focusing on implementing use cases and applying the SOLID Principles.
https://github.com/mahmoodhamdi/anime-app
anime anime-api anime-list app application clean-architecture clean-code dart dependency-injection dependency-inversion-pattern dependency-inversion-principle flutter flutter-examples mvvm-architecture mvvm-pattern repository-pattern solid-principles solidity-contracts
Last synced: 8 days ago
JSON representation
A Flutter Anime App to practice Clean Architecture concepts, focusing on implementing use cases and applying the SOLID Principles.
- Host: GitHub
- URL: https://github.com/mahmoodhamdi/anime-app
- Owner: mahmoodhamdi
- Created: 2024-07-25T11:52:22.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2024-08-11T01:13:58.000Z (6 months ago)
- Last Synced: 2024-11-18T03:06:28.535Z (2 months ago)
- Topics: anime, anime-api, anime-list, app, application, clean-architecture, clean-code, dart, dependency-injection, dependency-inversion-pattern, dependency-inversion-principle, flutter, flutter-examples, mvvm-architecture, mvvm-pattern, repository-pattern, solid-principles, solidity-contracts
- Language: Dart
- Homepage:
- Size: 66.6 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Anime-Manga Hub
Welcome to Anime-Manga Hub, an application designed to provide detailed information about various anime and manga series. This project follows the Clean Architecture principles and SOLID design principles.
## Features
- [x] **Anime**: Fetch and display details of anime, including latest, popular, and top-rated anime.
- [x] **Manga**: Fetch and display details of manga, including latest, popular, and top-rated manga.
- [x] **Categories**: Browse anime and manga categories.
- [x] **Characters**: Fetch details of characters and list characters associated with specific anime.
- [x] **Episodes**: Fetch details of episodes for a given anime.
- [x] **Reviews**: Read reviews and fetch reviewer details.---
### Project Structure
The project is structured based on Clean Architecture principles, ensuring separation of concerns and facilitating maintainability and testability. The structure is divided into three main layers:
1. ***Domain Layer***: Contains entities, repositories, and use cases.
2. ***Data Layer***: Implements repositories, data sources, and models.
3. ***Presentation Layer***: To be implemented in the future.---
### Current Implementations
#### Anime Feature
***Domain Layer***
- `AnimeEntity`
- `AnimeRepository`
- `GetAnimeDetailsUsecase`
- `GetLatestAnimeUsecase`
- `GetPopularAnimeUsecase`
- `GetTopRatedAnimeUsecase`***Data Layer***
- `AnimeModel`
- `AnimeRemoteDataSource`
- `AnimeRepositoryImpl`---
#### Manga Feature
***Domain Layer***
- `MangaEntity`
- `MangaRepository`
- `GetMangaDetailsUsecase`
- `GetLatestMangaUsecase`
- `GetPopularMangaUsecase`
- `GetTopRatedMangaUsecase`***Data Layer***
- `MangaModel`
- `MangaRemoteDataSource`
- `MangaRepositoryImpl`---
#### Categories Feature
****Domain Layer****
- `CategoryEntity`
- `CategoryRepository`
- `GetCategoriesListUsecase`
- `GetCategoryByIdUsecase`****Data Layer****
- `CategoryModel`
- `CategoryRemoteDataSource`
- `CategoryRepositoryImpl`---
#### Characters Feature
***Domain Layer***
- `CharacterEntity`
- `CharacterRepository`
- `GetCharacterByIdUsecase`
- `GetCharactersListUsecase`
- `GetMediaCharactersListUsecase`***Data Layer***
- `CharacterModel`
- `CharacterRemoteDataSource`
- `CharacterRepositoryImpl`---
#### Episodes Feature
***Domain Layer***
- `EpisodeEntity`
- `EpisodeRepository`
- `GetEpisodeByIdUsecase`
- `GetEpisodesListUsecase`***Data Layer***
- `EpisodeModel`
- `EpisodeRemoteDataSource`
- `EpisodeRepositoryImpl`---
#### Reviews Feature
***Domain Layer***
- `ReviewEntity`
- `ReviewerEntity`
- `ReviewRepository`
- `GetReviewerByIdUsecase`
- `GetReviewersListUsecase`
- `GetReviewsListUsecase`***Data Layer***
- `ReviewModel`
- `ReviewerModel`
- `ReviewRemoteDataSource`
- `ReviewRepositoryImpl`---
### Setup and Installation
1. Clone the repository:
```
git clone https://github.com/mahmoodhamdi/Anime-App.git
```
2. Navigate to the project directory:
```sh
cd Anime-App
```
3. Install dependencies:
```sh
flutter pub get
```
4. Run the app:
```sh
flutter run
```---
### Future Work
- Implement the presentation layer using BLoC architecture.
- Enhance UI/UX for a better user experience.
- Add more features and functionalities.---
### Contributing
We welcome contributions! Please follow the steps below to contribute:
1. Fork the repository.
2. Create a new branch `git checkout -b feature/new-feature`
3. Commit your changes `git commit -m 'Add some feature'`
4. Push to the branch `git push origin feature/new-feature`
5. Create a new Pull Request.---
### Contact
For any inquiries or support, please contact [Mahmoud Hamdy](https://www.linkedin.com/in/mahmoud-hamdy-alashwah/).
Happy Coding! 🚀