A fully offline music player for iPhone, built with SwiftUI.
No accounts, no streaming, no analytics, no network — ever.
Import audio files you already own, organize them into playlists, and play them back — entirely from local storage on the device.
This app makes no network requests. There is no API to call, no server to reach, and no internet connection needed to install, run, or use it after setup:
- Import is local-only — songs are picked from the iPhone's Files app (On My iPhone, iCloud Drive, or any Files provider you already have set up) via the system file picker, then copied into the app's own private, sandboxed storage. The originals are untouched and not needed afterward.
- No accounts or sign-in — there's nothing to log into and nothing tied to your identity.
- No streaming — every song is a local file already on the device; nothing is fetched over the network to play.
- No analytics or tracking — the app doesn't phone home, ever.
- No third-party dependencies — everything is built on Apple's own frameworks (SwiftUI, AVFoundation, MediaPlayer), so there's no external SDK making calls on your behalf.
- Plain JSON persistence — your library and playlists are stored as local JSON files in the app's sandbox (
Application Support/), not a remote database.
In short: once the audio files are on your phone, the entire app works with the phone in Airplane Mode.
- Import audio files (MP3, AAC/M4A, WAV, and other formats AVFoundation supports, including FLAC) from the Files app
- Library view with search (title, artist, album) and sort (title, date added)
- Create, rename, and delete playlists; add/remove songs from them
- Full playback controls: play/pause, next/previous, seek, shuffle, repeat (off/one/all)
- Lock screen & Control Center integration (title, artist, playback position, remote play/pause/skip)
- Background audio playback and AirPlay support
- Dark-mode UI throughout
This project was written without Xcode (developed on Windows), so the source lives as plain Swift files rather than a checked-in .xcodeproj. See MusicPlayer/README.md for step-by-step setup instructions to assemble the Xcode project and build it onto a device.
Models/—Song,Playlist,RepeatModeServices/—LibraryStore(JSON persistence),AudioImporter(file copy + metadata read),PlaybackEngine(AVAudioPlayer + lock screen + audio session)ViewModels/— thinObservableObjectwrappers exposing state to viewsViews/— one file per screen: Library, Playlists, Now Playing, SettingsAssets.xcassets/— App icon (the OpenSong logo, 1024x1024)
Design/ at the repo root holds the 2048x2048 icon master and the rounded copy used at the top of this README — both outside the Xcode source tree.
No album art, no accounts, no streaming, no analytics, no Core Data/SwiftData, no third-party dependencies — kept minimal and fully self-contained on-device.