Vinylogue is a Last.fm client for iOS that shows you and your friends' weekly music charts from previous years.
- App Store
- Landing page
- v1 post about the legacy implementation
- v2 post about the Swift rewrite with Claude Code
Home | Charts | Album |
---|---|---|
![]() |
![]() |
![]() |
- iOS 18.0+ SwiftUI
- Weekly Charts - Browse you and your friends' listening for this week in history by year
- Album Details - View album listening history and info from last.fm
- Friend Management - Import friends from Last.fm
- Xcode 16.0+ (iOS 18.0+)
- XcodeGen (install with
brew install xcodegen
) - SwiftFormat (install with
brew install swiftformat
) - Last.fm developer API key
-
Clone the repository
git clone git://github.com/twocentstudios/vinylogue.git cd vinylogue
-
Add your Last.fm API key
# Copy the example secrets file cp Secrets.example.swift Vinylogue/Core/Infrastructure/Secrets.swift # Then edit the file to add your API key
-
Generate the Xcode project
xcodegen
-
build
open Vinylogue.xcodeproj
- SwiftUI with @Observable state management
- Point-Free Dependencies for dependency injection
- Point-Free Sharing for global state management
- Swift Concurrency (async/await) throughout
- Nuke for remote images
Version 2.0 automatically migrates data from the legacy Objective-C versions v1.0 - v1.3.1:
What gets migrated:
- Last.fm username
- Selected friends
- Play count filter
License for source is Modified BSD.
All rights are reserved for image assets.
Contributions and feedback are welcome. Open an Issue on the repo with your ideas first.
vinylogue was created by Christopher Trott at twocentstudios.
I created vinylogue in 2013 as an Objective-C, UIKit, and ReactiveCocoa app for iOS 6. It was released on the App Store and open sourced on GitHub. Over the years, I've updated the app to run well on newer versions of iOS without making any functional changes.
In 2025, with the help of Claude Code, I rewrote the app from the ground up in modern Swift and SwiftUI with a few quality of life improvements, but overall the same design and navigation. The app is simple, but just complex enough be a useful playground for trying out new app architectures and development tools. Plus, I still use it to check out my listening history.