Feature parity analysis
Generated Feb 24, 2026 ยท Codebase snapshot
| Feature | ๐ Web | ๐ฑ Mobile |
|---|---|---|
| 1. Authentication | ||
| Email/password sign up & in | โ Supabase AuthEmail confirmation flow | โ Supabase AuthEmail confirmation flow |
| Google OAuth | โ Google OAuth via Supabase | โ Not implementedEmail/password only |
| Logout | โ Via sidebar/nav | โ Profile screen with confirmation dialog |
| Protected routes | โ ProtectedRoute component | โ Auth guard in _layout.js |
| 2. KPI Management | ||
| Create KPI (recurring) | โ KPIForm dialog in Settings | โ KPIForm modal in Settings |
| Edit KPI | โ Edit button per KPI row | โ Pencil icon per KPI row |
| Delete KPI | โ Trash icon, instant | โ Trash icon + confirmation Alert |
| Data types (boolean/number/range) | โ All three | โ All three |
| Cadence (daily/weekly/monthly/yearly/once) | โ Full cadence engine | โ Full cadence engine (ported) |
| Display IDs (e.g. K3, T5) | โ displayPrefix + displayId | โ ID badges shown in Settings |
| Drag-assign KPIs to categories | โ DnD with react-dnd (HTML5) | โ KPIDragAssign component |
| 3. Daily Check-in | ||
| Log boolean/number/range values | โ KPIItem inline controls | โ KPIItem inline controls |
| Date picker / navigation | โ Calendar DatePicker popup | โ Horizontal date pill scroller (14 days) |
| Quick add to-do (one-off task) | โ "+" button โ dialog with cadence=once | โ FAB โ bottom sheet modal |
| Category-grouped KPI list | โ KPICategoryList with adjustable width | โ KPICategoryList (native) |
| Column width slider | โ Desktop only (md+ breakpoint) | โ Not applicable (single-column mobile) |
| 4. Dashboard / Overview | ||
| Today's completion ring | โ CompletionRing component | โ CompletionRing (SVG-based) |
| Streak cards grid | โ 2-column grid, scroll area | โ 2-column grid with row layout |
| Stats summary pills | โ Not present | โ Active KPIs, Today %, Best Streak |
| Pull-to-refresh | โ N/A (desktop browser) | โ RefreshControl on Dashboard + Check-in |
| 5. Streaks | ||
| Streak calculation | โ In supabaseStore (inline) | โ Dedicated streakCalc.js + streakCalculator.js |
| Current + longest streak display | โ StreakCard component | โ StreakCard component |
| 6. Categories | ||
| CRUD categories | โ CrudTable in Settings tab | โ CategoryManager component |
| Reorder categories | โ Drag handles in CrudTable | โ CategoryManager (sortOrder) |
| 7. Voice Commands | ||
| Voice recording | โ MediaRecorder API (WebM) | โ expo-av Recording (M4A) |
| AI command parsing (Gemini) | โ Supabase Edge Function ai-proxy | โ Same edge function |
| Conversational chat mode | โ VoiceChatPanel with message history, text + voice input | โ Single-shot voice onlyNo text input, no multi-turn chat |
| Command by display ID | โ "Mark K3 done" via resolveDisplayId | โ Same resolveDisplayId logic |
| Dedicated voice screen | โ Slide-up panel (no dedicated page) | โ Full tab screen with pulse animation + command history |
| 8. Notifications / Reminders | ||
| Notification rule CRUD | โ Settings โ Notifications tab | โ Settings โ Notifications tab |
| Frequency (hourly/daily/weekly) | โ Dropdown select | โ Pill toggle buttons |
| Time window (start/end hour) | โ TimeSelect component | โ Hour picker modal |
| Actual push notifications | โ ๏ธ Simulated only (noted in UI) | โ ๏ธ Rules saved but no push integration yet |
| 9. Settings & Profile | ||
| Profile screen | โ No dedicated profile page | โ Avatar, stats summary, account info, web link |
| Overdue task auto-reschedule | โ OverdueTaskBadge + auto-move logic in store | โ Same logic ported in store.js |
| 10. Real-time Sync | ||
| Supabase Realtime subscription | โ RealtimeProvider wraps pagespostgres_changes on categories, kpis, records, notifications | โ initializeRealtime in storeSame channel subscriptions |
| Cross-device sync | โ Via Supabase | โ Via Supabase |
| 11. Other | ||
| Data export | โ Not implemented | โ Not implemented |
| Templates | โ Not implemented | โ Not implemented |
| Feature | Notes | |
|---|---|---|
| Data export (CSV/JSON) | No export capability on either platform. Users can't download their data. | |
| KPI templates | No pre-built template library. Every KPI must be created from scratch. | |
| Actual push notifications | Both store notification rules in Supabase but neither delivers real notifications. Web notes this is "simulated." | |
| Charts / trend graphs | Dashboard shows completion ring and streak cards, but no historical trend charts or graphs. | |