======================================== CHORE SYSTEM UPGRADE - Complete Guide ======================================== This upgrade adds: ✅ Multiple users per chore ✅ Birthday-based chore filtering ✅ Admin chore editing ✅ Points system display ✅ Improved chore assignment workflow ======================================== STEP 1: Run Database Migrations (if not done) ======================================== cd D:\Hosted\familyhub run_migrations.bat This creates the chore_assignments table. ======================================== STEP 2: Update Backend Files ======================================== The following backend files have been updated: 1. backend/app/schemas/chore.py - Added assigned_user_ids for multiple users - Added assigned_users list in response - Added points field 2. backend/app/api/v1/chores.py - Multi-user assignment support - Birthday filtering (exclude_birthdays parameter) - Admin-only editing for full chore details - Non-admins can only update status - Completion tracking per user - GET /api/v1/chores?user_id=X&exclude_birthdays=true - POST /api/v1/chores/{id}/assign - Assign multiple users ======================================== STEP 3: Update Frontend Files ======================================== The following files need to be updated: 📁 frontend/src/api/chores.ts ✅ Already updated in familyhub directory 📁 frontend/src/components/ChoreCard.tsx 📄 New version: ChoreCard_updated.tsx - Shows multiple assigned users - Shows points value - Birthday indicator (🎂) - Completion status per user - Admin edit button 📁 frontend/src/components/CreateChoreModal.tsx 📄 New version: CreateChoreModal_updated.tsx - Multi-select user assignment - Points input field - Improved validation 📁 frontend/src/components/EditChoreModal.tsx 📄 NEW COMPONENT - Admin-only chore editing - Update all chore fields - Reassign users - Change points 📁 frontend/src/pages/Dashboard.tsx 📄 New version: Dashboard_updated.tsx - Birthday filter toggle - User filter dropdown - Points display in stats - Edit button for admins ======================================== STEP 4: Copy Updated Files ======================================== Copy the following files to replace originals: From: D:\Hosted\familyhub\ChoreCard_updated.tsx To: D:\Hosted\familyhub\frontend\src\components\ChoreCard.tsx From: D:\Hosted\familyhub\CreateChoreModal_updated.tsx To: D:\Hosted\familyhub\frontend\src\components\CreateChoreModal.tsx From: D:\Hosted\familyhub\EditChoreModal.tsx To: D:\Hosted\familyhub\frontend\src\components\EditChoreModal.tsx From: D:\Hosted\familyhub\Dashboard_updated.tsx To: D:\Hosted\familyhub\frontend\src\pages\Dashboard.tsx ======================================== STEP 5: Restart Services ======================================== Backend: cd D:\Hosted\familyhub restart_backend.bat Frontend: cd D:\Hosted\familyhub\frontend npm run dev ======================================== NEW FEATURES GUIDE ======================================== 🎂 BIRTHDAY FILTERING -------------------- - Chores automatically hidden for users with birthdays today - Toggle "Hide Birthday Chores" on Dashboard - API: GET /api/v1/chores?exclude_birthdays=true 👥 MULTIPLE USER ASSIGNMENT --------------------------- - Assign one chore to multiple users - Each user can complete independently - Shows completion status per user - Create chore: Select multiple users with checkboxes ✏️ ADMIN CHORE EDITING ---------------------- - Admins see "Edit" button on chore cards - Update title, description, room, frequency - Change points value - Reassign users - Non-admins can only mark complete/skip ⭐ POINTS SYSTEM --------------- - Each chore has a points value - Displayed on chore cards - Dashboard shows total available points - Track who earned what points 🎯 USER FILTERING ---------------- - Filter chores by assigned user - Dropdown on Dashboard - See only chores assigned to specific person ======================================== API ENDPOINTS (Updated) ======================================== GET /api/v1/chores Query params: - user_id (int): Filter by assigned user - exclude_birthdays (bool): Skip birthday users POST /api/v1/chores Body: { "title": "Clean kitchen", "room": "Kitchen", "frequency": "daily", "points": 10, "assigned_user_ids": [1, 2, 3] // Multiple users! } PUT /api/v1/chores/{id} Body (Admin): { "title": "Updated title", "assigned_user_ids": [2, 3] // Reassign "points": 15 } Body (Non-admin): { "status": "completed" // Only this field allowed } POST /api/v1/chores/{id}/assign Body: [1, 2, 3] // Array of user IDs Replaces current assignments ======================================== TESTING CHECKLIST ======================================== ✅ Create chore with multiple users ✅ View chore showing all assigned users ✅ Complete chore as one user (others still pending) ✅ Edit chore as admin ✅ Try to edit chore as non-admin (should fail except status) ✅ Filter by user ✅ Toggle birthday filter ✅ Set someone's birthday to today, verify chores hidden ✅ View points on chore cards ✅ Check Dashboard stats show correct counts ======================================== TROUBLESHOOTING ======================================== ❌ "assigned_user_ids" field error - Make sure backend migrations ran - Restart backend after updating schemas ❌ Chores not showing assigned users - Check browser console for errors - Verify API returns assigned_users array - Clear cache (Ctrl+Shift+R) ❌ Birthday filter not working - Verify user has birthday set in Settings - Check birthday is set to today's date - Backend must be restarted after migration ❌ Edit button not showing - Only admins see edit button - Make sure user is admin (check Settings) - Frontend must be reloaded ======================================== DATABASE SCHEMA (Reference) ======================================== USERS TABLE: - Added: birthday (DATE NULL) CHORES TABLE: - Existing: id, title, description, room, frequency, points, status, due_date, completed_at - Note: assigned_user_id is deprecated (kept for compatibility) CHORE_ASSIGNMENTS TABLE (NEW): id INTEGER PRIMARY KEY chore_id INTEGER FK -> chores.id user_id INTEGER FK -> users.id completed_at DATETIME NULL created_at DATETIME Relationships: - One chore → Many assignments - One user → Many assignments - Assignment tracks individual completion ======================================== NEXT STEPS (Optional Future Enhancements) ======================================== Future features we can add: - 📊 Points leaderboard - 🏆 Badges and achievements - 📧 Email/Discord notifications - 📱 Home Assistant integration - 🔄 Recurring chore auto-creation - 📈 Completion history charts - 💰 Reward redemption system ========================================