Skip to content

semjonG/iTunesClone

Repository files navigation

iTunes Clone

A native iOS application that allows users to search for songs using the iTunes API and play them in a custom player interface.

Features

  • 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

Technical Stack

  • 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

Project Structure

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

Key Features

  • 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

Requirements

  • Xcode 14.0+
  • iOS 15.0+
  • Swift 5.0+

Installation

  1. Clone the repository
  2. Open iTunesClone.xcodeproj in Xcode
  3. Build and run the project

About

iTunes API song searcher and player with UIKit, VIPER, Swift Concurrency

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages