How makhmudjona/musium works
Musium is an offline Flutter music player. Users import audio through the library UI; the library domain and data layers handle metadata, app-owned file copies and local records. The main tab shell coordinates the app-wide library and player blocs, keeping the library’s track list synchronized with the playback queue and registering plays. Playback is handled by the player service and presented through full and mini-player UI. The README also documents playlists, favourites, search, editing, export, adaptive artwork colours and listening/storage statistics. Those feature areas are represented, but their detailed wiring is not inferred from the sampled source.
Main entry points: main_page.dart Tab shell · library_bloc.dart Library BLoC · app.dart App providers · library_repository_impl.dart Library repository
Components 25
App shell
- App entry
lib/main.dart - App providers
lib/app.dart - Tab shell
lib/features/main/presentation/pages/main_page.dart - Onboarding
lib/features/onboarding/presentation/pages/onboarding_page.dart
Music library
- Library screens
lib/features/library/presentation - Library BLoC
lib/features/library/presentation/bloc/library_bloc.dart - Library use cases
lib/features/library/domain/use_cases - Library repository
lib/features/library/data/repositories/library_repository_impl.dart - Local data source
lib/features/library/data/local/library_local_data_source_impl.dart - Tag reader
lib/features/library/data/services/metadata_service.dart - File storage
lib/features/library/data/services/file_storage_service.dart - Import picker
lib/features/library/presentation/widgets/import_picker.dart
Playback
- Player screens
lib/features/player/presentation - Player BLoC
lib/features/player/presentation/bloc/player_bloc.dart - Audio service
lib/features/player/data/audio_player_service.dart
Browse and settings
- Home screen
lib/features/home/presentation/pages/home_page.dart - Search
lib/features/search/presentation/pages/search_page.dart - Settings and stats
lib/features/settings/presentation/pages/settings_page.dart
Local foundation
- Hive records
- Settings store
lib/features/settings/data/app_settings.dart - Service locator
lib/core/di/service_locator.dart - Theme and widgets
lib/core/theme/app_theme.dart
Other components
- Listener
- Device audio
- Device files
Connections 29
- Listener → Onboarding: starts with
- Listener → Tab shell: uses
- App entry → App providers: starts
- App providers → Tab shell: provides app
- Tab shell → Library BLoC: coordinates
- Tab shell → Player BLoC: coordinates
- Tab shell → Home screen: shows
- Tab shell → Library screens: shows
- Tab shell → Search: shows
- Tab shell → Settings and stats: shows
- Tab shell → Player screens: hosts mini-player
- Library screens → Import picker: selects audio
- Import picker → Library BLoC: dispatches import
- Library BLoC → Library use cases: invokes
- Library use cases → Library repository: uses
- Library repository → Local data source: accesses records
- Local data source → Hive records: reads and writes
- Library repository → Tag reader: reads tags
- Library repository → File storage: copies and exports
- Tag reader → Device files: reads embedded tags
- File storage → Device files: copies audio
- Tab shell → Library BLoC: registers plays
- Tab shell → Player BLoC: syncs queue
- Player screens → Player BLoC: dispatches controls
- Player BLoC → Audio service: controls playback
- Audio service → Device audio: plays audio
- Library BLoC → Settings store: stores preferences
- App providers → Service locator: configures dependencies
- App providers → Theme and widgets: applies theme