{"id":47873334,"url":"https://github.com/d3sc/music-app-mobile","last_synced_at":"2026-04-04T01:00:02.660Z","repository":{"id":341514991,"uuid":"1170413264","full_name":"d3sc/music-app-mobile","owner":"d3sc","description":"Full-stack Music Streaming App built with Golang (Gin + GORM) and Flutter. Supports MP3 upload, structured storage, and HTTP range-based audio streaming. Dockerized backend with PostgreSQL. ","archived":false,"fork":false,"pushed_at":"2026-03-27T17:41:32.000Z","size":288,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-04T00:59:58.551Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/d3sc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-02T05:03:03.000Z","updated_at":"2026-03-27T17:41:35.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/d3sc/music-app-mobile","commit_stats":null,"previous_names":["d3sc/music-app-mobile"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/d3sc/music-app-mobile","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d3sc%2Fmusic-app-mobile","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d3sc%2Fmusic-app-mobile/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d3sc%2Fmusic-app-mobile/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d3sc%2Fmusic-app-mobile/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/d3sc","download_url":"https://codeload.github.com/d3sc/music-app-mobile/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d3sc%2Fmusic-app-mobile/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31383636,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-03T23:20:52.058Z","status":"ssl_error","status_checked_at":"2026-04-03T23:20:51.675Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-04T01:00:01.978Z","updated_at":"2026-04-04T01:00:02.651Z","avatar_url":"https://github.com/d3sc.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"#+ Music App\n\nThis is a **simple music player application** built with **Flutter**, featuring authentication, a music collection list, and a full music player with a progress bar and mini player.\n\n## Main Features\n\n- **Authentication**\n  - Login with a token stored in `SecureStorage`.\n- **Music Collection**\n  - Display a list of songs fetched from an API using `Dio`.\n  - Each item shows title and artist.\n- **Music Player**\n  - Uses the `just_audio` package.\n  - Supports playlists (`ConcatenatingAudioSource`).\n  - Progress bar implemented with `audio_video_progress_bar`.\n  - Play / pause, seek, and navigate between tracks in the playlist.\n- **Mini Player**\n  - Mini player at the bottom of the list showing the currently playing song.\n- **State Management**\n  - Uses `provider` with `MusicPlayerService` as a `ChangeNotifier`.\n\n## Project Structure (Overview)\n\nImportant directories and files:\n\n- `lib/main.dart`  \n  Application entry point, initializes `ChangeNotifierProvider\u003cMusicPlayerService\u003e` and `MaterialApp.router`.\n\n- `lib/router.dart`  \n  Main routing configuration.\n\n- `lib/domain/music.dart`  \n  `Music` domain model (id, title, artist, url, etc.).\n\n- `lib/core/network/dio_client.dart`  \n  `Dio` client configuration for backend requests.\n\n- `lib/core/storage/secure_storage.dart`  \n  Wrapper for securely storing tokens.\n\n- `lib/features/auth/presentation/login_page.dart`  \n  Login screen.\n\n- `lib/features/music/data/music_repository.dart`  \n  Repository for fetching music data from the API.\n\n- `lib/features/music/application/music_player_service.dart`  \n  Music player service/manager:\n  - Manages the `AudioPlayer`.\n  - Stores the playlist (`List\u003cMusic\u003e`).\n  - Exposes position and duration streams.\n  - Provides `setPlaylist`, `play`, `pause`, `seek`, etc.\n\n- `lib/features/music/presentation/music_collection_page.dart`  \n  Music list/collection screen:\n  - Fetches music data via `MusicRepository`.\n  - Sets the playlist in `MusicPlayerService`.\n  - Tapping an item plays the song and navigates to `MusicPlayerPage`.\n  - Uses `MiniPlayer` at the bottom.\n\n- `lib/features/music/presentation/music_page.dart`  \n  Main player screen:\n  - Shows currently playing song info (`currentMusic` from `MusicPlayerService`).\n  - Progress bar and play/pause controls (using `Consumer\u003cMusicPlayerService\u003e`).\n\n- `lib/features/music/presentation/widget/mini_player.dart`  \n  Mini player widget shown at the bottom of the screen.\n\n## Running the App\n\nMake sure you have installed:\n\n- Flutter SDK\n- Dart SDK\n- Android Studio / Xcode (for emulators/simulators)\n\n### 1. Clone / open the project\n\n```bash\ngit clone \u003cyour-repo-url\u003e\ncd music_app\n```\n\n### 2. Install dependencies\n\n```bash\nflutter pub get\n```\n\n### 3. Run the application\n\n```bash\nflutter run\n```\n\nChoose any available device/emulator.\n\n## Backend and Token Configuration\n\nThis app relies on:\n\n- An **API endpoint** configured in `dio_client.dart`.\n- An **authentication token** stored via `SecureStorage`.\n\nMake sure:\n\n- The base API URL is correctly configured in `dio_client.dart`.\n- The login flow stores the token in `SecureStorage` so that `MusicPlayerService` can use it when calling the music API with the `Authorization: Bearer \u003ctoken\u003e` header.\n\n## Main Dependencies\n\nSome important packages used (see `pubspec.yaml` for the full list):\n\n- `provider` – state management.\n- `dio` – HTTP client.\n- `flutter_secure_storage` – secure token storage.\n- `just_audio` – audio playback.\n- `audio_video_progress_bar` – progress bar widget for audio.\n\n## Development Notes and Tips\n\n- If audio does not play:\n  - Check the base API URL and music endpoint.\n  - Ensure the token is valid and sent in the headers.\n- If the playlist is always empty:\n  - Make sure `musicRepository.getAllMusic()` returns a `List\u003cMusic\u003e`.\n  - Ensure `setPlaylist(musics)` is called before `play()`.\n\n## License\n\nAdjust this section according to the license you prefer, for example:\n\nThis project is created for learning/personal purposes. Feel free to modify and use it as needed.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fd3sc%2Fmusic-app-mobile","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fd3sc%2Fmusic-app-mobile","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fd3sc%2Fmusic-app-mobile/lists"}