This is a Spotify Clone App built using Swift and UIKit, designed to replicate the core features and functionality of the Spotify music streaming platform. This project demonstrates a clean architecture, modular design, and integration with modern iOS development practices.
-
User Authentication
- Login with Spotify API integration
- Secure user authentication flows
-
Browse and Search
- Explore curated playlists, albums, and categories
- Search for artists, albums, tracks, shows, and episodes
-
Music Playback
- Stream songs in-app
- Playback controls (play, pause, skip, rewind)
-
User Library
- Save favorite tracks, albums, playlists, and shows
- Access recently played items
-
Dynamic UI
- Adaptive layouts for iPhone and iPad
- Dark mode support
- Language: Swift
- Framework: UIKit
- Networking: URLSession, Spotify Web API
- Persistence: UserDefaults/CoreData
- Dependency Management: CocoaPods/Swift Package Manager (SPM)
- Version Control: Git
- iOS 13.0+
- Xcode 14+
- Spotify Developer Account
-
Clone the repository:
git clone https://github.com/stevechacha/SpotifyClone.git cd SpotifyClone
-
Install dependencies:
- If using CocoaPods:
pod install
- If using Swift Package Manager, dependencies will resolve automatically when you open the project in Xcode.
- If using CocoaPods:
-
Set up Spotify API:
- Create a developer account at Spotify Developer Dashboard.
- Create a new app and retrieve your Client ID and Client Secret.
- Add your redirect URI in the Spotify app settings (e.g.,
spotify-clone://callback
). - Update the app configuration with your credentials:
static let clientID = "YOUR_CLIENT_ID" // Replace with your client ID static let clientSecret = "YOUR_CLIENT_SECRET" // Replace with your client secret
-
Open the project in Xcode:
open SpotifyClone.xcworkspace
-
Build and run the app on a simulator or device.
- Models: Data structures and API response models
- Views: UIKit components for UI rendering
- ViewModels: Handles data binding and business logic
- Controllers: Manage views and user interaction
- Services: API calls and networking logic
Contributions are welcome! To contribute:
- Fork the repository
- Create a new branch (
git checkout -b feature/your-feature-name
) - Commit your changes (
git commit -m 'Add some feature'
) - Push to the branch (
git push origin feature/your-feature-name
) - Open a Pull Request
This project is licensed under the MIT License. See the LICENSE file for more information.