Inspiration

As developers, we tried dozens of task managers. Most were either too simple to be useful or too complex to handle quickly. We found ourselves spending more time managing the tool than doing the work.

We built Kronopp to fix this: a tool that applies the speed of a command line with the polish of a native app. We wanted something that gets out of the way and lets us focus.

What it does

Kronopp is a local-first task manager that syncs when you need it.

  • Capture: Instantly add tasks to an Inbox to process later.
  • Focus: The 'Today' view filters what matters right now, hiding the rest.
  • Organize: Create custom lists to separate work from personal life.
  • Habits: Handle recurring tasks, deadlines, and snoozing.
  • Sync: Under the hood, data syncs safely to the cloud, ensuring availability across all your devices.

How we built it

We bet on Kotlin Multiplatform (KMP) and Compose Multiplatform to share nearly 100% of our code.

  • UI: We avoided platform-specific UI code entirely, relying on Compose to render consistent interfaces on both Android and iOS.
  • Dependency Injection: Koin handles DI because it's lightweight and KMP-friendly.
  • Data: Room (SQLite) ensures the app works offline. A custom sync engine on top of Firebase Firestore handles data replication.
  • Monetization: RevenueCat handles 'Pro' subscription entitlements, simplifying cross-platform billing.

Challenges we ran into

  • Sync Logic: Handling offline updates conflicting with remote changes required meaningful conflict resolution strategies.
  • State Management: Ensuring the UI reacts instantly (optimistic updates) while the background sync runs asynchronously took several iterations.
  • Platform APIs: Wrapping specific APIs like Notifications (Alarmee) into common interfaces.

Accomplishments that we're proud of

  • One Codebase: Shipped a fully functional cross-platform app with a single Kotlin codebase.
  • Zero Latency: Achieved fast task capture and scheduling, ensuring no loading spinners for local actions.
  • Native Feel: implemented a local-first architecture that feels completely native, despite being cross-platform.
  • Seamless Billing: Successfully integrated RevenueCat for subscriptions without duplicating logic.

What we learned

  • KMP Discipline: KMP is production-ready but requires strict architectural discipline.
  • UI Tuning: "Sharing UI" via Compose requires careful tuning to feel right on native platforms (iOS bounce, gestures, etc.).
  • Data Sync: Syncing data is a distinct, complex problem from merely storing data.

What's next for Kronopp

We have a clear roadmap to expand Kronopp's capabilities while maintaining its core simplicity:

  • Smart Device Standby: Intelligent notification routing that only alerts the device you are currently using.
  • Web Browser Extension: A companion extension for quick task capture directly from your browser.
  • Productivity Analytics: Visual performance graphs to help you understand your habits and history.
  • AI Assistant: A fully vocal, context-aware AI assistant for hands-free task management.

Built With

Share this project:

Updates