6.3 KiB
6.3 KiB
Carry Your Live — Roadmap & Feature List
Status as of Aug 2026. Based on code audit of frontend (carry-your-live/), backend (backend/), and API_SPEC.md.
Legend
- ✅ Implemented
- 🟡 Partial / stubbed
- ❌ Missing
Current State (Feature List)
Core Task Management
- ✅ Tasks CRUD with title, description, category, priority, due date/time, all-day
- ✅ Nested subtasks (sub-subtask trees), convert task↔subtask, re-parent, reorder
- ✅ Categories/tags with colors (task color derives from category)
- ✅ Priorities (None → Critical) with badges
- ✅ Repeating/recurring tasks: repeat profiles, series IDs, this/future/all delete scopes, undo-complete
- ✅ Overdue / due-today highlighting
Screens & Navigation
- ✅ Tabs: Todo, Calendar, Stats, Settings (+ Add Task, Day View, Task Detail, Subtask Detail stack screens)
- ✅ Category filter chips, swipe actions, long-press multi-select, drag-to-reorder
- ✅ Quick-add bar, calendar date strip, analog clock widget
- ✅ Stats screen (client-side
useStats)
Sync & Accounts
- ✅ Offline-first WatermelonDB (schema v21) + full sync engine (tombstones, LWW)
- ✅ Backend: Express + Drizzle + Postgres — auth (register/login/me/forgot/reset), sync pull/push, tasks, subtasks, categories, repeat profiles, user settings, user search
- ✅ Login/register/sign-out UI (
SyncModal)
Social
- ✅ Friends: request/accept/decline/remove, user search, full backend routes
- ✅ Assignee field on tasks/subtasks (schema v7)
Settings (wired up)
- ✅ Default tag, sort order, show-completed, calendar days-ahead, accent color picker, server URL override
Gaps (what's broken or stubbed)
| Item | Status | Where |
|---|---|---|
| Light mode / theme toggle | ❌ Dark-only, hard-coded palette; backend has darkMode column unused |
src/theme.tsx:92 |
| Notifications toggle | 🟡 Stored but never read; toggling off doesn't disable reminders | settings.tsx:148, src/services/notifications.ts |
| Global reminder preference | 🟡 Stored but never applied when scheduling | src/theme.tsx:180 |
| Forgot/reset password UI | 🟡 Backend done, no client UI | backend/src/routes/auth.ts:149 |
| Pull-to-refresh | 🟡 Reloads local queries only, doesn't trigger server sync | TaskList.tsx:129 |
| Client settings sync | 🟡 All settings AsyncStorage-only; PATCH /users/me/settings never called |
— |
| Reminder enum mismatch | 🟡 Spec uses minutes ('15','30'…), client uses '5m','1h' style |
API_SPEC.md vs client |
| Webhooks / rate-limit headers | 🟡 In spec, not built | API_SPEC.md |
Roadmap (by release)
Last released: v1.0.0 (2026-08-05). The
Unreleasedchangelog section already contains the friends feature, assignee field, and various fixes.
v1.1.0 — Friends & Assignees (staged; ship current Unreleased + stub fixes)
Ships what's already merged plus fixes to half-wired features so nothing in the release is a dead toggle.
- 📦 Release existing
Unreleasedchanges: friends feature, assignee field (schema v7), QuickAddBar on overview, sync fixes for repeat/reminders - Fix notifications toggle so it's actually respected (
src/services/notifications.ts); wire uprescheduleAllReminders() - Apply global reminder preference when scheduling task reminders
- Make pull-to-refresh run a real server sync cycle (
TaskList.tsx:129) - Add forgot/reset password UI (backend routes already exist:
backend/src/routes/auth.ts:149) - Unify reminder offset enums between client,
API_SPEC.md, and backend
Theme: "Everything you can toggle does something."
v1.2.0 — Theming & Findability
- Light mode + follow-system-theme option; theme-mode setting synced via
/users/me/settings(backenddarkModecolumn already exists) - Sync all client settings to
PATCH /users/me/settingsinstead of AsyncStorage-only - Task search: filter-by-text in list + global search screen
- Friend-request badges/indicators in main UI (polling-based)
- Resolve API error-format drift between spec and auth routes
Theme: "Look good, find anything."
v1.3.0 — Stats & Insights
- Persisted stats snapshots for history/trends over time (current stats are per-local-data only)
- Productivity trends: completion rates by category/priority, streaks
- Export stats (CSV/image share)
Theme: "Show me how I'm doing."
v1.4.0 — Quick Capture & Calendar UX
Client-side only; no backend changes required.
- Natural language quick-add ("pay rent tomorrow 5pm !finance" → parsed fields) in QuickAddBar
- Snooze/postpone gesture on overdue tasks
- Drag-and-drop rescheduling between days in calendar
- Month grid view alongside the date strip
- "Today at a glance" dashboard combining overdue, today, and stats
- Time estimates + daily planned-vs-free-time indicator
Theme: "Capture in seconds."
v1.5.0 — Power Tools & Personalization
- Task templates / saved routines (builds on repeat profiles)
- Soft-archive with search (archive instead of delete)
- Full local JSON export/import backup
- Attachments/links/photos on tasks
- Location-based reminders (expo-location)
- Markdown support in descriptions
- Deep links (
carryyourlive://task/<id>) for shortcuts and notifications - Undo toast for all destructive actions (extend existing complete-undo)
- Biometric lock / privacy blur on app switch
- Haptics settings + reduced-motion mode
- Custom app icon / theme presets beyond accent color
- Onboarding flow + sample data seeding
- Android home-screen widget / week agenda widget
Theme: "Make it yours, make it fast."
v2.0.0 — Collaboration
Breaking-ish social features; requires backend schema changes.
- Real task assignment delivery: shared-list or assignment mechanism (rows are currently strictly user-scoped — assigneeId goes nowhere)
- Shared lists / collaborative categories with permissions
- Server push notifications (FCM/APNs): cross-device reminders, friend requests, assignments
- Comments/activity feed on assigned tasks
- Shared category templates ("family shopping list")
- Reactions/acknowledgments on assignments
Theme: "Carry it together."
v2.1.0 — Platform & Ops
- Webhooks (
POST /webhooks/sync) + documented rate limiting perAPI_SPEC.md - Account management: email field, account deletion
- Release hardening: OTA update flow validation, EAS builds for iOS/Android
Theme: "Production-grade."