retro

Project Url: retromp3/retro
Introduction: an ipod classic for iOS/Android, built with Flutter
More: Author   ReportBugs   OfficialWebsite   
Tags:

hero

Discord Twitter

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.

Stack

  • Flutter/Dart for main app
  • Swift/SwiftUI for WatchOS companion app (Retro Shuffle)
  • API: Spotify SDK, MusicKit

Setup

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.

Instructions

  1. Download and install Flutter. You can find instructions on how to do this here.
  2. Ensure you have an Apple Developer account (paid or free). You can find instructions on how to do this here.
  3. Clone this repository.
  4. cd retro
  5. Open the ios folder in Xcode and select your Apple Developer account for signing.
  6. 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.
  7. Head back to the terminal and run flutter pub get && flutter run.
  8. That should be it! The app should run fine on your iOS device.

Contributing

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.

TODO

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.

Description iOS Android
Apple Music implementation 🚧 N/A
Spotify integration 🚧
Play Music from files 🚧 🚧
Skins (Background)
Skins (Wheel) 🚧 🚧
iPod Animations 🚧
Games 🚧 🚧
iPod Themes 🚧 🚧
Configurable app icons 🚧 🚧
Clickwheel feedback
Exponential scrolling
Menu Layout
Music Player functions 🚧
Migrate to Android embedding v2 N/A
Migrate to Flutter 3
Splash screen 🚧 🚧
Dynamic Menu Sizes 🚧
Responsive to all screens 🚧 🚧
Apps
About Me
GitHub: Trinea
Facebook: Dev Tools