OwnTone Sync

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.

2025
Ongoing
ActiveCustom HardwareOpen Source
Source CodeProject Documentation
Live Demo(Requires local OwnTone server hardware setup)
Google Play Store(Not yet published to Play Store)
Owntone Sync Banner

Banner

Owntone Sync Screenshot

Server Configuration

Owntone Sync Screenshot

Synchronization Screen

Owntone Sync Screenshot

Media Browser

Owntone Sync Screenshot

Sync History

OwnTone Sync brings back the classic music ownership experience of iTunes and iPod for the modern era. This Flutter-based Android application connects to a self-hosted OwnTone server on your local network, allowing you to synchronize your entire music collection to your mobile device for offline listening. The app handles complex background synchronization, file streaming, and playback tracking while maintaining the simplicity of the original iPod sync workflow. Built as a learning project to transfer full-stack web development skills to mobile development, it demonstrates advanced mobile architecture patterns including Flutter-Kotlin interoperability, background execution, and efficient media file management.

Technologies Used

framework

Flutter

language

DartKotlin

platform

Android

other

REST APIBackground ProcessingMedia Streaming

Challenges

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.

Key Learnings

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 Improvements

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.

Project Details

Difficulty
advanced
Duration
Ongoing
Role
Solo Developer

Related Projects

Back to all projects