docs: apply V2 review fixes to roadmap.md — comprehensive update

P0 Critical:
- Sync API: TBD → platform-service (Fastify, port 4003)
- Cascade presets: aligned with PRD (Aggressive/Standard/Light/Minimal/None/Custom)
- Deprecated APIs: NSUserNotificationCenter → UNUserNotificationCenter, ClockKit removed
- Cloud sync: iCloud Phase 3-4, platform-service REST Phase 5 (no contradiction)
- productId: chronomind registered in header + sync modules
- Open-source: closed-source app, open timer engine lib
- Design tokens: ChronoMind product section, own urgency colors

P1 High:
- Added pre-work (domain, wireframes, design tokens)
- Added CI/CD (GitHub Actions + Vercel auto-deploy)
- Added analytics (platform-service telemetry)
- Added onboarding (3-step walkthrough)
- Added privacy policy + terms of service
- Added web accessibility (WCAG 2.1 AA)
- Added timer accuracy tests + offline resilience strategy
- Added feedback mechanism
- Timer engine: clarified rAF (UI) + setInterval (SW) dual architecture
- Neurodivergent mode: default UX, not toggle (Compact mode for power users)
- Phase 3: macOS deferred to Phase 4, iPad layout added

P2 Medium:
- Calendar sync: two-way → one-way (read-only)
- Event countdown timer added to Phase 2
- Timer export/import added to Phase 2
- iOS waitlist added to Phase 2
- Data export/deletion added to Phase 4
- NL extraction upgrade path added to Phase 4
- Body doubling deferred to v3

New appendices: Cost Estimation, Common Platform Reusability, Key Decisions
Updated: success metrics (aligned with PRD), risk register (+4 new risks)
V2 review doc marked as APPLIED (audit trail)
This commit is contained in:
saravanakumardb1 2026-02-27 20:32:25 -08:00
parent c20bdc9b20
commit 1b148757af
2 changed files with 218 additions and 53 deletions

View File

@ -2,8 +2,8 @@
> **Purpose:** Systematic review of `roadmap.md` (v1) identifying bugs, gaps, missing details, and opportunities to leverage the `learning_ai_common_plat` shared ecosystem.
> **Date:** February 2026
> **Status:** PENDING USER REVIEW — do not implement until signed off.
> **Action:** Review each finding, then this doc becomes the implementation guide for roadmap v2.
> **Status:** ✅ APPLIED — All findings incorporated into `roadmap.md` v2.0. This doc is now an audit trail.
> **Action:** No further action needed. See `roadmap.md` for the implementation-ready version.
---

View File

@ -1,9 +1,14 @@
# ChronoMind — Product Roadmap
> **Product:** ChronoMind — AI-Powered Time Awareness Layer
> **Product ID:** `chronomind` (ByteLyst ecosystem)
> **Strategy:** Option D — Web PWA (MVP) → SwiftUI (iOS/Watch/Mac) → Android (v2)
> **Version:** 2.0 (revised per [roadmap-v2-review.md](roadmap-v2-review.md) audit)
> **Created:** February 2026
> **See also:** [PRD.md](PRD.md) | [INDUSTRY_RESEARCH.md](INDUSTRY_RESEARCH.md)
> **License:** Closed-source app; timer engine library open-source (TBD license)
> **See also:** [PRD.md](PRD.md) | [INDUSTRY_RESEARCH.md](INDUSTRY_RESEARCH.md) | [roadmap-v2-review.md](roadmap-v2-review.md)
>
> **Backend:** Platform-service in `learning_ai_common_plat` (Fastify, port 4003) — reuses 17+ existing modules (auth, subscriptions, stripe, invitations, referrals, settings, flags, telemetry, waitlist, ratelimit, usage, plans, licenses, etc.). Only 4 new modules needed: `timers`, `routines`, `shared-timers`, `households`.
---
@ -46,8 +51,8 @@ ChronoMind ships in **5 phases over ~6 months**, from web MVP to full cross-plat
│ UI: Jetpack Compose │
│ Watch: Wear OS + Glance widgets │
│ │
│ Shared: Cloud Sync API (optional, E2E encrypted)
│ Analytics: Plausible / PostHog (privacy-first)
│ Shared: Platform-service (Fastify, port 4003) — Cosmos DB sync
│ Analytics: Platform-service telemetry / Plausible (privacy-first)
└──────────────────────────────────────────────────────────────────────────┘
```
@ -60,23 +65,35 @@ ChronoMind ships in **5 phases over ~6 months**, from web MVP to full cross-plat
### Week 1: Foundation + Timer Engine
- [ ] **Pre-work (before coding)**
- [ ] Register domain: `chronomind.app` or `chronomind.io` (needed for deployment + Universal Links)
- [ ] Set up DNS for Vercel deployment
- [ ] Low-fi wireframes: timeline, create timer, Pomodoro, alarm overlay (1 day)
- [ ] Define urgency level color mapping from `@bytelyst/design-tokens` + ChronoMind product section
- [ ] **Project scaffold**
- [ ] `npx create-next-app@latest` with Next.js 16, App Router, TypeScript
- [ ] TailwindCSS v4 setup + shadcn/ui init + Lucide React icons
- [ ] Zustand store with IndexedDB persistence (via `idb`)
- [ ] ESLint + Prettier + Vitest config
- [ ] Basic folder structure: `app/`, `components/`, `lib/`, `styles/`
- [ ] GitHub Actions CI: lint + typecheck + vitest on PR
- [ ] Auto-deploy to Vercel on `main` push
- [ ] Analytics: platform-service telemetry module (or Plausible as lightweight fallback)
- [ ] Track: page views, timer created, timer completed, cascade fired, Pomodoro completed, PWA installed
- [ ] **Timer engine (`lib/timer-engine.ts`)**
- [ ] `Timer` interface with all fields (id, type, label, urgency, targetTime, duration, cascade, etc.)
- [ ] Create timer (alarm, countdown, pomodoro)
- [ ] Start / pause / resume / cancel countdown
- [ ] Timer state machine: `idle → active → warning → firing → snoozed → dismissed`
- [ ] `requestAnimationFrame` + `setInterval` dual-loop for accurate countdown
- [ ] `requestAnimationFrame` for UI countdown display (smooth 60fps in active tab)
- [ ] `setInterval` in Service Worker for background notification scheduling (30s check)
- [ ] Both contexts needed: rAF stops when tab hidden, SW runs in background
- [ ] Unit tests for timer state transitions
- [ ] **Pre-warning cascade (`lib/cascade.ts`)**
- [ ] Cascade presets: Relaxed (2h, 1h, 30m), Standard (1h, 30m, 15m, 5m), Tight (30m, 15m, 5m, 1m), Critical (2h, 1h, 30m, 15m, 5m, 1m)
- [ ] Cascade presets (aligned with PRD): Aggressive (4h, 3h, 2h, 90m, 1h, 30m, 15m, 5m, 1m), Standard (2h, 1h, 30m, 15m, 5m), Light (1h, 15m, 5m), Minimal (15m), None (fire only), Custom (user-defined)
- [ ] Custom cascade builder (user picks intervals)
- [ ] Cascade scheduler: calculate all warning timestamps from target time
- [ ] Cascade state tracking: which warnings have fired
@ -172,6 +189,34 @@ ChronoMind ships in **5 phases over ~6 months**, from web MVP to full cross-plat
- [ ] "Try it now" button → app dashboard (no signup needed)
- [ ] Social proof section (placeholder for future testimonials)
- [ ] Footer: links, GitHub, privacy
- [ ] Privacy policy page (`/privacy`) — required before any data collection or App Store submission
- [ ] Terms of service page (`/terms`)
- [ ] **First-run onboarding**
- [ ] 3-step walkthrough: create timer → set cascade → see timeline
- [ ] "Create your first timer" prompt on empty dashboard
- [ ] Tooltip hints on cascade and urgency pickers
- [ ] **Feedback mechanism**
- [ ] Feedback button in app (opens email or form)
- [ ] Bug report button with auto-attached browser info
- [ ] **Web accessibility (WCAG 2.1 AA)**
- [ ] Keyboard navigation works for all flows
- [ ] Screen reader tested (NVDA/VoiceOver) on timeline and timer creation
- [ ] Focus indicators on all interactive elements
- [ ] Sufficient color contrast for all urgency levels
- [ ] **Timer accuracy tests**
- [ ] Timing accuracy: create timer for T+5s, verify fires within 100ms tolerance
- [ ] Service Worker notification timing tests
- [ ] Stress test: 50 concurrent timers with cascades → all fire correctly
- [ ] **Offline resilience strategy**
- [ ] Document SW lifecycle: timers survive SW termination via IndexedDB timestamps + SW `periodicsync`
- [ ] Background sync queue for analytics events
- [ ] IndexedDB size limit handling (warn user, purge old history)
- [ ] "Tab must be open for notifications" disclaimer for iOS Safari
### Phase 1 Exit Criteria
@ -183,8 +228,12 @@ ChronoMind ships in **5 phases over ~6 months**, from web MVP to full cross-plat
- [ ] Lighthouse PWA score > 90
- [ ] Page load < 2 seconds
- [ ] All Vitest unit tests pass
- [ ] Deployed to Vercel/Netlify with custom domain
- [ ] 5 beta testers using it daily
- [ ] Deployed to Vercel with custom domain
- [ ] CI/CD pipeline running (GitHub Actions + Vercel auto-deploy)
- [ ] Analytics tracking timer creation and cascade engagement
- [ ] WCAG 2.1 AA: keyboard nav + screen reader tested
- [ ] Privacy policy published at `/privacy`
- [ ] 5 beta testers using it daily (measured via analytics)
---
@ -287,7 +336,7 @@ ChronoMind ships in **5 phases over ~6 months**, from web MVP to full cross-plat
- [ ] Conflict detection: warn if imported event overlaps existing timer
- [ ] Map calendar event priority to urgency level
- [ ] **Neurodivergent mode**
- [ ] **Neurodivergent-friendly design (DEFAULT UX, not a toggle)**
- [ ] Visual countdown ring (`components/CountdownRing.tsx`)
- [ ] Large, animated circular countdown (inspired by Time Timer)
- [ ] Color transitions: green → yellow → orange → red as time decreases
@ -295,8 +344,8 @@ ChronoMind ships in **5 phases over ~6 months**, from web MVP to full cross-plat
- [ ] Gentle transition alerts (soft chime + visual pulse, not jarring alarm)
- [ ] Reduced cognitive load: hide advanced options by default, progressive disclosure
- [ ] Time blindness aids: "This is about as long as [familiar reference]" (e.g., "25 min — one TV episode")
- [ ] Body doubling placeholder: "Focus with others" room (v2 feature, show coming soon)
- [ ] Toggle in settings: "Gentle mode" (affects sounds, animations, notification style)
- [ ] Body doubling placeholder: "Focus with others" room (v3 feature, show coming soon)
- [ ] Toggle in settings: "Compact mode" for power users who want dense UI (the DEFAULT is already neurodivergent-friendly per PRD decision #7)
- [ ] **Prep time intelligence**
- [ ] Per-timer: "I need X minutes to prepare"
@ -310,6 +359,22 @@ ChronoMind ships in **5 phases over ~6 months**, from web MVP to full cross-plat
- [ ] Suggestion shown as dismissable card on dashboard
- [ ] Accept → auto-adjusts recurring timer
- [ ] **Event countdown timer**
- [ ] Days/hours until a future date with milestone warnings (30 days, 7 days, 1 day, etc.)
- [ ] Timer type `event` in data model (matching PRD feature #26)
- [ ] Visual: large countdown display with milestone progress bar
- [ ] Use cases: "132 days until wedding", "47 days until vacation"
- [ ] **Timer export / import (local backup)**
- [ ] "Export timers" → JSON download of all timers, routines, stats
- [ ] "Import timers" → upload JSON to restore
- [ ] Warning: "Your timers are stored locally. Export regularly or enable cloud sync (coming in v1.1)."
- [ ] **iOS waitlist**
- [ ] Waitlist signup on web landing page ("Get notified when iOS launches")
- [ ] Use platform-service `waitlist` module (already exists) when backend is connected
- [ ] Fallback: simple email collection form
- [ ] **Timer history (`app/(app)/history/`)**
- [ ] Searchable log of all past timers
- [ ] Filter by category, urgency, date range
@ -331,18 +396,19 @@ ChronoMind ships in **5 phases over ~6 months**, from web MVP to full cross-plat
- [ ] Focus mode blocks notifications during session
- [ ] Streak tracking persists across sessions
- [ ] Calendar .ics import works with Google Calendar exports
- [ ] Neurodivergent mode noticeably gentler than default
- [ ] Neurodivergent mode is default and noticeably gentler than previous
- [ ] All E2E tests pass in CI
- [ ] 25+ beta testers, 3+ using routines daily
- [ ] App Store / ProductHunt submission prepared
- [ ] ProductHunt submission prepared (web) — App Store prep moved to Phase 3
---
## Phase 3: Apple Native — "Own the Wrist" (Week 6-9)
> **Goal:** Ship native iOS + Apple Watch + macOS apps that make ChronoMind the best timer experience on Apple devices.
> **Goal:** Ship native iOS + Apple Watch apps. macOS deferred to Phase 4 (4 weeks for iOS + Watch + Live Activities is already aggressive).
> **Success criteria:** Apple Watch complications are the #1 reason users love ChronoMind.
> **Framework decision:** Fully native SwiftUI (NOT KMP) — see [platform analysis in PRD](PRD.md).
> **Note:** This phase is 4 weeks, not 3 as PRD states. PRD phases section should be updated to match.
### Week 6: iOS App Foundation
@ -436,15 +502,9 @@ ChronoMind ships in **5 phases over ~6 months**, from web MVP to full cross-plat
- [ ] App Intents framework for iOS 17+
- [ ] Shortcuts app integration
### Week 8: macOS + AI Reschedule
### Week 8: AI Reschedule + Gamification
- [ ] **macOS menu bar app (`ChronoMindMac/`)**
- [ ] Menu bar icon: shows countdown of next timer
- [ ] Click → popover with mini timeline
- [ ] Quick timer creation from popover
- [ ] Notification center integration (native macOS notifications)
- [ ] Keyboard shortcut: `Cmd+Shift+T` → quick timer
- [ ] Share 90%+ code with iOS via Shared/ folder
> **Note:** macOS menu bar app deferred to Phase 4 (Week 10-11). Phase 3 focuses on iOS + Watch quality.
- [ ] **AI reschedule**
- [ ] "I slept in 30 minutes" → shift all morning timers by 30m
@ -459,7 +519,12 @@ ChronoMind ships in **5 phases over ~6 months**, from web MVP to full cross-plat
- [ ] Weekly summary card (shareable image — key for viral growth)
- [ ] Gentle celebration animations (confetti for streak milestones, not obnoxious)
### Week 9: Polish + TestFlight
### Week 9: iPad + Polish + TestFlight
- [ ] **iPad layout**
- [ ] iPad sidebar navigation (NavigationSplitView)
- [ ] Wider timeline with side panel for timer detail
- [ ] Stage Manager / multiple window support (iPadOS 16+)
- [ ] **Cross-device continuity**
- [ ] Handoff: start timer on Mac, see it on iPhone and Watch
@ -483,34 +548,44 @@ ChronoMind ships in **5 phases over ~6 months**, from web MVP to full cross-plat
- [ ] External beta: 100 testers via TestFlight link
- [ ] Crash reporting: built-in MetricKit
- [ ] Feedback form in Settings
- [ ] App Store submission prepared (screenshots, description, keywords, preview video)
### Phase 3 Exit Criteria
- [ ] iOS app installs and all features work on iPhone 14+ (iOS 17)
- [ ] iPad layout works with sidebar navigation (iPadOS 16+)
- [ ] Apple Watch complications update correctly on Watch Series 8+ (watchOS 10)
- [ ] Live Activities show on Dynamic Island and Lock Screen
- [ ] Widgets update on home screen and lock screen
- [ ] macOS menu bar app works on macOS 14+
- [ ] Siri Shortcuts work for top 3 use cases
- [ ] AI reschedule correctly shifts timers
- [ ] All XCTests and XCUITests pass
- [ ] TestFlight beta: 100 external testers, crash-free rate > 99%
- [ ] App Store submission prepared (screenshots, description, keywords)
- [ ] App Store submission prepared and submitted (screenshots, description, keywords, preview video)
- [ ] macOS deferred to Phase 4
---
## Phase 4: Context & Growth — "Make It Sticky" (Week 10-14)
> **Goal:** Calendar sync, location awareness, sleep integration, and viral growth mechanics.
> **Goal:** macOS menu bar, calendar sync, location awareness, cloud sync, and viral growth mechanics.
> **Success criteria:** Users say "ChronoMind knows my schedule better than I do."
### Week 10-11: Calendar + Location
### Week 10-11: macOS + Calendar + Location
- [ ] **macOS menu bar app (`ChronoMindMac/`)** — deferred from Phase 3
- [ ] Menu bar icon: shows countdown of next timer
- [ ] Click → popover with mini timeline
- [ ] Quick timer creation from popover
- [ ] Notification center integration (UNUserNotificationCenter)
- [ ] Keyboard shortcut: `Cmd+Shift+T` → quick timer
- [ ] Share 90%+ code with iOS via Shared/ folder
- [ ] **Full calendar sync**
- [ ] Google Calendar OAuth 2.0 integration
- [ ] Apple Calendar (EventKit) read access
- [ ] Outlook Calendar (Microsoft Graph API) integration
- [ ] Two-way sync: imported events become timers with auto-cascade
- [ ] One-way sync: imported events become timers with auto-cascade (read-only — ChronoMind does NOT write back to calendars)
- [ ] Conflict resolution: calendar events take priority, manual timers preserved
- [ ] Sync frequency: every 15 minutes + on-demand refresh
- [ ] Visual distinction: synced events vs manual timers on timeline
@ -549,14 +624,27 @@ ChronoMind ships in **5 phases over ~6 months**, from web MVP to full cross-plat
- [ ] Optional: prompt at consistent times (morning, post-lunch, evening)
- [ ] All data local — never sent to any server
- [ ] **Cloud sync (optional, privacy-first)**
- [ ] E2E encrypted sync via CloudKit (Apple) or custom API
- [ ] **Cloud sync (Apple-only via iCloud, privacy-first)**
- [ ] iCloud/CloudKit sync for Apple devices only (iPhone ↔ Mac ↔ Watch)
- [ ] Sync scope: timers, routines, categories, preferences, stats
- [ ] Conflict resolution: last-write-wins with vector clocks
- [ ] Opt-in: works perfectly offline, sync is a bonus
- [ ] Web: sync via authenticated API (JWT + encrypted payload)
- [ ] **Cross-platform sync (web ↔ Android) deferred to Phase 5** via platform-service REST API
- [ ] 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
- [ ] **Data export / account deletion (App Store + GDPR requirement)**
- [ ] "Export all my data" → JSON download of all timers, routines, stats
- [ ] "Delete my account" → wipe all cloud data, revoke tokens
- [ ] Required before App Store submission (Apple requirement since 2022)
- [ ] **Advanced NL parsing (upgrade path from chrono-node)**
- [ ] Define `timer-parse` extraction task in extraction-service (port 4005)
- [ ] Classes: `time`, `duration`, `urgency_hint`, `label`, `recurrence`
- [ ] Use `@bytelyst/extraction` client for LLM-powered parsing
- [ ] Falls back to chrono-node if extraction-service unavailable
- [ ] Enables: "Set a critical alarm for my dentist next Tuesday at 2pm with 1 hour warning and 30 min travel time"
### Week 13-14: Viral Growth Mechanics
- [ ] **Shareable weekly summary**
@ -607,10 +695,12 @@ ChronoMind ships in **5 phases over ~6 months**, from web MVP to full cross-plat
### Phase 4 Exit Criteria
- [ ] Calendar sync works with Google, Apple, Outlook calendars
- [ ] macOS menu bar app works on macOS 14+ (deferred from Phase 3)
- [ ] Calendar sync works with Google, Apple, Outlook calendars (one-way)
- [ ] Location triggers fire reliably (iOS geofencing)
- [ ] Travel time estimates adjust pre-warning cascade
- [ ] Sleep data integration working via HealthKit
- [ ] Data export and account deletion functional
- [ ] Weekly summary card shareable to 3+ social platforms
- [ ] Shareable timer links work (web + iOS universal link)
- [ ] ProductHunt page live, launch scheduled
@ -680,13 +770,14 @@ ChronoMind ships in **5 phases over ~6 months**, from web MVP to full cross-plat
- [ ] Haptic pre-warnings
- [ ] Dismiss/snooze from wrist
- [ ] **Cross-platform cloud sync**
- [ ] Sync API: REST endpoints for timer CRUD + sync
- [ ] JWT authentication (reuse from web)
- [ ] E2E encryption: client-side encrypt before upload
- [ ] **Cross-platform cloud sync (via platform-service)**
- [ ] Sync API: platform-service REST endpoints for timer CRUD + sync (`productId: "chronomind"`)
- [ ] JWT authentication via @bytelyst/auth (reuse existing module)
- [ ] TLS in transit + encrypted at rest in Cosmos DB
- [ ] Sync protocol: last-write-wins with conflict detection
- [ ] Works across: Web ↔ iOS ↔ macOS ↔ Android
- [ ] Account creation: email + password or Apple/Google Sign-In
- [ ] Works across: Web ↔ iOS ↔ macOS ↔ Android (replaces Phase 4 iCloud-only sync)
- [ ] Account creation: Apple Sign-In / Google Sign-In (email/password requires platform-service Email Delivery + Password Reset — may not be ready)
- [ ] Register `chronomind` as product in platform-service products module
### Week 20-21: Shared Timers + Social
@ -699,12 +790,9 @@ ChronoMind ships in **5 phases over ~6 months**, from web MVP to full cross-plat
- [ ] Household admin: manage members, remove shared timers
- [ ] Up to 6 members per household (Family tier)
- [ ] **Body doubling / shared focus (experimental)**
- [ ] "Focus room" — join a virtual co-working session
- [ ] See other participants' focus timers (anonymized)
- [ ] Accountability: "3 people are focusing with you"
- [ ] Optional: audio ambiance shared in room
- [ ] Join public rooms or create private (link invite)
- [ ] **Body doubling / shared focus (deferred to v3)**
- [ ] _Experimental feature requiring real-time infrastructure (Event Bus). Defer until platform gap component 2.4 is built._
- [ ] v3 scope: "Focus room" — virtual co-working, see others' timers (anonymized), shared ambiance
- [ ] **API + webhooks**
- [ ] REST API: CRUD timers, routines, categories
@ -768,10 +856,13 @@ ChronoMind ships in **5 phases over ~6 months**, from web MVP to full cross-plat
### Metrics That Matter
| Metric | MVP Target | v1 Target | v2 Target |
|--------|-----------|-----------|-----------|
| **MAU** | 50 | 1,000 | 5,000 |
| **DAU/MAU ratio** | > 40% | > 50% | > 50% |
| Metric | MVP Target (Phase 1-2) | v1 Target (Phase 3-4) | v2 Target (Phase 5) |
|--------|------------------------|----------------------|---------------------|
| **PWA installs** | 100 | 500 | 2,000 |
| **DAU** | 50 | 200 | 1,000 |
| **MAU** | 150 | 1,000 | 5,000 |
| **DAU/MAU ratio** | > 33% | > 50% | > 50% |
| **Timers created/week** | 500+ | 5,000+ | 25,000+ |
| **Pre-warning usage** | > 60% of timers | > 70% | > 75% |
| **Routine creation** | > 20% of users | > 30% | > 35% |
| **7-day retention** | > 30% | > 40% | > 50% |
@ -780,6 +871,7 @@ ChronoMind ships in **5 phases over ~6 months**, from web MVP to full cross-plat
| **Pro conversion** | — | > 3% | > 5% |
| **Streak > 7 days** | — | > 15% of users | > 25% |
| **Shared summary** | — | > 10% weekly | > 20% |
| **Snooze rate** | < 40% | < 30% | < 25% |
### Viral Growth Loops
@ -851,8 +943,12 @@ Family ($5.99/mo): Everything in Pro + shared timers (6 members),
| 6 | Low App Store visibility | Medium | 3-4 | ASO from day 1; ProductHunt launch; content marketing |
| 7 | Sync conflicts across platforms | Medium | 4-5 | Start with iCloud (Apple-only); cross-platform sync in Phase 5 |
| 8 | Android notification restrictions (Doze, exact alarms) | Medium | 5 | Use `AlarmManager.setExactAndAllowWhileIdle()`; request permissions |
| 9 | User overwhelm — too many features | Medium | 2+ | Progressive disclosure; smart defaults; "simple mode" toggle |
| 9 | User overwhelm — too many features | Medium | 2+ | Progressive disclosure; smart defaults; neurodivergent-friendly default |
| 10 | Monetization too early kills growth | Low | 4 | Free for 3 phases; only monetize when PMF is proven |
| 11 | Platform-service Email Delivery not ready for Phase 4 accounts | Medium | 4 | Fallback: Apple Sign-In / Google Sign-In only (skip email/password) |
| 12 | Platform-service Event Bus not ready for Phase 5 shared timers | Medium | 5 | Fallback: polling (30s interval) instead of real-time push |
| 13 | Service Worker termination loses timer state | Medium | 1 | Persist all state to IndexedDB; SW checks timestamps on wake, not in-memory |
| 14 | Design token conflict with ByteLyst ecosystem | Low | 1 | ChronoMind gets own product section in token file; shared base, own semantics |
---
@ -877,8 +973,77 @@ Family ($5.99/mo): Everything in Pro + shared timers (6 members),
|----------|-----------|--------------|---------|---------------|
| **Web** | Next.js 16, React 19 | TailwindCSS v4, shadcn/ui, Zustand, Serwist, chrono-node, date-fns, Recharts | IndexedDB (idb) | Web Push + Service Worker |
| **iOS** | SwiftUI (iOS 17+) | SwiftData, WidgetKit, ActivityKit, EventKit, CoreLocation | SwiftData | UNUserNotificationCenter |
| **watchOS** | SwiftUI (watchOS 10+) | WidgetKit (complications), ClockKit | App Groups shared | WKExtension notifications |
| **macOS** | SwiftUI (macOS 14+) | AppKit (menu bar) | SwiftData (shared via iCloud) | NSUserNotificationCenter |
| **watchOS** | SwiftUI (watchOS 10+) | WidgetKit (complications) | App Groups shared | WKExtension notifications |
| **macOS** | SwiftUI (macOS 14+) | AppKit (menu bar) | SwiftData (shared via iCloud) | UNUserNotificationCenter |
| **Android** | Jetpack Compose | Material 3, Room, Hilt, Glance (widgets), AlarmManager | Room (SQLite) | NotificationManager + AlarmManager |
| **Wear OS** | Compose for Wear OS | Tiles, Complications, Rotary Input | Room (shared) | Wearable notifications |
| **Sync API** | TBD (Fastify or Cloudflare Workers) | JWT auth, E2E encryption | Cosmos DB or D1 | — |
| **Sync API** | Platform-service (Fastify 5, port 4003) in `learning_ai_common_plat` | @bytelyst/auth (JWT), @bytelyst/cosmos, @bytelyst/config | Azure Cosmos DB (`productId: "chronomind"`) | Platform-service notifications module |
---
## Appendix B: Cost Estimation
| Item | Phase | Monthly Cost | Notes |
|------|-------|-------------|-------|
| **Vercel (web hosting)** | 1+ | $0 (free tier) | Hobby plan covers MVP easily |
| **Domain** | 1+ | ~$12/yr | `.app` or `.io` domain |
| **Azure Cosmos DB** | 4+ | ~$25-50/mo | Serverless tier, `productId: "chronomind"` partition |
| **Apple Developer Program** | 3+ | $99/yr | Required for App Store + TestFlight |
| **Google Play Console** | 5+ | $25 one-time | Required for Play Store |
| **Plausible Analytics** | 1+ | $0 (self-hosted) or $9/mo | Or use platform-service telemetry (free) |
| **Stripe** | 5+ | 2.9% + 30¢ per transaction | Pro/Family subscription processing |
| **Total (Phase 1-3)** | | ~$10/mo | Minimal — mostly free tiers |
| **Total (Phase 4-5)** | | ~$75-100/mo | Cosmos DB + domain + Apple program |
> **Note:** Platform-service infrastructure (Cosmos DB, AKV, health checks) is shared with LysnrAI. ChronoMind's incremental cost is only additional Cosmos RUs for timer data.
---
## Appendix C: Common Platform Reusability
ChronoMind reuses **13 shared packages** and **17+ platform-service modules** from `learning_ai_common_plat`:
| Package | ChronoMind Use | Phase |
|---------|---------------|-------|
| @bytelyst/auth | JWT auth for Pro/Family accounts | 4-5 |
| @bytelyst/react-auth | Web dashboard auth context | 4-5 |
| @bytelyst/api-client | Web → sync API calls | 4-5 |
| @bytelyst/config | Config + `productId: "chronomind"` + AKV | 4-5 |
| @bytelyst/cosmos | Cosmos DB for cloud sync, shared timers | 4-5 |
| @bytelyst/errors | Typed HTTP errors | 4-5 |
| @bytelyst/logger | Server-side structured logging | 4-5 |
| @bytelyst/design-tokens | Cross-platform design system | 1+ |
| @bytelyst/monitoring | Health-check utilities | 5 |
| @bytelyst/blob | Custom alarm sound uploads | 5 |
| @bytelyst/extraction | Advanced NL parsing via extraction-service | 4+ |
| @bytelyst/testing | Shared test mocks | 4-5 |
| @bytelyst/fastify-core | Service app factory | 5 |
**New platform-service modules needed (4):**
- `timers` — timer CRUD + sync for `productId: "chronomind"`
- `routines` — routine CRUD + sync
- `shared-timers` — household shared timer management
- `households` — household membership + invitations
---
## Appendix D: Key Decisions
| # | Decision | Options | Recommendation | Rationale |
|---|----------|---------|----------------|-----------|
| 1 | Backend stack | Platform-service vs Cloudflare Workers | **Platform-service** | Reuses 17+ existing modules |
| 2 | Apple-only sync | CloudKit vs skip until Phase 5 | **CloudKit for Phase 3-4** | Free, fast for Apple-only |
| 3 | E2E encryption | Full E2E vs TLS + at-rest | **TLS + at-rest** | Timer data not sensitive enough |
| 4 | Real-time shared timers | WebSocket vs SSE vs polling | **SSE + polling fallback** | WebSocket overkill for timers |
| 5 | Design tokens | Extend bytelyst.tokens.json | **ChronoMind product section** | Shared base, own urgency colors |
| 6 | Analytics | Plausible vs PostHog vs telemetry | **Platform-service telemetry** | Free, self-hosted, integrated |
| 7 | Phase 3 scope | iOS + Watch + Mac vs iOS + Watch | **iOS + Watch; Mac in Phase 4** | 4 weeks already aggressive |
| 8 | Calendar sync | Two-way vs one-way | **One-way (read-only)** | Two-way is fragile |
| 9 | Body doubling | Phase 5 vs v3 | **Defer to v3** | Needs Event Bus infrastructure |
| 10 | Domain name | chronomind.app vs .io | **Check availability pre-Phase 1** | Needed for deployment |
| 11 | Open-source | Full vs closed vs hybrid | **Hybrid: open timer engine lib** | Credibility + community |
| 12 | Windows/Tauri | Phase 5 vs Phase 6 vs v3 | **Defer to v3** | Focus on mobile first |
| 13 | AKV secrets | Own CHRONO_SECRETS vs share | **Share Cosmos/JWT, own Stripe** | productId partitions data |
| 14 | Fonts | ByteLyst (DM Sans) vs own (Inter) | **Own: Inter + JetBrains Mono** | Superior digit rendering |
> **Windows/Tauri note:** PRD lists Windows as v2.0 target. Deferred to v3 — insufficient market signal to justify Tauri investment before mobile platforms are stable. Revisit after Phase 5 Android launch.