A native iOS application that allows users to search for songs using the iTunes API and play them in a custom player interface.
- Song Search: Search for songs using the iTunes API with a minimum of 3 characters
- Debounced Search: Implements debouncing to avoid excessive API calls
- Image Caching: Efficient image loading and caching for album covers
- VIPER Architecture: Clean architecture implementation using VIPER pattern
- Audio Playback: Real audio playback using AVPlayer with iTunes preview URLs
- Language: Swift
- Framework: UIKit
- Architecture: VIPER
- Minimum iOS Version: iOS 15.0
- Networking: URLSession (no third-party dependencies)
- Concurrency: Swift Concurrency (async/await)
- Audio: AVPlayer for streaming playback
iTunesClone/
├── App/ # Application setup
├── DI/ # DI structure
├── ModelLayer/ # Data models and API requests
├── PresentationLayer/ # VIPER modules (Search, Player)
├── ServiceLayer/ # API, Image, and Audio services
├── UIComponents/ # Reusable UI components
├── Tools/ # UITableViewDataSource helper
└── Resources/ # Assets and configurations
- Search: Debounced search with loading states
- Image Loading: Cached image loading with proper cell reuse
- Audio Playback: Real streaming audio from iTunes preview URLs
- Error Handling: User-friendly error messages and alerts
- Xcode 14.0+
- iOS 15.0+
- Swift 5.0+
- Clone the repository
- Open
iTunesClone.xcodeprojin Xcode - Build and run the project