docs(roadmap): update Phase 4 Weeks 10-14 — macOS, calendar, location, sleep, mood, GDPR, sharing, referrals

This commit is contained in:
saravanakumardb1 2026-02-27 22:59:55 -08:00
parent bebb566caf
commit 0311980bfe

View File

@ -615,56 +615,56 @@ ChronoMind ships in **5 phases over ~6 months**, from web MVP to full cross-plat
### Week 10-11: macOS + Calendar + Location ### Week 10-11: macOS + Calendar + Location
- [ ] **macOS menu bar app (`ChronoMindMac/`)** — deferred from Phase 3 - [x] **macOS menu bar app (`ChronoMindMac/`)** — deferred from Phase 3
- [ ] Menu bar icon: shows countdown of next timer - [x] Menu bar icon: shows countdown of next timer
- [ ] Click → popover with mini timeline - [x] Click → popover with mini timeline
- [ ] Quick timer creation from popover - [x] Quick timer creation from popover
- [ ] Notification center integration (UNUserNotificationCenter) - [x] Notification center integration (UNUserNotificationCenter)
- [ ] Keyboard shortcut: `Cmd+Shift+T` → quick timer - [x] Keyboard shortcut: `Cmd+Shift+T` → quick timer
- [ ] Share 90%+ code with iOS via Shared/ folder - [x] Share 90%+ code with iOS via Shared/ folder
- [ ] **Full calendar sync** - [x] **Full calendar sync**
- [ ] Google Calendar OAuth 2.0 integration - [ ] Google Calendar OAuth 2.0 integration (deferred — needs server-side OAuth)
- [ ] Apple Calendar (EventKit) read access - [x] Apple Calendar (EventKit) read access
- [ ] Outlook Calendar (Microsoft Graph API) integration - [ ] Outlook Calendar (Microsoft Graph API) integration (deferred — needs server-side OAuth)
- [ ] One-way sync: imported events become timers with auto-cascade (read-only — ChronoMind does NOT write back to calendars) - [x] One-way sync: imported events become timers with auto-cascade (read-only)
- [ ] Conflict resolution: calendar events take priority, manual timers preserved - [x] Conflict resolution: calendar events take priority via deterministic IDs
- [ ] Sync frequency: every 15 minutes + on-demand refresh - [x] Sync frequency: every 15 minutes + on-demand refresh
- [ ] Visual distinction: synced events vs manual timers on timeline - [x] Visual distinction: synced events tagged with `isCalendarSync` + calendar color
- [ ] Web: OAuth flow in Next.js API routes - [ ] Web: OAuth flow in Next.js API routes (deferred)
- [ ] iOS: EventKit for Apple Calendar, OAuth for Google/Outlook - [x] iOS: EventKit for Apple Calendar
- [ ] **Location-based triggers** - [x] **Location-based triggers**
- [ ] iOS: CoreLocation geofencing (enter/exit region) - [x] iOS: CoreLocation geofencing (enter/exit region)
- [ ] "Remind me when I leave home" → geofence exit trigger - [x] "Remind me when I leave home" → geofence exit trigger
- [ ] "Remind me when I arrive at office" → geofence enter trigger - [x] "Remind me when I arrive at office" → geofence enter trigger
- [ ] Saved locations: Home, Work, Gym (user-configured) - [x] Saved locations: Home, Work, Gym (user-configured, preset icons)
- [ ] Privacy-first: all location processing on-device, no server tracking - [x] Privacy-first: all location processing on-device, no server tracking
- [ ] Web: use Geolocation API (less reliable, best-effort) - [ ] Web: use Geolocation API (deferred)
- [ ] **Travel time intelligence** - [x] **Travel time intelligence**
- [ ] Apple Maps API (MapKit) for travel time estimates - [x] Apple Maps API (MapKit) for travel time estimates
- [ ] "Your dentist appointment is in 45 minutes. Leave now — 28 min drive with current traffic." - [x] Travel advisory messages: "Leave now — 28 min drive"
- [ ] Auto-adjust pre-warning cascade based on real-time travel time - [x] Auto-adjust pre-warning cascade based on real-time travel time
- [ ] Transport mode: driving, transit, walking (user preference per timer) - [x] Transport mode: driving, transit, walking (user preference per timer)
- [ ] Web: fallback to static estimate (user enters travel time manually) - [ ] Web: fallback to static estimate (deferred)
### Week 12: Sleep + Wellness ### Week 12: Sleep + Wellness
- [ ] **Sleep integration** - [x] **Sleep integration**
- [ ] Bedtime routine: customizable wind-down sequence - [x] Bedtime routine: customizable wind-down sequence (4-step default)
- [ ] Smart alarm: set a wake window (e.g., 6:30-7:00) → alarm fires at optimal time - [x] Smart alarm: set a wake window (e.g., 6:30-7:00) with HealthKit optimization
- [ ] Sleep tracking via HealthKit (Apple) — read sleep data, don't track directly - [x] Sleep tracking via HealthKit (Apple) — read sleep data, don't track directly
- [ ] "You slept 6h 20m. Shift your morning by 15 minutes?" (AI reschedule tie-in) - [x] "You slept 6h 20m. Shift your morning by 15 minutes?" (AI reschedule tie-in)
- [ ] Wind-down notifications: "Bedtime in 30 minutes — start winding down" - [x] Wind-down notifications: "Bedtime in 30 minutes" via UNCalendarNotificationTrigger
- [ ] Blue light reminder: "Consider turning on Night Shift" - [ ] Blue light reminder (deferred — no API to trigger Night Shift programmatically)
- [ ] **Mood/energy check-in** - [x] **Mood/energy check-in**
- [ ] Quick check-in after completing a timer/routine: 😴 😐 😊 🔥 (4 energy levels) - [x] Quick check-in after completing a timer/routine: 😴 😐 😊 🔥 (4 energy levels)
- [ ] Correlate mood with time of day, timer type, sleep data - [x] Correlate mood with time of day, timer type, sleep data
- [ ] Weekly insight: "You're most productive between 9-11 AM" - [x] Weekly insight: "You're most productive between 9-11 AM" (peak hours + best day)
- [ ] Optional: prompt at consistent times (morning, post-lunch, evening) - [x] Optional: prompt at consistent times (morning, post-lunch, evening) with rate limiting
- [ ] All data local — never sent to any server - [x] All data local — never sent to any server
- [ ] **Cloud sync (Apple-only via iCloud, privacy-first)** - [ ] **Cloud sync (Apple-only via iCloud, privacy-first)**
- [ ] iCloud/CloudKit sync for Apple devices only (iPhone ↔ Mac ↔ Watch) - [ ] iCloud/CloudKit sync for Apple devices only (iPhone ↔ Mac ↔ Watch)
@ -675,10 +675,10 @@ ChronoMind ships in **5 phases over ~6 months**, from web MVP to full cross-plat
- [ ] TLS in transit + encrypted at rest in Cosmos DB (E2E encryption deferred — timer data is not sensitive enough to justify complexity) - [ ] TLS in transit + encrypted at rest in Cosmos DB (E2E encryption deferred — timer data is not sensitive enough to justify complexity)
- [ ] Delete account: wipes all cloud data immediately - [ ] Delete account: wipes all cloud data immediately
- [ ] **Data export / account deletion (App Store + GDPR requirement)** - [x] **Data export / account deletion (App Store + GDPR requirement)**
- [ ] "Export all my data" → JSON download of all timers, routines, stats - [x] "Export all my data" → JSON download of all timers, routines, stats, mood check-ins
- [ ] "Delete my account" → wipe all cloud data, revoke tokens - [x] "Delete my account" → wipe UserDefaults, App Group, iCloud KV, notifications, temp files
- [ ] Required before App Store submission (Apple requirement since 2022) - [x] Required before App Store submission (Apple requirement since 2022)
- [ ] **Advanced NL parsing (upgrade path from chrono-node)** - [ ] **Advanced NL parsing (upgrade path from chrono-node)**
- [ ] Define `timer-parse` extraction task in extraction-service (port 4005) - [ ] Define `timer-parse` extraction task in extraction-service (port 4005)
@ -696,18 +696,18 @@ ChronoMind ships in **5 phases over ~6 months**, from web MVP to full cross-plat
- [ ] Deep link back to ChronoMind (UTM tracked) - [ ] Deep link back to ChronoMind (UTM tracked)
- [ ] **This is the #1 viral mechanic — make it irresistible to share** - [ ] **This is the #1 viral mechanic — make it irresistible to share**
- [ ] **Shareable timer** - [x] **Shareable timer**
- [ ] Create a timer and share link: "chronom.ind/t/abc123" - [x] Create a timer and share link: "chronomind.app/t/abc123"
- [ ] Recipient opens link → timer auto-added to their ChronoMind - [x] Recipient opens link → timer auto-added via `importFromURL`
- [ ] Use case: "Here's the pasta recipe timing" / "Here's our meeting prep timer" - [x] Use case: "Here's the pasta recipe timing" / "Here's our meeting prep timer"
- [ ] Web link works without app (PWA fallback) - [x] Web link works without app (PWA fallback URL)
- [ ] iOS: Universal Link → opens app directly - [x] iOS: Universal Link → `canHandleURL` + `extractShareCode`
- [ ] **Referral program** - [x] **Referral program**
- [ ] "Invite a friend → both get 1 month Pro free" - [x] "Invite a friend → both get 1 month Pro free"
- [ ] Unique referral code per user - [x] Unique referral code per user (CM-XXXX format)
- [ ] Track referral chain - [x] Track referral chain (incoming/outgoing history)
- [ ] Show referral count in profile - [x] Show referral count + Pro reward months
- [ ] **ProductHunt launch prep** - [ ] **ProductHunt launch prep**
- [ ] Maker profile + product page - [ ] Maker profile + product page