Inspiration
A few years ago, my mom gave my siblings and me glass jars for Christmas with a simple prompt: whenever something good happens this year, write it on a slip of paper and drop it in. At the end of the year, we’d open them together.
That physical ritual had a magic that my smartphone camera roll completely lacked. On our phones, we take thousands of photos and screenshots, but they get buried under endless digital clutter. Most journaling apps feel like homework, spreadsheets, or sterile text editors.
I wanted to take that warm, tangible tradition my mom gave us and translate it into a digital keepsake sanctuary—an app where watching your happy days physically pile up inside a cozy 3D jar brings that exact same feeling of joy and nostalgia to your pocket.
What it does
Memento Jar transforms daily gratitude and journaling into an interactive, tactile experience:
Interactive 3D Keepsake Jar: As you save memories, colorful folded paper notes accumulate inside a beautifully rendered 3D glass jar on your screen. Rich Multimedia Moments: Memories aren't just text. Users can attach candid photos, video snippets, and voice memos so they can preserve the laughter, sounds, and faces that made that moment special. Aesthetic Personalization: Users can style their personal haven with custom metallic lids (Brushed Gold, Rose Gold, Silver), artisan frames (Natural Wood, Frosted Glass, Metal), and serene room backdrops like a sunny windowsill or cozy bookshelf. Timeline & Calendar Scrapbook: Revisit past seasons effortlessly through a scrapbook timeline or a monthly calendar view, with filters for moods and personal wins. 100% Private by Design: All memories, audio clips, and photos stay strictly on the user's local device in an encrypted SQLite database—safely protected by biometric Face ID / Fingerprint lock. Frictionless Monetization: Users enjoy the full core experience with non-intrusive banner ads, or can permanently unlock a peaceful, Ad-Free Lifetime experience powered by RevenueCat.
How we built it
We engineered Memento Jar to be an offline-first, performance-obsessed cross-platform mobile app:
Frontend & Architecture: Built with React Native and Expo, utilizing modern file-based navigation with Expo Router. Offline-First Persistence: Implemented local SQLite to manage transactions, indexing, and multi-asset storage with zero cloud latency and total user privacy. Monetization Engine (RevenueCat): Integrated the RevenueCat SDK (react-native-purchases) to power our Lifetime Ad-Free In-App Purchase across both iOS StoreKit and Google Play Billing. RevenueCat dynamically syncs offerings, handles receipt validation, and manages entitlements (Memory Jar Pro) with zero backend maintenance required on our part. Advertising & Diagnostics: Integrated Google Mobile Ads (AdMob) with platform-specific banner dispatching (Platform.select) and non-personalized privacy parameters, backed by Firebase Crashlytics for real-time app health telemetry. Native Device APIs: Leveraged hardware acceleration for voice memo recording/playback (expo-av), photo library access (expo-image-picker), and biometric authentication (expo-local-authentication). AI-Assisted Pair Programming: Built collaboratively using Google DeepMind’s agentic AI (Antigravity) to rapidly prototype UI iterations, solve complex native layout constraints, and engineer full-bleed visual assets.
Challenges we ran into
Native Keyboard & Layout Nuances: One of our trickiest mobile UI hurdles was managing keyboard avoidance on iOS. Standard wrapper libraries were collapsing scroll containers or creating background artifacts above the native input accessory toolbar. We resolved this by building a custom dynamic keyboard height listener that adjusts weighted bottom spacers and auto-scrolls text inputs cleanly into view.
Ruthless MVP Scoping for Launch: We originally designed a Time Capsule feature (delayed unlock dates for future years). However, realizing that shipping a polished, bug-free core app on time for the Shipathon was paramount, we made the conscious decision to scope-cut Time Capsules from the UI while keeping the database schema intact for our v1.1 update.
Accomplishments that we're proud of
Approved by Apple on the First Try: Getting a Version 1.0 app with In-App Purchases, permissions, and AdMob approved by Apple’s notoriously strict review team on the very first submission with zero rejections! A Tactile, Joyful Experience: Creating an app that genuinely feels warm, cozy, and skeuomorphic rather than sterile and corporate. Airtight Privacy Architecture: Users can store their most vulnerable, intimate thoughts knowing that zero data ever leaves their phone. Unified Cross-Platform Monetization: Having RevenueCat seamlessly manage single-tier lifetime entitlements across both Apple App Store and Google Play without maintaining a custom server.
What we learned
The Magic of RevenueCat: Writing custom StoreKit 2 and Google Play Billing integrations from scratch used to take weeks of edge-case debugging. RevenueCat turned in-app purchase setup and receipt validation into a smooth, reliable experience that worked out of the box. Ship First, Iterate Second: Hiding complex secondary features to hit our launch date allowed us to focus all our energy on performance, aesthetics, and rock-solid stability.
What's next for Memento Jar
Version 1.1 — The Time Capsule: Re-enabling our scheduled memory lock feature so users can seal notes until New Year's Eve, a future birthday, or next anniversary, accompanied by celebratory opening animations. Gentle Habit Reminders: A quiet, single evening prompt: "What brought a smile to your face today? Tuck a note in your jar." Printable Scrapbook Yearbooks: Allowing users to export a year’s worth of memories into a beautifully laid out, printable PDF memory book. Seasonal Themes: Expanding the product catalog with mason jars, fairy lights, vintage apothecary bottles, and seasonal autumn/winter ambient backdrops!
Built With
- android
- expo.io
- firebase
- google-admob
- in-app-purchases
- ios
- javascript
- react-native
- revenuecat
- sqlite
- storekit
Log in or sign up for Devpost to join the conversation.