LAPOV.DEV// v2026.09.14
P-001 // 2026·Mobile

Rest With Me

Rest With Me est un espace silencieux sur iPhone pour se souvenir de ceux qui sont partis : une carte de mémoire — portrait, nom, citation, dates d'une vie — puis un moment de recueillement en noir et blanc qui ne presse jamais. Application iOS 26 native, sans publicité, sans mesure d'audience et sans compte : elle n'a aucun serveur propre et pas un seul service tiers.

Une application conçue pour être ouverte rarement

On crée une carte de mémoire — un portrait, un nom, une citation, les dates d'une vie — puis on touche la carte pour ouvrir un moment de recueillement : deux secondes d'écran silencieux, des photographies qui se succèdent toutes les cinq secondes et tournent en boucle pendant une minute, un fondu au blanc d'environ trois secondes qui ramène au présent. Un second mode, « Se souvenir de tous », parcourt l'ensemble des cartes groupe par groupe, quinze secondes par personne. Aucun minuteur qui presse, aucune récompense, aucun bouton de partage.
L'app est écrite en SwiftUI avec le langage visuel Liquid Glass d'iOS 26, en MVVM strict : les vues affichent, les ViewModels @Observable portent l'état, les @Model SwiftData sont l'unique source de vérité. Les deux écrans de lecture partagent le même moteur de scènes et la même couche de rendu — la progression reste ainsi continue sur toute la session au lieu de se réinitialiser à chaque image. Les photographies sont désaturées à l'affichage ; les originaux importés ne sont jamais modifiés. Zéro dépendance externe : pas un seul package tiers dans le projet.

Confidentialité par construction, synchronisation par iCloud

Les données vivent dans SwiftData et se synchronisent via le conteneur CloudKit privé de l'utilisateur : une carte créée sur un iPhone le suit sur le suivant, sans que le développeur puisse y accéder. La contrainte se paie côté modèle — chaque propriété optionnelle ou dotée d'une valeur par défaut, pas d'@Attribute(.unique), relations inverses et suppression en cascade ou nullify, ordre des photos géré à la main, blobs en .externalStorage — faute de quoi le ModelContainer refuse de démarrer.
Aucun backend, aucun SDK tiers, aucune mesure d'audience, aucun compte à créer. La monétisation passe par StoreKit 2 : une carte gratuite, puis un achat unique non consommable qui lève la limite — pas d'abonnement, ni maintenant ni plus tard. La source de vérité reste Transaction.currentEntitlements, le fait d'avoir acheté n'est dupliqué nulle part, et les cartes déjà créées ne sont jamais bloquées, même après un remboursement. Interface localisée en français, anglais, russe et espagnol.

▸ Screenshots

Rest With MeRest With Me