Retro aims to bring back the iPod Classic experience to iOS and Android. I originally started working on it nearly 2 years ago and released it as a TestFlight beta (because Apple wouldn't allow it on the App Store) and have been maintaining it myself since.
Unfortunately Retro in its current state is too hard to maintain due to poor choices I made 2 years ago that hinders the app today. It's far too difficult to add new stuff to it without breaking other parts of the app, not to mention the number of existing issues that have gone unfixed for so long.
That said, I've decided that it would be best to restart from scratch, rely on fewer dependencies, and (hopefully) write cleaner + better code in the process 😅. I've had a handful of requests from people in the past asking how they can help and I've always wanted to eventually open-source the app, but I believe now is the right time.
This version of Retro will eventually succeed the current build that's available on TestFlight.
- Flutter/Dart for main app
- Swift/SwiftUI for WatchOS companion app (Retro Shuffle)
- API: Spotify SDK, MusicKit
If you'd like to run the app on your own device and compile from the source, you can do so by following the instructions below.
- Download and install Flutter. You can find instructions on how to do this here.
- Ensure you have an Apple Developer account (paid or free). You can find instructions on how to do this here.
- Clone this repository.
- Open the ios folder in Xcode and select your Apple Developer account for signing.
- Create a Spotify app here and insert the Client ID and Redirect URIs in the .env.example file. Make sure to rename it to .env.
- Head back to the terminal and run
flutter pub get && flutter run.
- That should be it! The app should run fine on your iOS device.
Firstly, I appreciate you for taking the time to contribute 😁
If you're fixing a bug, feel free to just submit a PR and specify what it is that you're fixing! If there's something that you believe should be changed, open an issue here or discuss it on the Discord before actually making said change.
Other than that, I don't really have any specific requirements.
This is a list of all the things that are left to complete (there's likely more that I can't think of atm). Feel free to add onto it.
|Apple Music implementation||🚧||N/A|
|Play Music from files||🚧||🚧|
|Configurable app icons||🚧||🚧|
|Music Player functions||✅||🚧|
|Migrate to Android embedding v2||N/A||✅|
|Migrate to Flutter 3||✅||✅|
|Dynamic Menu Sizes||✅||🚧|
|Responsive to all screens||🚧||🚧|