How vinitsingh665/shiru works
Shiru is a cross-platform personal anime library manager. The principal workflow is to browse or search a library, select an episode or file, resolve its anime/episode identity, and play it while tracking progress. Its surrounding capabilities include list-provider sync, release schedules and notifications, subtitles, optional extensions, torrent streaming, profiles, and watch-together. The graph uses README capabilities where source excerpts were unavailable; those branches show documented subsystem boundaries, not unverified call sequences.
Main entry points: MediaHandler.svelte Media resolver · anime.js Anime metadata · Router.svelte Route selection · manager.js Release alerts
Components 26
Application UI
- App shell
common/App.svelte - Route selection
common/routes/Router.svelte
Anime Discovery
- Home library
common/routes/home/HomePage.svelte - Anime search
common/routes/search/SearchPage.svelte - Release schedule
common/routes/SchedulePage.svelte - Anime metadata
common/modules/anime/anime.js
Playback
- Media resolver
common/components/MediaHandler.svelte - Video player
common/routes/player/PlayerPage.svelte - Torrent client
client/core/webtorrent.js - Subtitle handling
common/modules/subtitles.js - File manager
common/modals/manager/ManagerModal.svelte - Extension manager
common/modules/extensions/manager.js - Extension workers
common/modules/extensions/worker.js
Tracking Services
- Release alerts
common/modules/notification/manager.js - AniList sync
common/modules/providers/anilist/anilist.js - MyAnimeList sync
common/modules/providers/myanimelist/myanimelist.js - Profiles
common/modals/ProfilesModal.svelte - Watch together
common/routes/w2g/WatchTogetherPage.svelte - Local cache
common/modules/cache.js
Platform Runtime
- Desktop runtime
electron/src/main/app.js - Android runtime
capacitor/src/main/app.js
Other components
- Viewer
- AniList
- MyAnimeList
- Local media
- Optional sources
Connections 30
- Viewer → App shell: uses
- App shell → Route selection: renders
- Route selection → Home library: routes to
- Route selection → Anime search: routes to
- Route selection → Release schedule: routes to
- Route selection → Media resolver: hosts
- Home library → Anime metadata: loads metadata
- Anime search → Anime metadata: searches metadata
- Release schedule → Anime metadata: uses schedule data
- Media resolver → Anime metadata: resolves episodes
- Media resolver → Video player: starts playback
- Media resolver → Torrent client: streams files
- Media resolver → Extension manager: requests sources
- Extension manager → Extension workers: dispatches work
- Extension workers → Optional sources: fetches from
- Media resolver → Local media: plays local files
- Video player → Subtitle handling: loads tracks
- Media resolver → File manager: opens file tools
- Anime metadata → AniList sync: uses provider
- AniList sync → AniList: syncs lists
- MyAnimeList sync → MyAnimeList: syncs lists
- App shell → MyAnimeList sync: supports list sync
- Anime metadata → MyAnimeList sync: supports provider
- Release alerts → Local cache: persists alerts
- Release alerts → Desktop runtime: updates badge
- Release alerts → Android runtime: dispatches alerts
- Profiles → Local cache: uses local state
- Watch together → Media resolver: coordinates playback
- Desktop runtime → Torrent client: hosts client
- Android runtime → Torrent client: bridges client