--- phase: 01-setup-foundation plan: 02 type: execute wave: 1 depends_on: [] files_modified: [src/components/, src/lib/, src/types/, src/hooks/, src/utils/] autonomous: true must_haves: truths: - "Core components are created for weekly calendar view" - "Task card component is implemented with proper styling" - "Navigation controls allow week switching" - "Drag-and-drop functionality is functional" - "Data persistence works using localStorage" artifacts: - path: "src/components/CalendarGrid.tsx" provides: "Weekly calendar grid component" exports: "CalendarGrid component" - path: "src/components/TaskCard.tsx" provides: "Task display and editing component" exports: "TaskCard component" - path: "src/components/NavigationControls.tsx" provides: "Previous/Next week navigation" exports: "NavigationControls component" - path: "src/lib/taskPersistence.ts" provides: "Local storage data management" exports: ["saveTasks", "loadTasks"] - path: "src/types/task.ts" provides: "Task data structure definition" contains: "interface Task" key_links: - from: "src/components/CalendarGrid.tsx" to: "src/components/TaskCard.tsx" via: "component composition" pattern: "TaskCard.*props" - from: "src/components/CalendarGrid.tsx" to: "src/lib/taskPersistence.ts" via: "data persistence" pattern: "taskPersistence.*save" - from: "src/components/CalendarGrid.tsx" to: "src/components/NavigationControls.tsx" via: "navigation" pattern: "NavigationControls.*props" --- # Create foundational components and data persistence ## Objective Implement core components for the weekly calendar view and establish data persistence with localStorage. ## Purpose Build the essential UI components and data layer needed for the weekly todo list application, including the calendar grid, task cards, navigation, and local storage integration. ## Output Functional core components for displaying and managing tasks in a weekly calendar view, with data persistence capability. ## Context This plan builds upon the project setup from plan 01-01, focusing on implementing the actual functionality needed to display and manage tasks in a weekly calendar view. ## Tasks Create core component structure and task type definitions src/types/task.ts, src/components/, src/hooks/ 1. Define Task type with properties: id, title, date, description, completed, category 2. Create directory structure for components, hooks, and utilities 3. Create basic component templates for CalendarGrid, TaskCard, and NavigationControls 4. Implement basic hooks for managing component state Typescript compiles without errors and Task type is properly defined Task type is defined with required properties and basic component structure exists Implement weekly calendar grid component src/components/CalendarGrid.tsx 1. Create a grid-based calendar view showing 7 days (Monday to Sunday) 2. Display tasks organized by day 3. Implement proper date handling using date-fns 4. Create a way to add new tasks to specific days 5. Make days clickable for adding new tasks CalendarGrid component renders 7 columns representing days and displays sample tasks CalendarGrid component renders properly with days of week and basic task display Implement task card component with drag-and-drop src/components/TaskCard.tsx, src/lib/taskPersistence.ts 1. Create TaskCard component with title, date, and description 2. Implement drag-and-drop functionality using react-dnd 3. Add ability to edit task details 4. Add complete/incomplete toggle 5. Implement data persistence with localStorage TaskCard component renders correctly and supports drag-and-drop interactions TaskCard component allows editing and dragging between days Implement navigation controls and data persistence src/components/NavigationControls.tsx, src/lib/taskPersistence.ts 1. Create navigation controls for previous/next week buttons 2. Implement week navigation logic 3. Create localStorage persistence functions for saving and loading tasks 4. Connect data persistence to the calendar grid component Navigation controls allow switching between weeks and tasks persist between page reloads Navigation works correctly and tasks persist in localStorage - Calendar grid displays properly with tasks organized by day - Task cards render with all required information - Drag-and-drop functionality works between days - Navigation controls allow switching weeks - Tasks persist in localStorage between browser sessions - Calendar grid component shows 7-day weekly view with tasks organized by day - Task cards display task information and support editing - Users can move tasks between days using drag-and-drop - Navigation controls allow switching between weeks - Tasks are saved to and loaded from localStorage - All components integrate properly with each other After completion, create `.planning/phases/01-setup-foundation/01-02-SUMMARY.md`