How minhmc2007/otakuhub works
OtakuHub is a self-hosted anime browsing and streaming web app. A user signs in, searches or browses the provider, selects an episode and server, then plays the source stream or requests a background conversion; playlists and watch progress are stored per user. The graph preserves the documented account, library, settings, caching, metrics, and transcoding capabilities. Some wiring is based on README documentation because the sampled excerpts do not include all handler, state, proxy, or job implementations.
Main entry points: pages.rs Page workflows · db/mod.rs SQLite database · jobs.rs Conversion jobs · web/mod.rs Routes and handlers
Components 23
Web experience
- Routes and handlers
src/web/mod.rs - Page workflows
src/web/pages.rs - View models
src/web/views.rs - Browser UI
static/app.js
Anime provider
- Provider interface
src/source/mod.rs - HiAnime adapter
src/source/hianime.rs
Playback pipeline
- Conversion jobs
src/media/jobs.rs - Transcoding
src/media/transcode.rs - Media proxy
src/proxy.rs - Media cache
src/cache.rs
Accounts and library
- Authentication
src/auth.rs - Sessions
src/db/sessions.rs - User accounts
src/db/users.rs - SQLite database
src/db/mod.rs - Library data
src/db/playlists.rs - Watch progress
src/db/progress.rs - User settings
src/db/settings.rs
Runtime services
- HTTP server
src/main.rs - System metrics
src/metrics.rs - Application state
src/state.rs
Other components
- Viewer
- Anime provider
- FFmpeg encoders
Connections 29
- Viewer → Routes and handlers: sends requests
- Browser UI → Routes and handlers: requests updates
- HTTP server → Routes and handlers: serves routes
- Routes and handlers → Page workflows: dispatches
- Page workflows → View models: renders
- Page workflows → Authentication: requires identity
- Authentication → Sessions: resolves token
- Sessions → SQLite database: reads and writes
- Authentication → User accounts: checks passwords
- User accounts → SQLite database: reads and writes
- Page workflows → Provider interface: searches and fetches
- Provider interface → HiAnime adapter: delegates provider calls
- HiAnime adapter → Anime provider: fetches anime data
- Page workflows → Library data: manages playlists
- Library data → SQLite database: reads and writes
- Page workflows → Watch progress: records progress
- Watch progress → SQLite database: reads and writes
- Page workflows → User settings: loads preferences
- User settings → SQLite database: reads and writes
- Page workflows → Conversion jobs: requests conversion
- Conversion jobs → Transcoding: runs conversion
- Transcoding → FFmpeg encoders: encodes HLS
- Conversion jobs → Media cache: stores output
- Page workflows → Media proxy: serves media
- Media proxy → Media cache: reads and writes
- Media proxy → Anime provider: fetches upstream media
- Page workflows → System metrics: samples usage
- HTTP server → Application state: builds state
- HTTP server → Conversion jobs: reaps stalled jobs