How salmee12/suradda-app works
SurAdda is a Flutter social-music app. Users authenticate, browse cloud or device music, and play through a persistent shared player; they can also create or join synchronized online parties or nearby hotspot parties. The map follows the documented MVVM/data/service layers and preserves authentication, subscription awareness, social, radio, and download capabilities. Relationships are based on README statements and structure; most Dart source was not sampled, so implementation-specific calls are not asserted.
Main entry points: playback_service.dart Shared playback · hotspot_room_viewmodel.dart Hotspot party · auth_viewmodel.dart Authentication · views Feature screens
Components 26
App shell
- App entry
lib/main.dart - App shell
lib/app.dart - Feature screens
lib/presentation/views - Feature state
lib/presentation/viewmodels - Navigation
lib/core/routes/app_router.dart
Music playback
- Cloud library
lib/presentation/views/library/cloud_songs_tab.dart - Device library
lib/presentation/views/library/local_songs_tab.dart - Song catalogue
lib/data/datasources/remote/song_api.dart - Playable track
lib/data/models/playable_track.dart - Shared playback
lib/services/audio/playback_service.dart - Cloud audio
lib/services/audio/cloud_audio_service.dart - Device audio
lib/services/audio/local_audio_service.dart - Player UI
lib/presentation/views/player/music_player_page.dart - Radio
lib/services/streaming/radio_service.dart - Song downloads
lib/services/download/song_download_service.dart
Listening parties
- Online party
lib/presentation/viewmodels/online_room_viewmodel.dart - Online sync
lib/services/streaming/online_room_socket_service.dart - Hotspot party
lib/presentation/viewmodels/hotspot_room_viewmodel.dart - Hotspot host
lib/services/streaming/local_stream_host_service.dart - Hotspot client
lib/services/streaming/local_stream_client_service.dart
Identity and social
- Authentication
lib/presentation/viewmodels/auth_viewmodel.dart - Auth API
lib/data/datasources/remote/auth_api.dart - Token storage
lib/services/auth/token_storage_service.dart - Friends and streaks
lib/services/social/friend_service.dart
Other components
- Listener
- SurAdda backend
Connections 32
- Listener → App entry: opens
README.md - App entry → App shell: starts
README.md - App shell → Feature screens: shows
README.md - Feature screens → Feature state: uses state
README.md - Feature screens → Navigation: navigates
README.md - Listener → Cloud library: browses
README.md - Listener → Device library: browses
README.md - Cloud library → Song catalogue: loads catalogue
README.md - Song catalogue → SurAdda backend: requests songs
README.md - Cloud library → Playable track: provides track
README.md - Device library → Playable track: provides track
README.md - Playable track → Shared playback: plays
README.md - Shared playback → Cloud audio: plays cloud
README.md - Shared playback → Device audio: plays local
README.md - Player UI → Shared playback: controls
README.md - Listener → Online party: joins or hosts
README.md - Online party → Online sync: synchronizes
README.md - Online sync → SurAdda backend: syncs online
README.md - Online party → Shared playback: mirrors host
README.md - Listener → Hotspot party: joins or hosts
README.md - Hotspot party → Hotspot host: serves local audio
README.md - Hotspot party → Hotspot client: discovers host
README.md - Hotspot party → Shared playback: synchronizes
README.md - Listener → Authentication: signs in
README.md - Authentication → Auth API: authenticates
README.md - Auth API → SurAdda backend: sends credentials
README.md - Authentication → Token storage: persists tokens
README.md - Authentication → SurAdda backend: refreshes tokens
README.md - Listener → Friends and streaks: uses social features
README.md - Listener → Radio: listens to radio
README.md - Listener → Song downloads: downloads songs
README.md - Listener → SurAdda backend: checks subscription
README.md