ShakeMemo - Technical documentation
Capture → classify → memos / reminders. Stack, architecture, RevenueCat.
Tech stack
Mobile: Expo / React Native. Shake via expo-sensors; voice via expo-av. Firebase Auth, RTDB sync, FCM. Native config only via app.config.js / Expo plugins. Geofencing via expo-location when Phase 2 ships.
Backend: Node.js Express (TypeScript). Speech + translation; OpenRouter for reminder extraction, utterance classification, and memory-document generation. Firebase Admin for RTDB (reminders, memoryDocuments, places, devices).
Subscriptions: RevenueCat on mobile; API webhook for entitlement sync.
Capture pipeline
Short speech continues to produce reminders. Long speech produces structured Memory Documents. Hybrid returns both, linked by capture id.
Architecture
Data model targets
memoryDocuments — title, summary, body/sections, tags, transcript?, sourceCaptureId, derivedReminderIds.
places — named geofence presets (Home, Work, custom) for Phase 2.
userReminders — existing; location lat/lng/radius wired to geofencing when shipped.
RevenueCat
Products and entitlements configured in App Store Connect, Play Console, and RevenueCat. Premium gates (document generation, geofence limits, recall) must match shipped code and web Now/Coming labels.