Closer/docs/date-planning-roadmap.md

277 lines
8.2 KiB
Markdown
Raw Permalink Normal View History

# 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 (15, 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**.