277 lines
8.2 KiB
Markdown
277 lines
8.2 KiB
Markdown
# Date Planning Feature Roadmap
|
||
|
||
## Vision
|
||
|
||
Build a complete Date Operating System for Closer — not a simple list of date ideas.
|
||
|
||
Most couples don't struggle to find ideas. They struggle to:
|
||
- Decide what to do
|
||
- Find something both partners want
|
||
- Schedule it
|
||
- Follow through
|
||
- Remember meaningful moments afterward
|
||
|
||
The goal is to create a system that helps couples plan, experience, and reflect on dates together — built on top of Closer's existing daily question + spin wheel engagement loop.
|
||
|
||
## Goals
|
||
|
||
### Primary Goals
|
||
- Increase relationship engagement beyond daily questions
|
||
- Encourage regular quality time
|
||
- Create meaningful shared memories
|
||
- Improve user retention
|
||
- Create premium upgrade opportunities
|
||
|
||
### Success Metrics
|
||
- Dates planned per month
|
||
- Dates completed per month
|
||
- Couple retention
|
||
- Premium conversion rate
|
||
- Date reflection completion rate
|
||
|
||
## Existing App Context
|
||
|
||
### What's Already Built
|
||
- Daily question core loop (answer → reveal → history)
|
||
- Spin wheel category picker + question sessions
|
||
- Question packs with premium gating
|
||
- Partner invite system (code + email)
|
||
- Firestore-backed auth, couples, sessions, threads
|
||
- RevenueCat SDK wired (`purchases:8.20.0`) — purchase flows not yet implemented
|
||
- FCM push notifications (daily reminders, partner answered)
|
||
- Room local database (answers, questions, categories)
|
||
- Hilt DI, Material 3, Jetpack Compose
|
||
|
||
### Stack
|
||
| Layer | Technology |
|
||
|-------|-----------|
|
||
| Language | Kotlin 2.x |
|
||
| UI | Jetpack Compose + Material 3 |
|
||
| Navigation | Navigation Compose |
|
||
| Backend | Firebase (Auth, Firestore, Functions, FCM, Remote Config) |
|
||
| Payments | RevenueCat (`purchases:8.20.0`) |
|
||
| Local Storage | Room + DataStore + EncryptedSharedPreferences |
|
||
| DI | Hilt |
|
||
| Analytics | Firebase Analytics (hashed IDs, coarse categories) |
|
||
| Security | ProGuard/R8, SSL pinning, App Check, fail-closed webhooks |
|
||
|
||
### Architecture Fit
|
||
New date planning features slot into the existing architecture:
|
||
```
|
||
app/
|
||
├── data/
|
||
│ ├── local/ # Room: date history, reflections, bucket list
|
||
│ ├── remote/ # Firestore: shared date plans, couple bucket list
|
||
│ └── repository/ # Repository implementations
|
||
├── domain/
|
||
│ ├── model/ # Date, DatePlan, BucketListItem, Reflection data classes
|
||
│ └── repository/ # Repository interfaces
|
||
├── ui/
|
||
│ ├── dates/ # NEW: date discovery, match, builder, history, reflection
|
||
│ ├── questions/ # Existing daily question flow
|
||
│ ├── wheel/ # Existing spin wheel
|
||
│ └── ...
|
||
├── core/
|
||
│ ├── navigation/ # New AppRoute.Dates section
|
||
│ ├── billing/ # Premium date pack gating
|
||
│ └── ...
|
||
```
|
||
|
||
## Phase 1: Date Discovery
|
||
|
||
### Date Match
|
||
|
||
Both partners browse date ideas independently — like the existing question reveal mechanic, but for dates.
|
||
|
||
Actions:
|
||
- Love ❤️
|
||
- Maybe 💛
|
||
- Skip 👎
|
||
|
||
Only mutual "Love" matches appear. "Maybe" matches surface as secondary suggestions.
|
||
|
||
**Firestore model:**
|
||
- `couples/{coupleId}/date_swipes/{dateId}` — per-partner swipe state
|
||
- Revealed matches stored in `couples/{coupleId}/date_matches/{matchId}`
|
||
|
||
### Date Builder
|
||
|
||
Both partners contribute preferences. Builder assembles a plan.
|
||
|
||
Inputs:
|
||
- Date
|
||
- Time
|
||
- Budget
|
||
- Duration
|
||
|
||
Outputs:
|
||
- Activity suggestion
|
||
- Food suggestion
|
||
- Conversation prompts (draw from existing question packs)
|
||
- Optional challenge
|
||
|
||
**Local-first:** Builder preferences stored in Room. Generated plan synced to Firestore couple doc.
|
||
|
||
### Couple Bucket List
|
||
|
||
Shared list both partners can add to and check off.
|
||
|
||
Categories (aligned with existing question categories):
|
||
- Adventure
|
||
- Travel
|
||
- Food
|
||
- Learning
|
||
- Romance
|
||
- Intimacy
|
||
- Seasonal
|
||
|
||
**Firestore model:**
|
||
- `couples/{coupleId}/bucket_list/{itemId}` — shared list with added-by, completed-by, completed-at fields
|
||
|
||
## Phase 2: Date History and Reflection
|
||
|
||
### Date History
|
||
|
||
Store completed dates for the couple.
|
||
|
||
Fields:
|
||
- Date, time, location
|
||
- Photos (Firebase Storage)
|
||
- Notes (per partner)
|
||
- Category
|
||
- Cost
|
||
- Rating (1–5, per partner)
|
||
|
||
**Firestore model:**
|
||
- `couples/{coupleId}/date_history/{dateId}` — shared history
|
||
- Photos stored in Firebase Storage under `couples/{coupleId}/date_photos/{photoId}`
|
||
|
||
### Private Date Reflection
|
||
|
||
After a date, both partners answer reflection questions privately. Answers reveal when both complete — same mechanic as the existing answer reveal flow.
|
||
|
||
Questions:
|
||
- What was your favorite moment?
|
||
- What surprised you?
|
||
- What did you appreciate most?
|
||
|
||
This reuses the existing `sessions`/`answers`/`threads` Firestore structure but with a date reflection type flag.
|
||
|
||
### Relationship Insights
|
||
|
||
Aggregate from date history + existing question engagement.
|
||
|
||
Track:
|
||
- Connection score (composite: date frequency + question engagement + reflection completion)
|
||
- Date satisfaction (average rating)
|
||
- Date frequency (per month)
|
||
- Preferred categories (from date history + question packs)
|
||
|
||
**Computed client-side** from local Room cache + Firestore snapshots. No server aggregation needed for MVP.
|
||
|
||
## Phase 3: Smart Planning
|
||
|
||
### AI Date Concierge
|
||
|
||
Firebase Cloud Function that generates personalized date plans.
|
||
|
||
Inputs:
|
||
- Budget
|
||
- Available time
|
||
- Weather (OpenWeather API or similar)
|
||
- Interests (from question categories + date history)
|
||
- Relationship stage (from account age + date history)
|
||
|
||
Outputs:
|
||
- Complete itinerary
|
||
- Estimated cost breakdown
|
||
- Conversation prompts (pull from existing premium question packs)
|
||
- Backup indoor plan
|
||
|
||
**Implementation:** Firebase Cloud Function calling an LLM API (OpenAI / Anthropic). Results cached in Firestore.
|
||
|
||
### Smart Scheduling
|
||
|
||
Track partner availability and suggest date windows.
|
||
|
||
- Availability shared via Firestore (simple "free evenings" or calendar integration later)
|
||
- Preferred date frequency set per couple
|
||
- Auto-suggest when both partners have a free window + haven't had a date recently
|
||
|
||
## Premium Features
|
||
|
||
### Premium Date Packs
|
||
|
||
Curated date collections — same pack model as existing question packs.
|
||
|
||
- First Year Together
|
||
- Married With Kids
|
||
- Long Distance
|
||
- Anniversary Pack
|
||
- Reconnection Pack
|
||
- Summer Dates
|
||
- Winter Dates
|
||
|
||
**Implementation:** Same Firestore pack structure + RevenueCat entitlement gating as existing question packs.
|
||
|
||
### Advanced AI Concierge
|
||
|
||
- Unlimited AI-generated plans (free tier: 1/month)
|
||
- Personalized recommendations based on date history
|
||
- Seasonal suggestions
|
||
- Local event integration (later: Google Places / Yelp API)
|
||
|
||
### Premium Insights
|
||
|
||
- Date trends over time
|
||
- Relationship growth patterns
|
||
- Favorite activities
|
||
- Monthly summaries
|
||
|
||
## Killer Feature: Date Replay
|
||
|
||
Both partners answer after a date:
|
||
- Best moment
|
||
- Unexpected moment
|
||
- One thing I appreciated
|
||
|
||
Months later, they can revisit those reflections as a relationship timeline — like the existing answer history, but for real experiences.
|
||
|
||
**Implementation:** Reuses the reveal mechanic. Reflections stored as date-typed sessions. Timeline view queries all completed date sessions sorted chronologically.
|
||
|
||
## Recommended Build Order
|
||
|
||
### MVP — Phase 1 (v1.1.x)
|
||
|
||
1. **Date Match** — swipe UI + mutual match reveal (reuses reveal pattern)
|
||
2. **Date Builder** — preference input + plan generation
|
||
3. **Couple Bucket List** — shared list with checkoff
|
||
|
||
### Version 1.2
|
||
|
||
4. **Date History** — log completed dates + photos
|
||
5. **Private Reflections** — post-date questions with reveal mechanic
|
||
6. **Relationship Insights** — aggregate dashboard
|
||
|
||
### Version 1.3
|
||
|
||
7. **Smart Scheduling** — availability + suggestions
|
||
8. **AI Date Concierge** — Cloud Function + LLM integration
|
||
|
||
### Version 2.0
|
||
|
||
9. **Date Replay** — relationship timeline from reflections
|
||
10. **Advanced Analytics** — trends + growth patterns
|
||
11. **Premium Date Packs** — curated collections
|
||
12. **Local Event Integration** — Places/Yelp API
|
||
|
||
## Long Term Positioning
|
||
|
||
Closer becomes a full relationship platform where couples can:
|
||
- Communicate (daily questions, spin wheel)
|
||
- Plan experiences (date match, builder, AI concierge)
|
||
- Build memories (date history, reflections, replay)
|
||
- Track relationship growth (insights, analytics)
|
||
- Strengthen connection over time
|
||
|
||
Every feature builds on the same engagement loop: **private input → mutual reveal → shared memory**. |