## Signal Messaging Integration
- Added SignalService for sending messages to drivers via Signal
- SignalMessage model for tracking message history
- Driver chat modal for real-time messaging
- Send schedule via Signal (ICS + PDF attachments)
## AI Copilot
- Natural language interface for VIP Coordinator
- Capabilities: create VIPs, schedule events, assign drivers
- Help and guidance for users
- Floating copilot button in UI
## Theme System
- Dark/light/system theme support
- Color scheme selection (blue, green, purple, orange, red)
- ThemeContext for global state
- AppearanceMenu in header
## PDF Schedule Export
- VIPSchedulePDF component for schedule generation
- PDF settings (header, footer, branding)
- Preview PDF in browser
- Settings stored in database
## Database Migrations
- add_signal_messages: SignalMessage model
- add_pdf_settings: Settings model for PDF config
- add_reminder_tracking: lastReminderSent for events
- make_driver_phone_optional: phone field nullable
## Event Management
- Event status service for automated updates
- IN_PROGRESS/COMPLETED status tracking
- Reminder tracking for notifications
## UI/UX Improvements
- Driver schedule modal
- Improved My Schedule page
- Better error handling and loading states
- Responsive design improvements
## Other Changes
- AGENT_TEAM.md documentation
- Seed data improvements
- Ability factory updates
- Driver profile page
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit implements comprehensive driver schedule self-service functionality,
allowing drivers to access their own schedules without requiring administrator
permissions, along with full schedule support for multi-day views.
Backend Changes:
- Added /drivers/me/* endpoints for driver self-service operations:
- GET /drivers/me - Get authenticated driver's profile
- GET /drivers/me/schedule/ics - Export driver's own schedule as ICS
- GET /drivers/me/schedule/pdf - Export driver's own schedule as PDF
- POST /drivers/me/send-schedule - Send schedule to driver via Signal
- PATCH /drivers/me - Update driver's own profile
- Added fullSchedule parameter support to schedule export service:
- Defaults to true (full upcoming schedule)
- Pass fullSchedule=false for single-day view
- Applied to ICS, PDF, and Signal message generation
- Fixed route ordering in drivers.controller.ts:
- Static routes (send-all-schedules) now come before :id routes
- Prevents path matching issues
- TypeScript improvements in copilot.service.ts:
- Fixed type errors with proper null handling
- Added explicit return types
Frontend Changes:
- Created MySchedule page with simplified driver-focused UI:
- Preview PDF button - Opens schedule PDF in new browser tab
- Send to Signal button - Sends schedule directly to driver's phone
- Uses /drivers/me/* endpoints to avoid permission issues
- No longer requires driver ID parameter
- Resolved "Forbidden Resource" errors for driver role users:
- Replaced /drivers/:id endpoints with /drivers/me endpoints
- Drivers can now access their own data without admin permissions
Key Features:
1. Full Schedule by Default - Drivers see all upcoming events, not just today
2. Self-Service Access - Drivers manage their own schedules independently
3. PDF Preview - Quick browser-based preview without downloading
4. Signal Integration - Direct schedule delivery to mobile devices
5. Role-Based Security - Proper CASL permissions for driver self-access
This resolves the driver schedule access issue and provides a streamlined
experience for drivers to view and share their schedules.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Comprehensive documentation of production deployment to Digital Ocean
- Includes all configuration details, environment variables, and troubleshooting
- Documents all issues encountered and their resolutions
- Provides quick reference for future deployments
Production site: https://vip.madeamess.online
App ID: 5804ff4f-df62-40f4-bdb3-a6818fd5aab2
Cost: $17/month (fully managed)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Changed global prefix to use 'v1' in production instead of 'api/v1'
- App Platform ingress routes /api to backend, so backend only needs /v1 prefix
- Maintains backward compatibility: dev uses /api/v1, prod uses /v1
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Create App Platform deployment spec (.do/app.yaml)
- Add comprehensive APP_PLATFORM_DEPLOYMENT.md guide
- Configure Docker Hub as container registry
- Set up managed PostgreSQL database
- Configure auto-SSL and custom domain support
- Total cost: ~$17/month (vs $24+ for droplets)
Images available on Docker Hub:
- t72chevy/vip-coordinator-backend:latest
- t72chevy/vip-coordinator-frontend:latest
Images also available on Gitea:
- gitea.madeamess.online/kyle/vip-coordinator/backend:latest
- gitea.madeamess.online/kyle/vip-coordinator/frontend:latest
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Remove hardcoded test@test.com auto-approval
- Count approved users instead of total users
- Only first user gets auto-approved as ADMINISTRATOR
- Subsequent users default to DRIVER role and require approval
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Removed from repository but kept locally for development:
- .github/workflows/ - GitHub Actions (Gitea uses .gitea/workflows/)
- frontend/e2e/ - Playwright E2E tests (development only)
Added to .gitignore:
- .github/ - GitHub-specific CI/CD (not used on Gitea)
- frontend/e2e/ - E2E tests kept locally for testing
- **/playwright-report/ - Test result reports
- **/test-results/ - Test artifacts
These files remain on local machine for development/testing
but are excluded from repository to reduce clutter.
Note: Gitea uses .gitea/workflows/ for CI, not .github/workflows/
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Removed files only needed for Claude AI development workflow:
- CLAUDE.md - AI context documentation (not needed to run app)
- .claude/settings.local.json - Claude Code CLI settings
Added to .gitignore:
- .claude/ - Claude Code CLI configuration directory
- CLAUDE.md - AI context file
These files are kept locally for development but excluded from repository.
Application does not require these files to function.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Removed old/unused configuration files:
- .env (root) - Old Google OAuth production credentials (not used)
- .env.example (root) - Old Google OAuth template (replaced by Auth0)
- docker-compose.dev.yml - Old Keycloak setup (replaced by Auth0)
- Makefile - Unused build automation
Improved environment configuration:
- Created frontend/.env.example - Auth0 template for frontend
- Updated backend/.env.example:
- Fixed port numbers (5433 for postgres, 6380 for redis)
- Added clearer Auth0 setup instructions
- Matches docker-compose.yml port configuration
Current setup:
- docker-compose.yml - PostgreSQL & Redis services (in use)
- backend/.env - Auth0 credentials (in use, not committed)
- frontend/.env - Auth0 credentials (in use, not committed)
- *.env.example files - Templates for new developers
All old Google OAuth and Keycloak references removed.
Application now runs on Auth0 only.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Removed 5 obsolete documentation files from June-July 2025:
- DEPLOYMENT.md - Referenced Google OAuth (we now use Auth0)
- SETUP_GUIDE.md - Referenced Google OAuth and Express (we use NestJS)
- TESTING.md - Referenced Jest/Vitest (we now use Playwright)
- TESTING_QUICKSTART.md - Same as above
- TESTING_SETUP_SUMMARY.md - Old testing infrastructure summary
Current documentation is maintained in:
- README.md (comprehensive guide)
- CLAUDE.md (project overview)
- frontend/PLAYWRIGHT_GUIDE.md (current testing guide)
- QUICKSTART.md (current setup guide)
- And 4 recent production docs from Jan 24, 2026
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Updated README.md from 312 to 640 lines with current, accurate documentation:
Major Updates:
- Current technology stack (NestJS 11, React 19, Prisma 7.3, PostgreSQL 16)
- Auth0 authentication documentation (replaced generic OAuth)
- Unified Activity System explanation (single ScheduleEvent model)
- Multi-VIP support with ridesharing capabilities
- Search & filtering features across 8 fields
- Sortable columns documentation
- Complete API endpoint reference (/api/v1/*)
- Database schema in TypeScript format
- Playwright testing guide
- Common issues & troubleshooting
- Production deployment checklist
- BSA Jamboree-specific context
New Sections Added:
- Comprehensive feature list with role-based permissions
- Accurate setup instructions with correct ports
- Environment variable configuration
- Database migration guide
- Troubleshooting with specific error messages and fixes
- Development workflow documentation
- Changelog documenting v2.0.0 breaking changes
This brings the README in sync with the unified activity system overhaul.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Complete rewrite from Express to NestJS with enterprise-grade features:
## Backend Improvements
- Migrated from Express to NestJS 11.0.1 with TypeScript
- Implemented Prisma ORM 7.3.0 for type-safe database access
- Added CASL authorization system replacing role-based guards
- Created global exception filters with structured logging
- Implemented Auth0 JWT authentication with Passport.js
- Added vehicle management with conflict detection
- Enhanced event scheduling with driver/vehicle assignment
- Comprehensive error handling and logging
## Frontend Improvements
- Upgraded to React 19.2.0 with Vite 7.2.4
- Implemented CASL-based permission system
- Added AbilityContext for declarative permissions
- Created ErrorHandler utility for consistent error messages
- Enhanced API client with request/response logging
- Added War Room (Command Center) dashboard
- Created VIP Schedule view with complete itineraries
- Implemented Vehicle Management UI
- Added mock data generators for testing (288 events across 20 VIPs)
## New Features
- Vehicle fleet management (types, capacity, status tracking)
- Complete 3-day Jamboree schedule generation
- Individual VIP schedule pages with PDF export (planned)
- Real-time War Room dashboard with auto-refresh
- Permission-based navigation filtering
- First user auto-approval as administrator
## Documentation
- Created CASL_AUTHORIZATION.md (comprehensive guide)
- Created ERROR_HANDLING.md (error handling patterns)
- Updated CLAUDE.md with new architecture
- Added migration guides and best practices
## Technical Debt Resolved
- Removed custom authentication in favor of Auth0
- Replaced role checks with CASL abilities
- Standardized error responses across API
- Implemented proper TypeScript typing
- Added comprehensive logging
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
[Restore from backup: vip-coordinator-backup-2025-06-07-23-28-pushed to docker hub ready for testing on digigal ocean - No changes from previous backup]