Back to Projects
In developmentReact NativeExpoTypeScriptFirebaseReanimated

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.

Solo Full-Stack Developer

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

1

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.

2

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