Duet
Duet is a mobile app in development for two people to share everyday moments. It combines messaging, memories, date ideas, and small daily rituals with a warm visual system and an offline local mode.
My contribution
I am building Duet independently across the React Native interface, application state, local storage, optional Firebase integration, and suggestion-provider architecture. The app is still in development.
The Problem
Conversations, photos, plans, and little relationship rituals are often scattered across unrelated apps. A dedicated shared space needs to feel personal while keeping pairing, local state, and optional synchronization understandable.
The Solution
Bring the core experiences into a coordinated mobile interface: a conversation, a shared memory timeline, date planning, and daily prompts. Keep local usage available and support optional Firebase synchronization for a paired experience.
System Architecture
React Native and Expo power the mobile interface, navigation, and device integrations. TypeScript models and shared UI primitives connect the feature screens to local persistence and optional Firebase services. Suggestions use an interchangeable provider interface; the current offline implementation selects curated text by context and tone, rather than running an on-device language model.
Key Features
Innovative solutions developed to solve complex technical challenges.
A shared conversation
Messaging screens support text, photos, voice notes, reactions, and stickers in a one-to-one experience.
Memories and small rituals
Collect shared moments and use daily questions with mutual reveal to encourage regular connection.
Date planning and suggestions
Plan time together and explore tone-based message drafts and occasion-based gift ideas through the offline suggestion provider.
Device-aware privacy controls
App-lock and local-vault flows use Expo device capabilities and are being developed alongside pairing and synchronization.
Challenges & Breakthroughs
Challenge: Designing a cohesive experience across many small features
Growth: Use shared typography, spacing, motion, and component primitives so messaging, memories, and rituals feel like parts of the same app.
Challenge: Supporting local use alongside optional cloud services
Growth: Keep persistence and suggestion providers behind explicit interfaces so the app can evolve without tying every screen to a remote service.
Next Project
RadFlow