Les metrics
Pourquoi Keepio existe
Keepio est née d'un constat simple : on a tous des idées qui nous viennent à des moments random, et on les perd systématiquement. L'app permet de capturer une idée en quelques secondes, de l'organiser dans des collections et de la développer au fil du temps.
L'interface est pensée pour être rapide et intuitive : pas de friction, pas de setup compliqué. Tu ouvres, tu notes, tu fermes. Et grâce à CloudKit, tout est synchronisé entre tes appareils Apple.
C'est mon premier vrai projet solopreneur, et celui qui m'a le plus appris sur la conception produit, le marketing d'app et le cycle complet de publication sur l'App Store.
Les coulisses
Le problème résolu
Mes tâches vivaient dans une app, mon minuteur dans une autre, et mes projets nulle part. Rien ne reliait le temps passé à ce qui avançait vraiment : je pouvais enchaîner les sessions sans savoir si un projet progressait. Keepio part du projet plutôt que de la tâche. Une liste claire, un objectif à la fois. Le Pomodoro y est intégré, donc chaque session compte pour un projet précis et laisse une trace. La progression se lit en un coup d'œil, les échéances restent dans le calendrier plutôt que dans une notification de plus. Tout se synchronise entre iPhone, iPad et Mac sans compte à créer.
Behind the scenes
Un an de développement en solo, et deux décisions structurantes que je referais à l'identique. La première : pas de modularisation SPM. Un seul target, organisé par namespaces d'enums — App.Project.Views.Editor, App.Todo.UseCases. Le conseil habituel dit de découper en modules ; sur un projet solo, le coût de la gestion des dépendances dépassait le bénéfice. Deux dépendances externes en tout, dont une que j'ai écrite moi-même. La seconde : figer les versions de schéma plutôt que de les nettoyer. Quatorze versions gelées, V1 à V14, toutes en migration légère, et aucune jamais supprimée. Quand des données synchronisées via CloudKit vivent sur les appareils de vrais utilisateurs, effacer une version passée revient à casser la mise à jour de ceux qui ont sauté deux mises à jour. Ce qui a fait mal, c'est la coupe de périmètre sur le partage de projets. La fonctionnalité était développée ; je l'ai retirée de l'interface pour sortir la version, en gardant la couche de données dormante et tout le code sur une branche. Décider d'arrêter quelque chose de fini est plus dur que de l'écrire. Le modèle économique a aussi pivoté en cours de route, de l'abonnement à l'achat unique à vie, avec les anciens abonnés conservés dans leurs droits.
Leçons apprises
- 01Un projet solo n'a pas besoin de l'architecture d'une équipe de dix personnes.
- 02Une version de schéma ne se supprime jamais : quelqu'un est resté sur l'ancienne.
- 03Retirer une fonctionnalité terminée pour sortir est une décision, pas un échec.
- 04Swift 6 en concurrence stricte coûte cher à l'adoption et se rembourse en bugs jamais écrits.
- 05Des jetons de design, aucune valeur en dur : c'est ce qui rend une refonte visuelle possible.
- 06Le modèle économique se teste comme une fonctionnalité, et se corrige de la même façon.
Sous le capot
Les technos qui font tourner Keepio et pourquoi ces choix.
SwiftLangageLe langage natif d'Apple, performant et type-safe.
SwiftUIInterfaceFramework déclaratif pour des UI natives et réactives.
SwiftDataPersistanceLe successeur de Core Data, intégré nativement avec SwiftUI.
CloudKitSynchronisationSync iCloud automatique entre tous les appareils Apple.
Apple Sign InAuthentificationConnexion rapide et sécurisée avec un compte Apple, sans créer de mot de passe.
XcodeIDEL'environnement de développement officiel Apple.
WidgetKitWidgetsPour offrir des widgets iOS permettant d'accéder rapidement aux idées depuis l'écran d'accueil.
FoundationModelsIABientôtPour proposer des suggestions intelligentes basées sur tes idées et projets.
App IntentsRaccourcis & IABientôtPermettre aux utilisateurs d'utiliser Keepio en dehors de l'application
J'en parle aussi sur le blog
ios
safeAreaInset vs safeAreaBar en SwiftUI
safeAreaInset et safeAreaBar épinglent du contenu fixe en bord d'écran. Différences visuelles, pièges et guide pour choisir le bon modifier SwiftUI.
Lire l'article→ios
Ajouter du tracking à Keepio sans trahir ses utilisateurs
Comment j'ai instrumenté Keepio avec Sentry et TelemetryDeck en respectant la vie privée : façade, Adapters, enum exhaustive et opt-in/opt-out différencié.
Lire l'article→ios
Post-mortem : un an de Keepio
Bilan technique, business et humain d'une app iOS indie après 12 mois de développement solo.
Lire l'article→ios
Abonnement vs achat unique : pourquoi j'ai changé le business model de mon app iOS
Pourquoi l'abonnement n'a pas marché sur Keepio, et comment elle est passée à un achat à vie à 9,99€.
Lire l'article→Envie de découvrir Keepio ?
Télécharge l'app et fais-moi tes retours.
