CL.
All apps
Keepio icon

Keepio

AvailableiOSmacOSv3.6.0

Capture and organize your ideas

Live · 30 days

The metrics

73Downloads
2.8kImpressions
5.0 ★15 reviews
The story

Why Keepio exists

Keepio started from a simple observation: we all get ideas at random moments, and we systematically lose them. The app lets you capture an idea in seconds, organize it into collections, and develop it over time.

The interface is designed to be fast and intuitive: no friction, no complicated setup. You open it, you note, you close. And thanks to CloudKit, everything is synced across your Apple devices.

It's my first real solopreneur project, and the one that taught me the most about product design, app marketing, and the full App Store release cycle.

Case study

Behind the scenes

The problem solved

My tasks lived in one app, my timer in another, and my projects nowhere at all. Nothing tied the hours I put in to what was actually moving forward — I could run session after session without knowing whether a project had advanced. Keepio starts from the project rather than the task. A clear list, one goal at a time. The Pomodoro is built in, so every session counts towards a specific project and leaves a trace behind it. Progress reads at a glance, deadlines stay in the calendar instead of becoming one more notification. Everything syncs across iPhone, iPad and Mac with no account to create.

Behind the scenes

A year of solo development, and two structural decisions I would make again exactly the same way. The first: no SPM modularisation. A single target, organised through enum namespaces — App.Project.Views.Editor, App.Todo.UseCases. The usual advice is to split into modules; on a solo project, the cost of managing those dependencies outweighed the benefit. Two external dependencies in total, one of which I wrote myself. The second: freezing schema versions rather than tidying them away. Fourteen frozen versions, V1 through V14, every one a lightweight migration, none ever deleted. When CloudKit-synced data lives on real people's devices, removing a past version means breaking the update for anyone who skipped a couple of releases. The part that hurt was cutting project sharing from the scope. The feature was built; I pulled it out of the interface to ship the release, keeping the data layer dormant and the whole implementation on a branch. Deciding to stop something that already works is harder than writing it. The business model pivoted along the way too, from a subscription to a one-off lifetime purchase, with existing subscribers keeping what they had paid for.

Lessons learned

  • 01A solo project does not need the architecture of a ten-person team.
  • 02You never delete a schema version: someone out there is still on the old one.
  • 03Cutting a finished feature to ship is a decision, not a failure.
  • 04Swift 6 strict concurrency is expensive to adopt and pays you back in bugs never written.
  • 05Design tokens, no hardcoded values: that is what makes a visual redesign possible at all.
  • 06A business model is tested like a feature, and corrected the same way.
Tech stack

Under the hood

The technologies that power Keepio and why I chose them.

SwiftSwiftLanguage

Apple's native language, performant and type-safe.

SwiftUISwiftUIInterface

Declarative framework for native, reactive UI.

SwiftDataSwiftDataPersistence

The successor to Core Data, natively integrated with SwiftUI.

CloudKitCloudKitSync

Automatic iCloud sync across all Apple devices.

Apple Sign InApple Sign InAuthentication

Fast, secure sign-in with an Apple account, no password required.

XcodeXcodeIDE

Apple's official development environment.

WidgetKitWidgetKitWidgets

iOS widgets for quick access to ideas from the home screen.

FoundationModelsFoundationModelsAISoon

Smart suggestions based on your ideas and projects.

App IntentsApp IntentsRaccourcis & IASoon

Permettre aux utilisateurs d'utiliser Keepio en dehors de l'application

Want to try Keepio?

Download the app and share your feedback.