-
-
keeps app icon — 1024 × 1024, uncropped.
-
Keep who they are, not just what they look like.
-
Together Time in the live iPhone app — unframed 1179 × 2556 screenshot.
-
Together Time: a little less phone, a little more family.
-
Capture it in seconds: type it, snap it or say it.
-
The way they said it: voice, laughter and pauses.
-
Every masterpiece, one growing gallery.
-
Just your family. Private by default.
Inspiration
keeps all started with a pile of nursery drawings. I was walking to the garage carrying about 15 pictures my daughter had made in one week. The fridge was full, and the rest were heading for the drawer.
It made me think about the baby books we bought for both children. My wife and I filled the first few pages, then life gets busy! My camera roll is full of pics and videos, but it keeps what they looked like rather than who they are, the funny phrases, changing voices, obsessions that last 2 weeks and then they say they never liked it. Even just the ordinary family days.
Didn't want to give parents another organising job. I wanted capture to be super quick, then for keeps to turn the moments into something worth revisiting!
What it does
keeps is a private family journal for the parts of growing up that a camera roll misses.
Parents can:
- Capture text, photos, video, spoken transcription and original voice notes.
- Start from the app, a Home Screen widget, Control Centre or the iOS share sheet.
- Invite a partner, grandparents and close family into one private family space.
- Revisit memories from the same day in earlier years.
- Open and view automatically curated sets that gather related moments around holidays, birthdays, school and ordinary weeks.
- Browse a growing Gallery of drawings and other visual keeps.
- Seal a letter until a chosen future date.
- Export their complete archive and original files.
During Shipaton, I released a new version that adds Together Time. The user chooses 15, 30 or 60 minutes, authenticates with Face ID, Touch ID or their device passcode, and iOS blocks all the eligible apps and websites. keeps will stay available in a focused capture-only mode for text, camera, video and voice. The session ends automatically, or the device owner can end it early after authenticating again.
keeps is private by default: no advertising, no sale of family data and no use of family content to train AI models. I landed on a 30-day no-card trial to allow users to really feel the value, then that is followed by one monthly or yearly subscription covering the entire family, including unlimited invited relatives.
How I built it
The iPhone app is native SwiftUI. Supabase provides authentication, the family data model and row-level access controls. Media is stored separately from the app database, with short-lived signed URLs protecting private files.
RevenueCat powers App Store subscriptions and keeps purchase and restore state aligned with a family-level entitlement on the backend. This lets one person own the purchase while everyone in the private family space receives access.
OpenAI Whisper handles speech transcription. Anthropic Claude classifies text, audio transcripts and photos so keeps can suggest tags, descriptions and sets. The original memory is never rewritten, and the family remains in control of the result.
Together Time uses Apple's Family Controls, Managed Settings and Device Activity frameworks. A system schedule is established before shielding begins; a monitor extension removes the shield when time expires; and Face ID, Touch ID or passcode protects manual starts and early exits. Minimal shared state contains only the session timing and lifecycle information required for safe recovery.
PostHog measures product milestones without family content, and Sentry monitors crashes and operational failures. The public website and supporting APIs use Next.js and TypeScript.
Challenges I ran into
Challenge number 1: dad of two kids under 5 and a full time 9-5 has to be up there!
App wise - my main challenge was making keeps useful without asking the user (very likely a tired parent) to become an archivist. All the capture routes had to feel like one product, reach the same timeline and look nice at the same time!
Getting the curation accurate made me think about restraint. I wanted keeps to notice when moments belong together without inventing a family story or changing what someone wrote. That boundary shaped both the classification pipeline and the reviewable set experience. It did fail a lot during building so lot's of tweaks were needed...
Together Time introduced a different safety problem. A cosmetic focus mode would be easy to escape, but a system-backed shield that failed to expire could make the phone feel stuck. I designed the start as a transaction: schedule the automatic end, persist minimal state, apply the shield, and roll everything back if any step fails. Launch, foreground, force-quit, reboot and authorization changes all trigger reconciliation so stale restrictions are cleared.
The first App Store version launched on 20 August 2026. I got friends and family to test which inevitably then exposed clipped layouts, intermittent Gallery loading...the list goes on! Fixing those issues reinforced a simple lesson: Do better testing!
Accomplishments that I'm proud of
- A native capture experience that saves words, voices, photos and video in seconds.
- Original voice recordings that live beside the related words and pictures to give users memories the context they'll forget.
- A private, invitation-only family space without a public feed.
- Nailing the curation for sets that turn scattered keeps into a cute little package a family can revisit.
- The idea to merge a family archive app with Together Time and help parents be more present
- Complete family export with original media was super important for me as part of trust with the user.
- The fact I got a tested App Store product with RevenueCat subscriptions, accessibility improvements and post-launch reliability fixes all in before deadline!
What I learned
Voice, privacy and export were essential, but they are not the whole differentiator. So I doubled down on ease of capture followed by a useful result and think that helps sell the app.
Post-launch testing taught me to treat all those edge-cases as product design. Accurate feedback, recovery states and dynamic type support originally sounded to me like they would be afterthoughts/nice to have, but together they probably decide whether a family trusts the app.
Building the Together Time sharpened that for me. I knew this features would affect the rest of a person's device so had be honest about their limits, conservative as I could be with permissions and designed around recovery.
What's next
The immediate priority is to learn how families use the newly released Together Time feature, where they hesitate before their first keep, and how to make the live app more reliable and accessible on real devices.
Past that, keeps can become even better at thoughtful curation: noticing phases, relationships, changing interests and running family jokes rather than mainly locations and calendar events.
Built With
- anthropic-claude
- app-intents
- avfoundation
- digitalocean-spaces
- ios
- next.js
- openai-whisper
- posthog
- revenuecat
- sentry
- storekit
- supabase
- swift
- swiftui
- typescript
- vercel
- widgetkit
- xcode


Log in or sign up for Devpost to join the conversation.