This is a Kotlin Multiplatform project targeting Android, iOS, Desktop and WASM(WEB) clients. Phovo is intended to be a self hosted cloud storage client that enables seamless access to photos and videos on all compatible target devices. While initially support for 4 clients is planned, if there is strong market demand for this product Wear OS, Android XR, and Android TV may eventually be targeted.
All applications are developed within a single codebase using Kotlin Multiplatform technology. The UI is implemented using Compose Multiplatform UI framework.
| Android | iOS |
|---|---|
![]() |
![]() |
Phovo is currently undergoing active development. Core logic, architecture, and UI foundations are still being refined. The following is the planned release timeline:
Availability: Internal
Focus:
- Early testing of core features
- Rapid iteration
- Expect bugs, instability, and breaking changes without backward compatibility
- Continued development of initial feature set
Availability: Public
Focus:
- Initial feature development complete
- No further breaking changes
- Begin stabilization efforts
- Resolve remaining functional issues
Availability: Android, iOS & Desktop
Focus:
- Production-ready release
- All critical and high-priority bugs resolved
- Full cross-platform support
The project can be assembled in an environment which has been configured for Kotlin Multiplatform development, please follow the official guide: https://kotlinlang.org/docs/multiplatform/quickstart.html#set-up-the-environment
The Phovo project makes use of custom source sets to maximize code re-usability when certain features are supported only by a subset of platforms. To learn more about custom source sets visit: https://kotlinlang.org/docs/multiplatform/multiplatform-advanced-project-structure.html#declaring-custom-source-sets
The Phovo project follows the modular design guidelines published by Google for mobile development:
https://developer.android.com/topic/modularization/patterns
As mentioned in the guidelines modularization can be done by feature or by layer. Due to the flexibility of the gradle build system, projects can also adopt a flexible modular design where modularization is done by both feature and layer. A flexible modular design is required for the Phovo project as there are currently 4 target platforms(Android, IOS, Web, Desktop).
- For cases where a feature is small and all platforms may adopt the same UI, the module in the
featuredirectory will contain UI, Domain, and Data layers - For cases where a feature is large and/or specific targets require different UI layer implementations, modularization will be done by both feature and layer.
When adding new dependencies WASM may require a yarn lock upgrade
./gradlew kotlinUpgradeYarnLock




