Files
family-hub/MEDIUM_CHANGES_GUIDE.txt

226 lines
6.3 KiB
Plaintext

========================================
MEDIUM CHANGES - Implementation Guide
========================================
🎂 BIRTHDAY FIELDS + 👥 MULTIPLE USERS PER CHORE
This guide will walk you through adding:
1. Birthday field for users
2. Multiple user assignment for chores
3. Updated Settings UI
========================================
STEP 1: Run Database Migrations
========================================
⚠️ IMPORTANT: Back up your database first!
Copy: D:\Hosted\familyhub\backend\data\family_hub.db
To: D:\Hosted\familyhub\backend\data\family_hub_backup.db
Then run migrations:
cd D:\Hosted\familyhub
run_migrations.bat
What this does:
✅ Adds birthday column to users table
✅ Creates chore_assignments table for multi-user support
✅ Migrates existing chore assignments to new table
✅ Preserves all existing data
Expected output:
==================================================
MIGRATION: Add Birthday Field to Users
==================================================
✅ Birthday column added successfully!
==================================================
MIGRATION: Add Multiple Users Per Chore Support
==================================================
✅ chore_assignments table created!
✅ Migrated 12 existing chore assignments!
========================================
STEP 2: Make Lou an Admin
========================================
cd D:\Hosted\familyhub\backend
python make_lou_admin.py
Expected output:
✅ Lou is now an admin!
========================================
STEP 3: Update Frontend Settings Page
========================================
Replace the Settings file with birthday support:
From: D:\Hosted\familyhub\Settings_with_birthday.tsx
To: D:\Hosted\familyhub\frontend\src\pages\Settings.tsx
New Features in Settings:
✅ Birthday input field (date picker)
✅ Birthday displayed in user list (🎂 icon)
✅ Updated edit modal with birthday
✅ Profile picture URL input
========================================
STEP 4: Restart Services
========================================
Backend:
Stop current backend (Ctrl+C)
cd D:\Hosted\familyhub
restart_backend.bat
Frontend:
Stop current frontend (Ctrl+C)
cd D:\Hosted\familyhub\frontend
npm run dev
========================================
STEP 5: Test Birthday Feature
========================================
1. Login as jess
2. Go to Settings
3. Set your birthday (date picker)
4. Click "Save Changes"
5. Birthday should appear in your profile
Test Admin Features:
1. Scroll to "User Management"
2. Click "Edit" on any user
3. Modal opens with birthday field
4. Set birthdays for Lou, William, Xander, Bella
5. Save changes
6. Birthdays show with 🎂 icon in user list
========================================
WHAT'S CHANGED - Database Schema
========================================
USERS TABLE - NEW COLUMN:
birthday DATE NULL
CHORE_ASSIGNMENTS TABLE - NEW TABLE:
id INTEGER PRIMARY KEY
chore_id INTEGER (FK to chores)
user_id INTEGER (FK to users)
completed_at DATETIME NULL
created_at DATETIME
This enables:
- One chore → Many users
- Track who completed what
- Individual completion tracking
========================================
WHAT'S CHANGED - Backend API
========================================
User Schema Updates:
- UserBase: Added birthday field (Optional[date])
- UserUpdate: Added birthday field (Optional[date])
- UserResponse: Includes birthday in responses
Models Updated:
- User: Added birthday column + chore_assignments relationship
- Chore: Added assignments relationship
- ChoreAssignment: New model for many-to-many
========================================
WHAT'S CHANGED - Frontend UI
========================================
Settings Page:
✅ Birthday input field (type="date")
✅ Hint text: "Get a break from chores on your special day!"
✅ Birthday in user cards (formatted as locale date)
✅ Birthday in edit modal
✅ Profile picture URL input
✅ Scrollable edit modal for all fields
========================================
NEXT STEPS - Chore Assignment UI
========================================
The database now supports multiple users per chore!
Next, we need to:
1. Update Chores page to show multi-user assignment
2. Add UI to assign multiple users to a chore
3. Add birthday-based chore filtering
- Skip chores on user's birthday
- Option for birthday range (±3 days)
========================================
BIRTHDAY LOGIC - Implementation Plan
========================================
Option A: Exact Birthday Skip (Simple)
- Check if today == user.birthday
- Hide chores assigned to that user
Option B: Birthday Range Skip (Flexible)
- Check if today within (birthday - 1 day to birthday + 1 day)
- Configurable range in settings
Which would you prefer?
========================================
TROUBLESHOOTING
========================================
❌ Migration Failed?
- Check if database file is locked
- Make sure backend is stopped
- Restore from backup if needed
❌ Frontend Not Showing Birthday?
- Clear browser cache (Ctrl+Shift+R)
- Check browser console for errors
- Verify backend is running latest code
❌ Birthday Not Saving?
- Check backend logs
- Verify migration ran successfully
- Check database: sqlite3 family_hub.db "PRAGMA table_info(users);"
========================================
FILES MODIFIED/CREATED
========================================
Backend:
✅ backend/app/models/user.py - Added birthday field
✅ backend/app/models/chore.py - Added assignments relationship
✅ backend/app/models/chore_assignment.py - NEW model
✅ backend/app/models/__init__.py - Import ChoreAssignment
✅ backend/app/schemas/user.py - Added birthday to schemas
✅ backend/migrations/001_add_birthday_field.py - NEW migration
✅ backend/migrations/002_add_multi_user_chores.py - NEW migration
✅ backend/make_lou_admin.py - Make Lou admin script
Frontend:
✅ Settings_with_birthday.tsx - Updated Settings component
Scripts:
✅ run_migrations.bat - Migration runner
========================================
CURRENT STATUS
========================================
✅ Database schema updated
✅ Backend models updated
✅ Backend schemas updated
✅ Frontend UI updated
✅ Migrations created
⏳ Pending (Next Phase):
- Chore multi-user assignment UI
- Birthday-based chore filtering
- Chore edit functionality for admins
========================================