How sen-to/mochi_player works
Mochi Player is a local-first desktop media library and player. Users configure TMDB and media sources, scan local or network locations, browse the resulting catalog and metadata, then play media and resume from saved progress. The graph also includes documented home, detail, playback-window, subtitle/audio, and appearance capabilities. README statements support the workflow links; sampled source is limited to native window runners, so internal Dart call ownership is not verified and is not inferred.
Main entry points: storage_media_scanner.dart Media scanning · settings_page.dart Settings interface · tmdb_service.dart TMDB service · playback_session_controller.dart Playback session
Components 24
Application UI
- App shell
lib/app/presentation/pages/app_shell_page.dart - Home discovery
lib/features/home/presentation/widgets/home_content.dart
Media Library
- Library browsing
lib/features/library/presentation/pages/library_page.dart - File browser
lib/features/library/presentation/pages/file_browser_page.dart - Media details
lib/features/library/presentation/pages/media_detail_page.dart - Media scanning
lib/features/library/infrastructure/storage_media_scanner.dart - Library catalog
lib/features/library/application/media_library_catalog.dart - Metadata scraping
lib/features/library/infrastructure/metadata_scraper.dart
Core Infrastructure
- Media models
lib/core/domain/media/models.dart - Local database
lib/core/infrastructure/database/database_service.dart - Source management
lib/core/infrastructure/storage/storage_source_service.dart - Local storage
lib/core/infrastructure/storage/local_storage_provider.dart - WebDAV storage
lib/core/infrastructure/storage/webdav_storage_provider.dart - SMB storage
lib/core/infrastructure/storage/smb_storage_provider.dart - TMDB service
lib/core/infrastructure/tmdb/tmdb_service.dart
Playback
- Player interface
lib/features/playback/presentation/pages/player_page.dart - Playback session
lib/features/playback/application/playback_session_controller.dart - Progress writer
lib/features/playback/application/playback_progress_writer.dart
Settings
- Settings interface
lib/features/settings/presentation/pages/settings_page.dart - Settings service
lib/features/settings/infrastructure/app_settings_service.dart - Theme controls
lib/features/settings/application/theme_provider.dart
Other components
- Viewer
- TMDB API
- Media locations
Connections 27
- Viewer → App shell: opens
README.md - App shell → Home discovery: shows
README.md - Viewer → Settings interface: configures
README.md - Settings interface → Settings service: sets preferences
README.md - Settings interface → Source management: adds sources
README.md - Settings interface → TMDB service: sets API key
README.md - Settings interface → Theme controls: chooses appearance
README.md - Viewer → Media scanning: starts scan
README.md - Media scanning → Local storage: enumerates local
README.md - Media scanning → WebDAV storage: enumerates WebDAV
README.md - Media scanning → SMB storage: enumerates SMB
README.md - Media scanning → Media locations: discovers files
README.md - Media scanning → Library catalog: indexes media
README.md - Library catalog → Local database: stores catalog
README.md - Media scanning → Metadata scraping: matches metadata
README.md - Metadata scraping → TMDB service: requests metadata
README.md - TMDB service → TMDB API: queries
README.md - TMDB service → Library catalog: enriches catalog
README.md - Viewer → Library browsing: browses
README.md - Viewer → File browser: browses files
README.md - Library browsing → Media details: opens details
README.md - Viewer → Player interface: plays media
README.md - Player interface → Playback session: controls playback
README.md - Playback session → Media locations: plays locations
README.md - Playback session → Progress writer: records progress
README.md - Progress writer → Local database: saves progress
README.md - Media details → Player interface: starts playback