Rezzy
TypeScript
Pull Request Merged
PR #64 merged: [1.4] User Profile Page
Summary
- Adds full user profile settings page with all fields from issue requirements
- Avatar upload with storage to public disk (ready for R2 in production)
- Username availability check with reserved words validation
- Bio with character counter, location, and privacy toggle
Changes
- UserProfileData DTO - Passes profile data to Inertia frontend
- UpdateUserProfile Action - Handles profile updates and avatar upload/removal
- ProfileController - Updated to use action, added avatar destroy and username check endpoints
- Profile Settings Page - Full form with avatar upload, bio (500 char limit with counter), location, privacy
- Textarea Component - New UI component for bio field
- Username Check - AJAX availability check on blur with reserved words (admin, rezzy, support, etc.)
Test plan
- User can view profile settings page
- User can update name, username, bio, location
- User can upload avatar (stored correctly)
- User can remove avatar
- Username uniqueness validated on blur
- Username format validated
- Privacy setting can be changed (public/private)
- Bio character limit enforced (500 chars)
- All 85 tests passing
Notes
- Avatar storage uses public disk in dev, will use S3/R2 in production when configured
- Mailpit changes from previous work also included in this branch
Closes #9
Stu Mason + AI [email protected]
+852
additions
-44
deletions
18
files changed