- Add useRealtimeSync hook for polling server updates every 3 seconds - Create API endpoint to check last updated timestamp for lists - Integrate real-time sync into ListDetailView component - Automatically refresh when other users make changes to shared lists - Poll on interval and when page becomes visible again
244 lines
9.4 KiB
Markdown
244 lines
9.4 KiB
Markdown
|
|
# Implementation Plan: Ultimate Lists App
|
|
|
|
- [x] 1. Enhance database schema with missing fields
|
|
- Update Prisma schema to add tags (JSON array) and notes fields to Item model
|
|
- Run database migration to apply schema changes
|
|
- Regenerate Prisma client with updated types
|
|
- _Requirements: 5.3, 5.4_
|
|
|
|
- [ ]* 1.1 Write property test for metadata round-trip
|
|
- **Property 4: Task metadata round-trip**
|
|
- **Validates: Requirements 1.4, 5.1, 5.2, 5.3, 5.4**
|
|
|
|
- [x] 2. Implement core server actions for enhanced task operations
|
|
- Add updateItem server action with support for all metadata fields
|
|
- Add deleteItem server action with proper revalidation
|
|
- Add deleteList server action with cascade behavior
|
|
- Add updateList server action for renaming
|
|
- _Requirements: 1.2, 1.3, 2.4, 2.5_
|
|
|
|
- [ ]* 2.1 Write property test for task updates preserve identity
|
|
- **Property 2: Task updates preserve identity**
|
|
- **Validates: Requirements 1.2**
|
|
|
|
- [ ]* 2.2 Write property test for task deletion
|
|
- **Property 3: Task deletion removes from queries**
|
|
- **Validates: Requirements 1.3**
|
|
|
|
- [ ]* 2.3 Write property test for cascade deletion
|
|
- **Property 9: Cascade deletion**
|
|
- **Validates: Requirements 2.4**
|
|
|
|
- [ ]* 2.4 Write property test for list rename preserves items
|
|
- **Property 10: List rename preserves items**
|
|
- **Validates: Requirements 2.5**
|
|
|
|
- [x] 3. Implement search functionality
|
|
- Create searchItems server action that searches across title, description, notes, and tags
|
|
- Add support for list-scoped search vs global search
|
|
- Implement text highlighting utility function
|
|
- _Requirements: 8.1, 8.2, 8.5_
|
|
|
|
- [ ]* 3.1 Write property test for search result completeness
|
|
- **Property 21: Search result completeness**
|
|
- **Validates: Requirements 8.1**
|
|
|
|
- [ ]* 3.2 Write property test for search highlight correctness
|
|
- **Property 22: Search highlight correctness**
|
|
- **Validates: Requirements 8.2**
|
|
|
|
- [ ]* 3.3 Write property test for search scope correctness
|
|
- **Property 24: Search scope correctness**
|
|
- **Validates: Requirements 8.5**
|
|
|
|
- [x] 4. Implement filtering and sorting
|
|
- Create getItemsByFilter server action with support for priority, completed, tags, and due date filters
|
|
- Implement compound filter logic (AND conditions)
|
|
- Add sorting by createdAt, dueDate, priority, and title
|
|
- Handle null due dates in sorting (place at end)
|
|
- _Requirements: 6.1, 6.2, 6.3, 6.5_
|
|
|
|
- [ ]* 4.1 Write property test for sort order correctness
|
|
- **Property 15: Sort order correctness**
|
|
- **Validates: Requirements 6.1**
|
|
|
|
- [ ]* 4.2 Write property test for filter matching correctness
|
|
- **Property 16: Filter matching correctness**
|
|
- **Validates: Requirements 6.2**
|
|
|
|
- [ ]* 4.3 Write property test for compound filter conjunction
|
|
- **Property 17: Compound filter conjunction**
|
|
- **Validates: Requirements 6.3**
|
|
|
|
- [ ]* 4.4 Write property test for null due date sorting
|
|
- **Property 19: Null due date sorting**
|
|
- **Validates: Requirements 6.5**
|
|
|
|
- [x] 5. Create item detail page and form components
|
|
- Build /list/[id]/item/[itemId] page for viewing full item details
|
|
- Create ItemForm component with fields for all metadata (priority, due date, tags, notes)
|
|
- Create ItemDetail component to display all item information
|
|
- Add form validation for item inputs
|
|
- _Requirements: 1.1, 1.2, 5.1, 5.2, 5.3, 5.4_
|
|
|
|
- [ ]* 5.1 Write property test for task creation preserves description
|
|
- **Property 1: Task creation preserves description**
|
|
- **Validates: Requirements 1.1**
|
|
|
|
- [x] 6. Enhance list management UI
|
|
- Add ListForm component for creating and editing lists
|
|
- Implement list deletion with confirmation dialog
|
|
- Add list renaming functionality
|
|
- Update ListCard to show accurate item counts
|
|
- _Requirements: 2.1, 2.2, 2.4, 2.5_
|
|
|
|
- [ ]* 6.1 Write property test for list creation with unique identifiers
|
|
- **Property 6: List creation with unique identifiers**
|
|
- **Validates: Requirements 2.1**
|
|
|
|
- [ ]* 6.2 Write property test for list retrieval completeness
|
|
- **Property 7: List retrieval completeness**
|
|
- **Validates: Requirements 2.2**
|
|
|
|
- [x] 7. Build list detail page with item management
|
|
- Create /list/[id] page showing all items in a list
|
|
- Add ItemCard component with completion toggle, priority badge, and due date display
|
|
- Implement inline item creation
|
|
- Add item deletion functionality
|
|
- Show overdue indicators for past due dates
|
|
- _Requirements: 1.3, 1.5, 2.3, 5.5_
|
|
|
|
- [ ]* 7.1 Write property test for task completion toggle
|
|
- **Property 5: Task completion toggle**
|
|
- **Validates: Requirements 1.5**
|
|
|
|
- [ ]* 7.2 Write property test for list filtering correctness
|
|
- **Property 8: List filtering correctness**
|
|
- **Validates: Requirements 2.3**
|
|
|
|
- [ ]* 7.3 Write property test for overdue task identification
|
|
- **Property 14: Overdue task identification**
|
|
- **Validates: Requirements 5.5**
|
|
|
|
- [x] 8. Add search and filter UI components
|
|
- Create SearchBar component with debounced input
|
|
- Build FilterPanel component with controls for priority, completion, tags, and due date
|
|
- Add sort controls (field and direction)
|
|
- Implement filter clear functionality
|
|
- Display search results with highlighted text
|
|
- _Requirements: 6.1, 6.2, 6.3, 6.4, 8.1, 8.2, 8.3_
|
|
|
|
- [ ]* 8.1 Write property test for filter clear restoration
|
|
- **Property 18: Filter clear restoration**
|
|
- **Validates: Requirements 6.4**
|
|
|
|
- [ ]* 8.2 Write property test for search clear restoration
|
|
- **Property 23: Search clear restoration**
|
|
- **Validates: Requirements 8.3**
|
|
|
|
- [x] 9. Implement client-side state management
|
|
- Create useSearch hook for search state and debouncing
|
|
- Create useFilters hook for filter state management
|
|
- Create useOptimisticUpdate hook for optimistic UI updates
|
|
- Add scroll position preservation logic
|
|
- _Requirements: 6.4, 7.4, 8.3_
|
|
|
|
- [ ]* 9.1 Write property test for scroll position preservation
|
|
- **Property 20: Scroll position preservation**
|
|
- **Validates: Requirements 7.4**
|
|
|
|
- [x] 10. Checkpoint - Ensure all tests pass
|
|
- Ensure all tests pass, ask the user if questions arise.
|
|
|
|
- [x] 11. Set up PWA infrastructure
|
|
- Create service worker (public/sw.js) with caching strategies
|
|
- Implement cache-first strategy for static assets
|
|
- Implement stale-while-revalidate for API responses
|
|
- Add offline fallback page
|
|
- Update manifest.json with complete metadata
|
|
- Add service worker registration in app layout
|
|
- _Requirements: 4.1, 4.3, 4.4_
|
|
|
|
- [ ]* 11.1 Write property test for offline resource availability
|
|
- **Property 12: Offline resource availability**
|
|
- **Validates: Requirements 4.4**
|
|
|
|
- [x] 12. Implement offline synchronization
|
|
- Create useOfflineSync hook for detecting connectivity
|
|
- Implement mutation queue for offline operations
|
|
- Add background sync for pending mutations
|
|
- Show offline indicator in UI
|
|
- Handle sync conflicts gracefully
|
|
- _Requirements: 4.5_
|
|
|
|
- [ ]* 12.1 Write property test for offline mutation synchronization
|
|
- **Property 13: Offline mutation synchronization**
|
|
- **Validates: Requirements 4.5**
|
|
|
|
- [x] 13. Add PWA assets and metadata
|
|
- Generate app icons in multiple sizes (192x192, 512x512)
|
|
- Create favicon and apple-touch-icon
|
|
- Add meta tags for PWA in app layout
|
|
- Configure theme color and background color
|
|
- Test "Add to Home Screen" functionality in Safari
|
|
- _Requirements: 4.1, 4.2_
|
|
|
|
- [x] 14. Implement responsive design enhancements
|
|
- Ensure all components are mobile-responsive
|
|
- Add touch-optimized controls (larger tap targets)
|
|
- Test on various screen sizes
|
|
- Optimize layout for mobile and desktop
|
|
- _Requirements: 7.1, 7.2_
|
|
|
|
- [x] 15. Add visual feedback and polish
|
|
- Implement loading states for async operations
|
|
- Add success/error toast notifications
|
|
- Create smooth transitions between views
|
|
- Add empty states for lists and items
|
|
- Implement skeleton loaders
|
|
- _Requirements: 7.3_
|
|
|
|
- [x] 16. Implement error handling
|
|
- Add try-catch blocks to all server actions
|
|
- Implement error boundaries in React components
|
|
- Add user-friendly error messages
|
|
- Handle database connection failures gracefully
|
|
- Implement retry logic for failed operations
|
|
- _Requirements: All (error handling is cross-cutting)_
|
|
|
|
- [x] 17. Add input validation
|
|
- Validate all form inputs before submission
|
|
- Add inline validation errors
|
|
- Prevent empty task/list creation
|
|
- Validate date formats
|
|
- Sanitize user inputs
|
|
- _Requirements: 1.1, 2.1_
|
|
|
|
- [x] 18. Optimize performance
|
|
- Add database indexes for frequently queried fields
|
|
- Implement pagination for large lists
|
|
- Optimize bundle size with code splitting
|
|
- Add loading states to prevent layout shift
|
|
- Use React.memo for expensive components
|
|
- _Requirements: All (performance is cross-cutting)_
|
|
|
|
- [x] 19. Final checkpoint - Ensure all tests pass
|
|
- Ensure all tests pass, ask the user if questions arise.
|
|
|
|
- [x] 19.5. Implement real-time list synchronization
|
|
- Create useRealtimeSync hook for polling server updates
|
|
- Add API endpoint to check last updated timestamp
|
|
- Integrate real-time sync into ListDetailView component
|
|
- Automatically refresh when other users make changes
|
|
- Poll every 3 seconds and on page visibility change
|
|
- _Requirements: Collaborative features (enhancement)_
|
|
|
|
- [ ] 20. End-to-end testing and polish
|
|
- Test complete user flows from list creation to task completion
|
|
- Verify PWA installation on iOS Safari
|
|
- Test offline functionality in real scenarios
|
|
- Check accessibility with screen readers
|
|
- Verify all requirements are met
|
|
- _Requirements: All_
|