--- phase: 02-user-experience-advanced-features plan: 01 type: execute wave: 1 depends_on: [] files_modified: [src/types/task.ts, src/components/TaskCard.tsx, src/components/TaskForm.tsx, src/components/CalendarGrid.tsx, src/lib/taskPersistence.ts] autonomous: true must_haves: truths: - "User can view tasks and events in a weekly calendar view" - "User can add tasks to specific days within the weekly view" - "User can edit existing tasks (change title, date, description)" - "User can delete tasks from the weekly view" - "User can mark tasks as complete/incomplete" - "User can navigate between weeks using previous/next buttons" - "User can switch between day and week views" - "User can drag and drop tasks between days to reorganize them" - "User can persist tasks locally in the browser" - "Application has a clean, minimalist interface that is easy to use" - "Application is responsive and works well on desktop and tablet devices" - "Tasks are clearly distinguishable from calendar events in the UI" - "Adding and editing tasks follows an intuitive workflow with minimal steps" - "Completed tasks are visually marked in a clear way" - "User can create recurring tasks that repeat daily, weekly, or monthly" - "User can assign categories or tags to organize tasks" - "User can set reminders for specific tasks to be notified before due time" - "User can prioritize tasks using high, medium, or low priority levels" - "User can add detailed descriptions and notes to tasks" artifacts: - path: "src/components/TaskCard.tsx" provides: "Individual task rendering with completion toggle" min_lines: 30 - path: "src/components/TaskForm.tsx" provides: "Modal form for creating/editing tasks" min_lines: 40 - path: "src/components/CalendarGrid.tsx" provides: "Weekly view with day columns and task rendering" min_lines: 50 - path: "src/lib/taskPersistence.ts" provides: "Local storage integration for tasks" exports: ["saveTasks", "loadTasks"] - path: "src/types/task.ts" provides: "Task data interface with category property" contains: "category?: string" key_links: - from: "src/components/TaskCard.tsx" to: "src/lib/taskPersistence.ts" via: "local storage persistence" pattern: "taskPersistence\\.saveTasks|taskPersistence\\.loadTasks" - from: "src/components/CalendarGrid.tsx" to: "src/components/TaskCard.tsx" via: "component composition" pattern: " Extend Task type with advanced properties src/types/task.ts Add recurring, category, reminder, and priority properties to Task interface: - `recurring?: 'daily' | 'weekly' | 'monthly'` - indicates if task repeats - `priority?: 'low' | 'medium' | 'high'` - task priority level - `reminder?: Date` - reminder time for the task - `tags?: string[]` - array of tags/categories for task organization Keep existing properties (id, title, date, description, completed) unchanged. Run `npm run type-check` to verify TypeScript compilation succeeds with new properties Task interface includes all new properties and maintains backward compatibility Enhance TaskCard component with advanced features src/components/TaskCard.tsx Modify TaskCard component to render: - Priority indicator (color-coded badges or icons) - Reminder badge if reminder is set - Tags display with visual distinction - Recurring icon if task is recurring - Improved styling for better visual hierarchy Ensure component is responsive and accessible. npm test passes and TaskCard renders with new features visible in UI TaskCard shows all new features with proper visual indicators and remains responsive Update TaskForm component for advanced features src/components/TaskForm.tsx Update TaskForm to include form inputs for: - Priority selection (low, medium, high) - Reminder date/time picker - Recurring task selection (daily, weekly, monthly) - Tag/category input field - Improved form layout and validation Maintain existing functionality for title, date, and description fields. npm test passes and form renders all new fields with proper validation TaskForm includes all new fields with proper form handling and validation Update CalendarGrid to support new task features src/components/CalendarGrid.tsx Modify CalendarGrid to: - Properly render new task features in the weekly view (priorities, tags) - Handle any special rendering for recurring tasks (e.g., indicators) - Maintain responsive design for both desktop and tablet layouts - Ensure drag-and-drop functionality works with enhanced tasks Keep existing navigation and task creation functionality. npm test passes and CalendarGrid renders tasks with new features correctly CalendarGrid properly displays all new task features and maintains functionality Update taskPersistence for advanced features src/lib/taskPersistence.ts Modify taskPersistence to: - Serialize and deserialize new task properties (recurring, priority, reminder, tags) - Maintain backward compatibility with older task objects - Ensure all data is properly persisted to localStorage Test with existing tasks to confirm no data loss. Run tests that verify data persistence with new properties taskPersistence correctly saves and loads tasks with all new properties - All new features are visually displayed in UI - All form fields for new features are accessible and functional - Data persists correctly for all new properties - Backward compatibility with existing tasks is maintained - Responsive design works on both desktop and tablet devices - User can apply all new task features (recurring, categories, reminders, priority) to tasks - UI correctly displays all new features with clear visual indicators - Form inputs for all new features work correctly - All data persists correctly with backward compatibility - Application remains responsive and accessible