A modern, offline-first app designed to track the age of important life events. This project showcases modern, multi-platform development best practices - including a clean, shared architecture, a reactive and adaptive UI, and a fully automated CI/CD pipeline for desktop releases—all built with Kotlin Multiplatform and Compose Multiplatform.
- 💻 Multiplatform Support: A single, shared codebase for Android, Windows, macOS, and Linux.
- 📱 Adaptive UI: The interface intelligently adapts to different screen sizes, providing a great experience on phones, tablets, and desktops.
- 📅 Track Key Life Events: Add and manage multiple occasions like birthdays, anniversaries, and milestones.
- ⏱️ Detailed Age Breakdown: Instantly see the elapsed time in years, months, days, and even down to the second.
- 🎨 Dynamic Theming: Personalize your experience by switching between Light, Dark, or System themes.
- 🔄 Seamless In-App Updates (Android): The app checks for new versions and allows you to update directly from the Play Store.
- 🔒 100% Offline & Private: All your data is stored securely on your device and is never collected or transmitted.
This project follows the principles of Clean Architecture, separating concerns into distinct layers (Data, Domain, and Presentation) to create a scalable and maintainable codebase. The shared
module contains all business logic and UI, which is then consumed by platform-specific application modules.
Category | Technologies & Libraries |
---|---|
Core | Kotlin Multiplatform, Kotlin Coroutines, Flow |
UI (Shared) | Compose Multiplatform, Material 3, Compose Navigation, Adaptive Layouts |
Architecture | MVVM with a Coordinator ViewModel, MVI-like UDF, Use Cases |
Dependency Injection | Koin |
Data Persistence | Room (Multiplatform), Preference DataStore |
Date & Time | Kotlinx DateTime |
CI/CD | GitHub Actions (for automated desktop releases) |
Mohammad Arif
- GitHub: @kotlang-dev
- YouTube: Mohammad Arif
- Udemy Courses: