Generated by the Very Good CLI 🤖
Eizo Mushi is a Flutter-based application designed for streaming anime. This project leverages Flutter's cross-platform capabilities to deliver a seamless user experience on both iOS and Android. This uses a open source backend which scrapes the data from anime site and send it as JSON. Special thanks to https://github.com/itzzzme for the repo.
Note: This is strcitly developed for educational purpose only and is not available commercially. Use this responsibly for learning purpose
- View anime as spotlight, top airing, latest episode and more
- View anime details
- Play anime episode
- Search anime
- track viewed anime and their episode
- add theme change to light
- add support to web, macOS, Linux and windows
- add test case
- add localization
- add multiple language subtitle
Ensure you have the following installed:
- Flutter SDK (version 3.29.3)
- Dart SDK
- Xcode (for iOS development)
- Android Studio (for Android development)
The project relies on the web scrapping. You need to host your own instance of this repo https://github.com/umuieme/anime-api which is a fork of https://github.com/itzzzme/anime-api . There are some changes in the api response so original repo will not work.
-
Clone the repository:
git clone https://github.com/umuieme/eizo_mushi.git cd eizo_mushi -
Install dependencies:
flutter pub get
-
Create .env.dev and .env.prod for development and production flavor respectively. It should contain following value for the base url
BASE_URL=<localhost or server url> -
Run the app:
This project contains 3 flavors:
- development
- staging
- production
To run the desired flavor either use the launch configuration in VSCode/Android Studio or use the following commands:
# Development
$ flutter run --flavor development --target lib/main_development.dart
# Staging
$ flutter run --flavor staging --target lib/main_staging.dart
# Production
$ flutter run --flavor production --target lib/main_production.dart*Eizo Mushi works on iOS, Android. Its not been tested on other platform
- very_good_cli for the initial template generation
- flutter_bloc for state management
- dio for api call
- freezed for model class generation
- flutter_hooks for widget state management
- get_it for dependency injection
- video_player, chewie and subtitle for video streaming and subtties
- Other libraries to make life easier
📦lib
┣ 📂app
┃ ┣ 📂di
┃ ┃ ┗ 📜di.dart
┃ ┣ 📂theme
┃ ┃ ┣ 📜app_colors.dart
┃ ┃ ┣ 📜app_theme.dart
┃ ┃ ┗ 📜text_theme.dart
┃ ┣ 📂utils
┃ ┃ ┣ 📜context_extension.dart
┃ ┃ ┣ 📜debounce_helper.dart
┃ ┃ ┗ 📜string_extension.dart
┃ ┣ 📂view
┃ ┃ ┗ 📜app.dart
┃ ┗ 📜app.dart
┣ 📂data
┃ ┣ 📂api
┃ ┃ ┣ 📜api_endpoints.dart
┃ ┃ ┣ 📜api_service.dart
┃ ┃ ┣ 📜dio_helper.dart
┃ ┃ ┗ 📜error_handler.dart
┃ ┣ 📂data_source
┃ ┃ ┗ 📜local_data_source.dart
┃ ┣ 📂hive
┃ ┃ ┣ 📂adapters
┃ ┃ ┃ ┣ 📜hive_adapters.dart
┃ ┃ ┗ 📂objects
┃ ┃ ┃ ┗ 📜favorite_anime.dart
┃ ┣ 📂model
┃ ┃
┃ ┣ 📂repository
┃ ┃ ┗ 📜anime_repository.dart
┃ ┗ 📜dummy_model.dart
┣ 📂features
┃ ┣ 📂anime-detail
┃ ┃ ┣ 📂bloc
┃ ┃ ┃ ┣ 📜anime_detail_bloc.dart
┃ ┃ ┃ ┣ 📜anime_detail_event.dart
┃ ┃ ┃ ┗ 📜anime_detail_state.dart
┃ ┃ ┗ 📂ui
┃ ┃ ┃ ┣ 📂screen
┃ ┃ ┃ ┃ ┗ 📜anime_detail_screen.dart
┃ ┃ ┃ ┗ 📂widgets
┃ ┃ ┃ ┃ ┗ 📜anime_detail_overview.dart
┃ ┣ 📂 ... other features
┃ ┣ 📂common
┃ ┃ ┗ 📂widgets
┃ ┃ ┃ ┣ 📜app_image_view.dart
┃ ┃ ┃ ┣ 📜app_loading.dart
┃ ┃ ┃ ┣ 📜app_text_field.dart
┃ ┃ ┃ ┣ 📜empty_widget.dart
┃ ┃ ┃ ┣ 📜error_view.dart
┃ ┃ ┃ ┣ 📜primary_button.dart
┃ ┃ ┃ ┗ 📜secondary_button.dart
┣ 📜.DS_Store
┣ 📜bootstrap.dart
┣ 📜main_development.dart
┣ 📜main_production.dart
┗ 📜main_staging.dart
Contributions are welcome! Please follow these steps:
- Fork the repository.
- Create a new branch (
git checkout -b feature/your-feature). - Commit your changes (
git commit -m 'Add your feature'). - Push to the branch (
git push origin feature/your-feature). - Open a pull request.
Here are some screenshots of the app:
This project is licensed under the MIT License.
For questions or feedback connect with me in LinkedIn





