Some checks failed
CI/CD Pipeline / Backend Tests (push) Has been cancelled
CI/CD Pipeline / Frontend Tests (push) Has been cancelled
CI/CD Pipeline / Build Docker Images (push) Has been cancelled
CI/CD Pipeline / Security Scan (push) Has been cancelled
CI/CD Pipeline / Deploy to Staging (push) Has been cancelled
CI/CD Pipeline / Deploy to Production (push) Has been cancelled
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>
5.7 KiB
5.7 KiB
VIP Coordinator - Quick Start Guide
🚀 Get Started in 5 Minutes
Prerequisites
- Node.js 20+
- Docker Desktop
- Auth0 Account (free tier at https://auth0.com)
Step 1: Start Database
cd vip-coordinator
docker-compose up -d postgres
Step 2: Configure Auth0
-
Go to https://auth0.com and create a free account
-
Create a new Application (Single Page Application)
-
Create a new API
-
Note your credentials:
- Domain:
your-tenant.us.auth0.com - Client ID:
abc123... - Audience:
https://your-api-identifier
- Domain:
-
Configure callback URLs in Auth0 dashboard:
- Allowed Callback URLs:
http://localhost:5173/callback - Allowed Logout URLs:
http://localhost:5173 - Allowed Web Origins:
http://localhost:5173
- Allowed Callback URLs:
Step 3: Configure Backend
cd backend
# Edit .env file
# Replace these with your Auth0 credentials:
AUTH0_DOMAIN="your-tenant.us.auth0.com"
AUTH0_AUDIENCE="https://your-api-identifier"
AUTH0_ISSUER="https://your-tenant.us.auth0.com/"
# Install and setup
npm install
npx prisma generate
npx prisma migrate dev
npm run prisma:seed
Step 4: Configure Frontend
cd ../frontend
# Edit .env file
# Replace these with your Auth0 credentials:
VITE_AUTH0_DOMAIN="your-tenant.us.auth0.com"
VITE_AUTH0_CLIENT_ID="your-client-id"
VITE_AUTH0_AUDIENCE="https://your-api-identifier"
# Already installed during build
# npm install (only if not already done)
Step 5: Start Everything
# Terminal 1: Backend
cd backend
npm run start:dev
# Terminal 2: Frontend
cd frontend
npm run dev
Step 6: Access the App
Open your browser to: http://localhost:5173
- Click "Sign In with Auth0"
- Create an account or sign in
- First user becomes Administrator automatically!
- Explore the dashboard
🎯 What You Get
Backend API (http://localhost:3000/api/v1)
- ✅ Auth0 Authentication - Secure JWT-based auth
- ✅ User Management - Approval workflow for new users
- ✅ VIP Management - Complete CRUD with relationships
- ✅ Driver Management - Driver profiles and schedules
- ✅ Event Scheduling - Smart conflict detection
- ✅ Flight Tracking - Real-time flight status (AviationStack API)
- ✅ 40+ API Endpoints - Fully documented REST API
- ✅ Role-Based Access - Administrator, Coordinator, Driver
- ✅ Sample Data - Pre-loaded test data
Frontend (http://localhost:5173)
- ✅ Modern React UI - React 18 + TypeScript
- ✅ Tailwind CSS - Beautiful, responsive design
- ✅ Auth0 Integration - Seamless authentication
- ✅ TanStack Query - Smart data fetching and caching
- ✅ Dashboard - Overview with stats and recent activity
- ✅ VIP Management - List, view, create, edit VIPs
- ✅ Driver Management - Manage driver profiles
- ✅ Schedule View - See all events and assignments
- ✅ Protected Routes - Automatic authentication checks
📊 Sample Data
The database is seeded with:
- 2 Users: admin@example.com, coordinator@example.com
- 2 VIPs: Dr. Robert Johnson (flight), Ms. Sarah Williams (self-driving)
- 2 Drivers: John Smith, Jane Doe
- 3 Events: Airport pickup, welcome dinner, conference transport
🔑 User Roles
Administrator
- Full system access
- Can approve/deny new users
- Can manage all VIPs, drivers, events
Coordinator
- Can manage VIPs, drivers, events
- Cannot manage users
- Full scheduling access
Driver
- View assigned schedules
- Update event status
- Cannot create or delete
First user to register = Administrator (no manual setup needed!)
🧪 Testing the API
Health Check (Public)
curl http://localhost:3000/api/v1/health
Get Profile (Requires Auth0 Token)
# Get token from browser DevTools -> Application -> Local Storage -> auth0_token
curl http://localhost:3000/api/v1/auth/profile \
-H "Authorization: Bearer YOUR_TOKEN_HERE"
List VIPs
curl http://localhost:3000/api/v1/vips \
-H "Authorization: Bearer YOUR_TOKEN_HERE"
🐛 Troubleshooting
"Cannot connect to database"
# Check PostgreSQL is running
docker ps | grep postgres
# Should see: vip-postgres running on port 5433
"Auth0 redirect loop"
- Check your
.envfiles have correct Auth0 credentials - Verify callback URLs in Auth0 dashboard match
http://localhost:5173/callback - Clear browser cache and cookies
"Cannot find module"
# Backend
cd backend
npx prisma generate
npm run build
# Frontend
cd frontend
npm install
"Port already in use"
- Backend uses port 3000
- Frontend uses port 5173
- PostgreSQL uses port 5433
Close any processes using these ports.
📚 Next Steps
- Explore the Dashboard - See stats and recent activity
- Add a VIP - Try creating a new VIP profile
- Assign a Driver - Schedule an event with driver assignment
- Test Conflict Detection - Try double-booking a driver
- Approve Users - Have someone else sign up, then approve them as admin
- View API Docs - Check backend/README.md
🚢 Deploy to Production
See CLAUDE.md for Digital Ocean deployment instructions.
Ready to deploy:
- ✅ Docker Compose configuration
- ✅ Production environment variables
- ✅ Optimized builds
- ✅ Auth0 production setup guide
Need Help?
- Check CLAUDE.md for comprehensive documentation
- Check BUILD_STATUS.md for what's implemented
- Check backend/README.md for API docs
- Check frontend/README.md for frontend docs
Built with: NestJS, React, TypeScript, Prisma, PostgreSQL, Auth0, Tailwind CSS
Last Updated: January 25, 2026