Skip to content

umuieme/EizoMushi

Repository files navigation

Eizo Mushi

style: very good analysis License: MIT

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


Features

  • 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

Getting Started 🚀

Prerequisites

Ensure you have the following installed:

  • Flutter SDK (version 3.29.3)
  • Dart SDK
  • Xcode (for iOS development)
  • Android Studio (for Android development)

Backend

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.

Installation

  1. Clone the repository:

    git clone https://github.com/umuieme/eizo_mushi.git
    cd eizo_mushi
  2. Install dependencies:

    flutter pub get
  3. 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>
    
  4. 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


Libraries used

  • 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

Folder Structure

📦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

Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository.
  2. Create a new branch (git checkout -b feature/your-feature).
  3. Commit your changes (git commit -m 'Add your feature').
  4. Push to the branch (git push origin feature/your-feature).
  5. Open a pull request.

Screenshots

Here are some screenshots of the app:

Home Screen

Home Screen

Anime Details

Anime Details

Video Player

Video Player Video Player Fullscreen

Search

Search

Favorites

Search

License

This project is licensed under the MIT License.

Contact

For questions or feedback connect with me in LinkedIn

About

Eizo Mushi, shortform for eizo den den mushi. A anime player app build in flutter

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors