Skip to content

Latest commit

 

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

OpenSong app icon

OpenSong

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.

Fully local, by design

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.

Features

  • 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

Getting started

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.

Project structure

  • Models/Song, Playlist, RepeatMode
  • Services/LibraryStore (JSON persistence), AudioImporter (file copy + metadata read), PlaybackEngine (AVAudioPlayer + lock screen + audio session)
  • ViewModels/ — thin ObservableObject wrappers exposing state to views
  • Views/ — one file per screen: Library, Playlists, Now Playing, Settings
  • Assets.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.

What's intentionally not included

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.

About

A fully offline music player for iPhone, built with SwiftUI. No accounts, no streaming, no analytics, no network — ever.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages