A music player app with the vibe of good old vinyl players.
In 2016, I published an article 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. 🚀
retrobeat_preview.mp4
Currently fetching playlists from Deezer API where those songs are previews of 30 seconds.
The solution is flexible enough to support another source.
- 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: An extensible media player for Android.
- PreCompose: Supports navigation and view models providing similar APIs to Jetpack ones.
- Compottie: A port of Lottie Compose.
- Koin: A pragmatic lightweight dependency injection framework.
- Ktor Client: A library for fetching data from the internet and written in Kotlin from the ground up.
- Cache the selected playlist and navigate directly to the selected playlist from the launcher
- Add integration tests
- Leveraging Key-Value Observing (KVO) in Kotlin Multiplatform (KMP) for iOS
- Music Player: From UI proposal to code
- Quick guide to Animations in Compose
- Introducing LookaheadLayout
- LookaheadScope
- Compose Animation Core
- onPlaced Modifier
- Create a basic media player app using Media3 ExoPlayer
- Background playback with a MediaSessionService
- Media controls
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.