Once Kept
Home inventory app
A phone app for iPhone and Android that turns your home into a searchable list of everything you own. Take a photo, note where it lives, and find it again in seconds.
Visit Live Site

Every home has drawers, boxes and shelves where things seem to disappear. When you need a cable, a document or a keepsake, you end up searching through everything.
Top highlights

Just take a photo
No lists to type. The app looks at each photo, suggests a name and sorts it into your own categories.

Remember exactly where
Each item keeps its room, its category and a short note like “third drawer from the top”. Type “car keys” and the answer is right there.

Everything sorted by room
Items are grouped by where they are kept, with your own categories and icons. Search by name, category or place from the home screen.
What it changes at home
Found in seconds
“Where did I put that?” gets a quick answer, instead of a search through every drawer.
Shared with family
Invite family members with a short code, so everyone knows where shared things are kept, on iPhone or Android.
Private by design
Photos are stored encrypted, and items you mark private stay hidden even from the people you share with.
Project overview
- Product
- Once Kept, a home inventory app for iPhone and Android.
- My role
- Product design and development of the mobile app, the backend and the website.
- Deliverables
- One app for iPhone and Android
- AI that names an item from a photo and suggests a category
- Rooms, categories, notes and search
- Family sharing with short invite codes
- Encrypted photo storage and private items
- Subscription plans billed through the App Store and Google Play
- Website with pricing, privacy and terms pages
Have an idea for an app or web app? I design and build products like this from start to finish as a freelance designer and developer.
Technical details for developers
Stack, architecture and how it is built.
Stack
Architecture
AI photo classification
Photos go to a Flask backend, which re-encodes them as small JPEGs and sends them to Gemini 2.5 Flash through OpenRouter. The model replies in strict JSON: a plain item name of one to three words and, when the user's own categories are sent along, the best match from that list. If it suggests a category the user doesn't have yet, the app offers it as a new one instead of forcing a bad match. The endpoint is rate limited.
End-to-End Photo Encryption
Every image is encrypted with AES-256-GCM before touching the database. The IV, ciphertext, and auth tag are stored together as binary. The encryption key never leaves the server. Even with direct database access, images are unreadable. Photos are decrypted on-demand only when you view them.
Family sharing
Users join a family group with a 6-character invite code that expires in 10 minutes. Roles are Host, Admin and Member. Items can be marked private, which hides them from other members at the query level via Row Level Security.
Technical highlights
RevenueCat Subscriptions
Three plans (Free, Standard and Family) gated by item count and member limits. Billing runs through the App Store and Google Play via RevenueCat, so no custom payment infrastructure is needed.
Cross-Platform
One codebase ships to both iOS and Android via Expo. Platform-specific camera behaviour, gesture handling, and blur effects all wired up with the correct native APIs.
Privacy First
Row Level Security enforced at the Supabase layer. Cascade deletes wipe all user data atomically on account deletion. Private items hidden at the query level, not just the UI.
Want something like this?
I design and build apps and web apps from the first idea to launch.