MiruShin takes the familiar feel of AnimeShin and pushes it further with a cleaner Flutter architecture, a modular feature layout, real Sora module support, cross-platform playback, and deeper AniList profile flows.
It can switch between TMDB-driven discovery and AniList-driven catalog views, then carry that context into your library, watch flow, and player experience from a single codebase.
| Area | What MiruShin does |
|---|---|
| Board and Discovery | Browse trending, popular, and filtered rails with cached metadata, search, and catalog mode switching between TMDB and AniList. |
| Library | Keep a local library, sync AniList folders, continue watching, manage statuses, and keep progress in one place. |
| Watch Flow | Use enabled Sora-compatible modules to search sources, choose seasons and episodes, and hand off cleanly into playback. |
| Player | Play HLS, MP4, and DASH streams with quality selection, voiceovers, subtitles, AniSkip markers, autoplay next, and progress sync. |
| Profile | Open AniList activities, favourites, feed, social pages, statistics, reviews, and export flows. |
| Polish | English, Russian, and Japanese UI, theme and accent settings, secure token storage, cache controls, and responsive desktop/mobile layouts. |
- Sora modules, shown as addons in the UI, are installable by manifest URL, can be enabled or reordered, and support import/export for local backups.
- Switch between TMDB and AniList by clicking the top-left logo. In compact mode, open
Moreand use the catalog switch option there. - Discord Rich Presence is available on supported desktop platforms.
- Picture in Picture and native player handoff are supported where the platform allows it.
- AniList exports are available for MyAnimeList XML and Shikimori JSON.
- Flutter stable
- Dart SDK compatible with
sdk: ^3.11.4
git clone https://github.com/emp0ry/MiruShin.git
cd MiruShin
flutter pub get
flutter runYou can also run a specific target with commands like flutter run -d macos, flutter run -d windows, flutter run -d linux, or flutter run -d android.
MiruShin is configured at runtime from the in-app Settings page. There is no .env file to edit for the normal setup flow.
TMDB powers the default metadata and discovery experience.
- Create or open a TMDB developer application.
- Copy your TMDB Read Access Token.
- Open
Settings -> API Connectionsin MiruShin. - Enable TMDB metadata and paste the token into
TMDB Read Access Token.
The token is stored in platform secure storage and is not hardcoded in the repo.
AniList powers profile pages, library sync, tracking, exports, and the AniList catalog mode.
Default client values in the app:
- Mobile client ID:
40342 - Mobile redirect URI:
app://mirushin/auth - Desktop client ID:
40343 - Desktop redirect URI:
http://localhost:28372/
On mobile, the OAuth flow uses an embedded WebView callback. On desktop, MiruShin listens for a localhost callback.
Sora-compatible modules, shown as addons inside the app, unlock source search for watch pages.
- Open the
Addonspage. - Paste a trusted module manifest JSON URL.
- Preview the module.
- Install and enable it.
MiruShin keeps a local working copy of installed modules and can update them later.
For information on how to get Sora addons, please join the Sora Discord server.
- MiruShin is a media player and interface layer. It does not host or provide any content.
- MiruShin does not ship TMDB tokens, AniList tokens, Sora modules, module manifests, or media catalogs.
- Users are responsible for providing their own content and for ensuring they have the legal rights to access or use it.
- Users are responsible for complying with all applicable laws and for respecting copyright and intellectual property rights.
- Sora modules are third-party code and can make network requests. Only install modules from creators you trust.
- MiruShin includes no built-in Sora modules. Third-party modules are the responsibility of their creators, not MiruShin or
emp0ry. - Source access comes from user-installed modules, not from hardcoded providers bundled in this repository.
- The software is provided "as is" without warranties, and users bear full responsibility for how they use the app and any installed modules.
- This product uses the TMDB API but is not endorsed or certified by TMDB.
lib/
app/ # app shell, routing, theme, localization
core/ # shared infrastructure, constants, widgets, cache, utilities
features/ # domain-focused feature modules
shared/ # app-wide models and shared data structures
Key feature areas:
features/board,features/discovery,features/calendarfeatures/library,features/media_details,features/watchfeatures/playerfeatures/profile,features/trackingfeatures/addonsfeatures/settings
- Flutter
- Riverpod
- GoRouter
- Dio
- FVP
- WebView Flutter
- Flutter Secure Storage

