Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/andremion/retrobeat
A multiplatform music player app with the vibe of good old vinyl players, targeting Android and iOS
https://github.com/andremion/retrobeat
android compose-multiplatform ios kotlin-multiplatform motion-design music-player
Last synced: 3 months ago
JSON representation
A multiplatform music player app with the vibe of good old vinyl players, targeting Android and iOS
- Host: GitHub
- URL: https://github.com/andremion/retrobeat
- Owner: andremion
- License: apache-2.0
- Created: 2024-02-02T15:59:04.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-07-09T13:17:42.000Z (7 months ago)
- Last Synced: 2024-07-09T16:55:15.249Z (7 months ago)
- Topics: android, compose-multiplatform, ios, kotlin-multiplatform, motion-design, music-player
- Language: Kotlin
- Homepage:
- Size: 603 KB
- Stars: 13
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![CI](https://github.com/andremion/RetroBeat/actions/workflows/ci.yml/badge.svg)](https://github.com/andremion/RetroBeat/actions/workflows/ci.yml)
# RetroBeat
A music player app with the vibe of good old vinyl players.
In 2016, I published an [article](https://medium.com/@andremion/music-player-3a85864d6df7) about how to code a design proposal.
I noticed that a lot of people had difficulty building motion designs.
**RetroBeat** is an updated version of that proposal that uses modern tools and frameworks and now also targets iOS. 🚀
https://github.com/andremion/RetroBeat/assets/12762356/91988a95-48cc-438a-a261-b261ff853afd
## Music source
Currently fetching playlists from [Deezer API](https://developers.deezer.com/api/explorer) where those songs are previews of 30 seconds.
The solution is flexible enough to support another source.
## Dependencies
- [Compose Multiplatform](https://github.com/JetBrains/compose-multiplatform): A declarative framework based on Jetpack Compose and developed by JetBrains and open-source contributors for sharing UIs across multiple platforms with Kotlin.
- [Exoplayer](https://github.com/google/ExoPlayer): An extensible media player for Android.
- [PreCompose](https://github.com/Tlaster/PreCompose): Supports navigation and view models providing similar APIs to Jetpack ones.
- [Compottie](https://github.com/alexzhirkevich/compottie): A port of [Lottie Compose](https://github.com/airbnb/lottie/blob/master/android-compose.md).
- [Koin](https://github.com/InsertKoinIO/koin): A pragmatic lightweight dependency injection framework.
- [Ktor Client](https://github.com/ktorio/ktor): A library for fetching data from the internet and written in Kotlin from the ground up.## TODO
- Cache the selected playlist and navigate directly to the selected playlist from the launcher
- Add integration tests## Articles
- [Leveraging Key-Value Observing (KVO) in Kotlin Multiplatform (KMP) for iOS](https://andremion.medium.com/leveraging-key-value-observing-kvo-in-kotlin-multiplatform-kmp-for-ios-231519e5c1ff)
- [Music Player: From UI proposal to code](https://medium.com/@andremion/music-player-3a85864d6df7)## References
- [Quick guide to Animations in Compose](https://developer.android.com/jetpack/compose/animation/quick-guide)
- [Introducing LookaheadLayout](https://newsletter.jorgecastillo.dev/p/introducing-lookaheadlayout)
- [LookaheadScope](https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LookaheadScope)
- [Compose Animation Core](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/;bpv=0)
- [onPlaced Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.Modifier).onPlaced(kotlin.Function1))
- [Create a basic media player app using Media3 ExoPlayer](https://developer.android.com/media/implement/playback-app)
- [Background playback with a MediaSessionService](https://developer.android.com/media/media3/session/background-playback)
- [Media controls](https://developer.android.com/media/implement/surfaces/mobile)## License
Copyright 2024 André Luiz Oliveira Rêgo
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.