Spotify clone

Tunely · Music streaming app template

A working Spotify-style iPhone app in Swift, running on sample data. Plays real audio: home shelves, playlists, mini-player, Now Playing with lyrics, search and library.

  • iOS
  • Swift · SwiftUI
  • Sample data
  • Free to remix
Tunely, Spotify clone template
Remix this template

Remix copies the working Swift app into your account for free. It runs in Vibecode's cloud iOS simulator, in your browser.

What's inside

  • Home shelves
  • Real playback
  • Playlist pages
  • Mini-player
  • Now Playing
  • Synced lyrics
  • Search
  • Your Library
How to build a Spotify cloneThe guide: features, hard parts and costs · 5 min read

About this template

A Spotify clone is a music player wrapped in a catalog: home shelves, playlist pages, a mini-player that follows you everywhere, a full Now Playing screen, search and a library of liked songs. Vibecode's template, Tunely, has all of it and plays real royalty-free songs, with a seek bar, shuffle, repeat and synced lyrics, as a native iPhone app written in Swift. Remix it and load your own music by chatting.

How to use it

  1. 1

    Remix the template

    Open the Tunely share page and press Remix. Vibecode copies the whole Swift project into your account, so you start from a working app instead of an empty screen. Remixing is free.

  2. 2

    Make it yours by chatting

    Tell the agent what to change in plain English, for example: “Rename the app to Sermonly, turn playlists into sermon series, and add playback speed and a 15-second skip to Now Playing.” Each change rebuilds the app and runs it in Vibecode's cloud iOS simulator, right in your browser.

  3. 3

    Publish to the App Store

    Click Publish, choose Publish to App Store and sign in with your Apple ID. Vibecode builds, signs and uploads the app to Apple, with no Mac and no Xcode. You need an Apple Developer account ($99/year) and the Plus plan or higher.

Features

  • Home shelves

    Greeting, quick-pick tiles and shelves like Made For You, Recently played and Popular albums.

  • Real playback

    Plays royalty-free songs with real elapsed and remaining time; next, previous and track end change the song.

  • Playlist pages

    Header gradient from the cover art, save count and length, shuffle and a sticky play button.

  • Mini-player

    Art, title, artist, play and pause and a live progress line on every screen.

  • Now Playing

    Scrubbable seek bar, shuffle, repeat off, all or one, like, devices and share.

  • Synced lyrics

    Lyrics card whose current line highlights as the song plays.

  • Search

    Browse-all genre tiles and live results for songs, artists and playlists.

  • Your Library

    Filter chips, sort, grid or list and Liked Songs that update as you heart tracks.

Add next, with one prompt each

  • Background and lock screen. Keep playing when the app is closed, with lock-screen controls.

  • Offline downloads. Save tracks to the device for playback without a connection.

  • Your own catalog. Upload tracks, artists and albums you own or license.

The prompt that built it

Paste it into a new iOS app to build your own copy from scratch, or change the brief first.

Prompt · 747 words

Build a polished, fully working native iOS app in SwiftUI named Tunely: an original music streaming app that recreates the core experience of Spotify, but with its own name, its own original logo and its own color palette. Do NOT use the Spotify name, logo, wordmark, app icon or any trademarked asset anywhere in the app. Design an original Tunely logo mark, drawn with SwiftUI shapes (Path/Canvas) or made as a generated image asset, and use it in the header.

Screens and flows (near-black #121212 theme with your own vivid accent color, e.g. coral #FF5A36, instead of green; bottom bar: Home, Search, Your Library, plus a persistent mini-player above it):
1. Home: greeting "Good evening" with avatar, chips (All, Music, Podcasts), a 2-column grid of 8 quick-pick tiles (art + name), then shelves: "Made For Ansh" (Daily Mix 1-5 with colored mix art), "Recently played", "Your top mixes", "Popular albums" and "Podcasts you might like". At least 10 playlists/albums and 40 tracks with invented artists, titles and durations.
2. Artwork: generate original cover art (bold abstract gradients, shapes and type) drawn in SwiftUI (gradients, Canvas shapes and type), or verified images.unsplash.com photos, so every cover is distinct.
3. Real audio: tracks play actual music with AVPlayer streaming from these royalty-free files: https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3 through SoundHelix-Song-16.mp3 (curl-check them). Map each fixture track to one of them.
4. Playlist / album screen: big cover with a header gradient taken from the cover's color that fades as you scroll, title, owner avatar, "1,204 saves · 2h 14m", heart, download, more, shuffle toggle and a large round accent Play button that sticks under the header on scroll. Track rows: title, explicit "E" badge on some, artist, more button. The playing track is shown in the accent color with animated equalizer bars.
5. Mini-player: art, title, artist, device icon, play/pause, and a thin live progress line. Tapping it slides up the Now Playing screen.
6. Now Playing (full screen, background tinted from the art): down-chevron (or swipe down) to close, "PLAYING FROM PLAYLIST" + name, big artwork that scales slightly when paused, title, artist, a heart that toggles with a pop, a scrubbable seek bar with real elapsed/remaining time, shuffle, previous, play/pause, next, repeat (off/all/one), devices and share, and a "Lyrics" card below with fixture lyrics whose current line highlights as the song plays. Next/previous and track end change the song.
7. Search: search bar and a "Browse all" grid of colorful genre tiles with tilted art; typing shows matching songs, artists and playlists live; tapping a song plays it.
8. Your Library: filter chips (Playlists, Artists, Albums, Podcasts), sort and grid/list toggle, "Liked Songs" first (with the count of songs you hearted, updated live), then playlists, artists (round) and albums. Liked Songs opens a playlist screen of your hearted tracks.

Rules for the whole app:
- Native SwiftUI for iOS 26, the deployment target the Vibecode iOS template already uses (do not change it). iPhone-first layout. SF Symbols are fine for UI icons (never for the Spotify logo or any brand mark).
- Everything runs on-device from realistic, deterministic fixture data in one Swift file (e.g. Fixtures.swift: real-sounding names, handles, numbers, timestamps, captions). No backend (leave the backend/ folder alone and make no network calls except loading images and media), no login, no permissions (no camera, photos, location, contacts, notifications, microphone). Do not persist state (no UserDefaults, @AppStorage, SwiftData or files): every launch starts from the same fixture state, so the demo is repeatable.
- Remote images: load images.unsplash.com photo URLs (with ?w=800&q=80 style params) with AsyncImage (or a small cached image view) and a tasteful placeholder. Verify every image and media URL with `curl -s -o /dev/null -w "%{http_code}" <url>` before you use it and replace any that do not return 200. No broken or blank images anywhere.
- Polish: native-feeling spacing and typography, safe areas, smooth spring animations (.spring/.snappy, most under 350 ms), matchedGeometryEffect for hero and expand/collapse transitions where it helps, .sensoryFeedback haptics on key taps, pressed states, and loading/empty states. Simulated waits stay short (under 3 s). Every button visible on screen does something sensible; nothing is a dead end.
- Keep the compiler happy: small files (under ~300 lines each), big view bodies split into subviews, and no long chained expressions, so nothing hits "unable to type-check this expression in reasonable time".
- It must build with zero errors and run in the iOS simulator with no crash. Walk through every flow above and fix anything broken.
All templates