A mobile app that recreates the iTunes/iPod sync experience by synchronizing your music collection from an OwnTone server to your Android device for offline playback.

Banner

Server Configuration

Synchronization Screen

Media Browser

Sync History
The project required solving several complex mobile development challenges: implementing reliable background execution for long-running sync operations, building an efficient ETL pipeline to transform and store music metadata, streaming file downloads directly to device storage without excessive memory usage, and tracking playback state and skip events across the Flutter-Kotlin boundary. The handoff between Flutter's UI layer and Kotlin's native Android capabilities required careful architecture to maintain performance and reliability.
This project served as a practical bridge from full-stack web development to mobile development. Key learnings included understanding mobile-specific constraints like battery optimization and background execution limits, working with platform channels to integrate native Android code with Flutter, managing file I/O and storage efficiently on mobile devices, and designing offline-first architectures that gracefully handle network availability. The experience highlighted both the similarities (REST APIs, state management) and differences (lifecycle management, platform-specific APIs) between web and mobile development.
Future enhancements could include iOS support to make it truly cross-platform, implementing intelligent sync strategies (delta syncing, priority queuing), adding support for playlist management and smart playlists, implementing a more sophisticated caching strategy for album artwork, and potentially adding peer-to-peer sync capabilities for scenarios without a central server.