Frontend technologies
Swift 5.x
The entire frontend is written in Swift, Apple’s modern programming language for iOS and macOS development. Why Swift:- Native macOS performance
- Type safety and memory management
- Modern concurrency with async/await
- Strong integration with Apple frameworks
SwiftUI
All UI is built with SwiftUI, Apple’s declarative UI framework. SwiftUI features used:@StateObjectand@ObservedObjectfor state management@Publishedproperties for reactive updates- Custom view modifiers (liquid glass effect)
- Animations and transitions
- macOS-specific components (NSPanel, NSWindow)
AppKit (Cocoa)
For advanced macOS features not available in SwiftUI:- NSPanel - Floating windows
- NSStatusItem - Menu bar integration
- NSWindow - Window management
- Carbon Events - Global hotkey registration
AVFoundation
Used for audio playback:- AVPlayer - Core audio playback
- AVPlayerItem - Stream URL handling
- AVAudioSession - Audio session management (iOS)
Foundation
Core Swift framework for:URLSession- Network requestsProcess- Python process managementPipe- Inter-process communicationUserDefaults- Settings persistenceFileManager- File system operationsJSONEncoder/JSONDecoder- JSON serialization
Combine
Used for reactive programming:- Publishers and subscribers
- Debounced search queries
- State observation
- Timer-based operations
Backend technologies
Python 3.x
The backend service is written in Python for easy integration with music APIs. Python version: 3.8+ Why Python:- Excellent music API libraries (ytmusicapi, yt-dlp)
- Rapid development and prototyping
- Rich ecosystem for web APIs
- Easy JSON handling
Core Python libraries
ytmusicapi (>= 1.7.0)
Unofficial YouTube Music API client. Capabilities:- Search songs, albums, artists, playlists
- Browse home feed and charts
- Get album/playlist/artist details
- Watch playlists and radio
- Mood and genre playlists
yt-dlp (>= 2023.12.30)
Powerful YouTube video/audio downloader and stream extractor. Capabilities:- Extract direct stream URLs from YouTube
- Support for multiple quality levels
- Format selection (audio-only, video+audio)
- Metadata extraction
requests (>= 2.31.0)
HTTP library for API requests. Usage in Izzy:- JioSaavn API requests (saavn.dev)
- Tidal API integration
- Gemini AI API calls
- Image thumbnail fetching
Built-in Python modules
Standard library modules used:- json - JSON encoding/decoding for IPC
- sys - stdin/stdout communication
- asyncio - Async request handling
- logging - Error logging and debugging
- subprocess - Process management
- os - File system operations
- html - HTML entity decoding
- re - Regular expressions
- base64 - Base64 encoding/decoding
- time - Timing and delays
- traceback - Error reporting
Music service APIs
YouTube Music
Integration: ytmusicapi + yt-dlpStream quality: Best available audio (typically 128-256 kbps AAC) Features:
- Comprehensive search (songs, albums, artists, playlists)
- Official music catalog
- Auto-generated playlists and mixes
- Personalized recommendations
- Charts and trending content
JioSaavn
Integration: saavn.dev APIStream quality: 320 kbps MP3 Features:
- Indian music catalog
- Bollywood, regional, and international music
- Direct stream URLs
- Album and playlist support
https://saavn.dev/api/
Tidal
Integration: Tidal API (unofficial)Stream quality: Up to HI_RES_LOSSLESS (24-bit/96kHz FLAC) Quality tiers:
HI_RES_LOSSLESS- 24-bit FLAC (Master Quality)HI_RES- 24-bit FLACLOSSLESS- 16-bit FLACHIGH- 320 kbps AACLOW- 96 kbps AAC
- Lossless and hi-res audio
- Quality badges in UI
- Paginated results for large catalogs
- Artist discographies
AI integration
Google Gemini AI
Model: gemini-2.5-flash-litePurpose: AI-powered music search and recommendations Capabilities:
- Natural language music search
- Query understanding and expansion
- Genre and mood detection
- Artist and song suggestions
- Contextual insights
geminiApiKey)
Development tools
Xcode
Version: Xcode 14+Purpose: Swift development, UI design, debugging Features used:
- SwiftUI previews
- Instruments for performance profiling
- Breakpoint debugging
- Memory graph debugger
Python virtual environment
Location:Resources/music_env/Management: pip Setup:
Build system
Build tool: Xcode Build SystemPackage manager: Swift Package Manager (future), pip (Python) Build process:
- Compile Swift code
- Bundle Python virtual environment
- Copy ytmusic_service.py to Resources
- Generate app bundle
- Code signing
Inter-process communication
JSON over pipes
Swift and Python communicate using JSON over stdin/stdout pipes. Swift side:Platform requirements
macOS
Minimum version: macOS 12.0 (Monterey)Recommended: macOS 13.0+ (Ventura or later) Required frameworks:
- SwiftUI
- AppKit
- AVFoundation
- Foundation
- Combine
Python runtime
Version: Python 3.8+Location: Bundled in app or system Python Paths checked (in order):
Resources/music_env/bin/python3(bundled venv)Resources/python_runtime/bin/python3(bundled runtime)/usr/bin/python3(system)/opt/homebrew/bin/python3(Homebrew)/usr/local/bin/python3(Homebrew old)
Performance optimizations
Swift optimizations
- URLCache configuration - Limited cache size to prevent bloat
- Quality of Service -
.utilityfor background tasks - Lazy loading - Views load content on-demand
- Memory management - Periodic cache clearing
Python optimizations
Environment variables:.utilityQoS for low CPU priority- Logging level set to WARNING only
- Inactivity-based suspension
Dependency versions
Current dependencies fromrequirements.txt:
- Regular updates for security patches
- Test compatibility before upgrading
- Pin major versions to prevent breaking changes