Backup: 2025-06-07 19:48 - Script test
[Restore from backup: vip-coordinator-backup-2025-06-07-19-48-script-test]
This commit is contained in:
457
README.md
457
README.md
@@ -1,222 +1,282 @@
|
||||
# VIP Coordinator
|
||||
|
||||
A comprehensive web application for managing VIP logistics, driver assignments, and real-time tracking with Google OAuth authentication and role-based access control.
|
||||
A comprehensive VIP transportation coordination system built with React, Node.js, PostgreSQL, and Redis. This application provides real-time scheduling, driver management, and VIP coordination capabilities with enterprise-grade security and scalability.
|
||||
|
||||
## ✨ Features
|
||||
## 🚀 Quick Start with Docker
|
||||
|
||||
### 🔐 Authentication & User Management
|
||||
- **Google OAuth Integration**: Secure login with Google accounts
|
||||
- **Role-Based Access Control**: Administrator, Coordinator, and Driver roles
|
||||
- **User Approval System**: Admin approval required for new users
|
||||
- **JWT-Based Authentication**: Stateless, secure token system
|
||||
### Prerequisites
|
||||
|
||||
### 👥 VIP Management
|
||||
- **Complete VIP Profiles**: Name, organization, department, transport details
|
||||
- **Multi-Flight Support**: Handle complex itineraries with multiple flights
|
||||
- **Department Organization**: Office of Development and Admin departments
|
||||
- **Schedule Management**: Event scheduling with conflict detection
|
||||
- **Real-time Flight Tracking**: Automatic flight status updates
|
||||
- Docker and Docker Compose installed
|
||||
- Google OAuth credentials (for authentication)
|
||||
- Domain name or localhost for development
|
||||
|
||||
### 🚗 Driver Coordination
|
||||
- **Driver Management**: Create and manage driver profiles
|
||||
- **Availability Checking**: Real-time conflict detection
|
||||
- **Schedule Assignment**: Assign drivers to VIP events
|
||||
- **Department-Based Organization**: Organize drivers by department
|
||||
### 1. Pull the Images
|
||||
|
||||
### ✈️ Flight Integration
|
||||
- **Real-time Flight Data**: Integration with AviationStack API
|
||||
- **Automatic Tracking**: Scheduled flight status updates
|
||||
- **Multi-Flight Support**: Handle complex travel itineraries
|
||||
- **Flight Validation**: Verify flight numbers and dates
|
||||
```bash
|
||||
docker pull t72chevy/vip-coordinator:backend-latest
|
||||
docker pull t72chevy/vip-coordinator:frontend-latest
|
||||
```
|
||||
|
||||
### 📊 Advanced Features
|
||||
- **Interactive API Documentation**: Swagger UI with "Try it out" functionality
|
||||
- **Schedule Validation**: Prevent conflicts and overlapping assignments
|
||||
- **Comprehensive Logging**: Detailed system activity tracking
|
||||
- **Docker Containerization**: Easy deployment and development
|
||||
### 2. Create Environment File
|
||||
|
||||
Create a `.env` file in your project directory:
|
||||
|
||||
```env
|
||||
# Database Configuration
|
||||
POSTGRES_DB=vip_coordinator
|
||||
POSTGRES_USER=vip_user
|
||||
POSTGRES_PASSWORD=your_secure_password_here
|
||||
|
||||
# Backend Configuration
|
||||
DATABASE_URL=postgresql://vip_user:your_secure_password_here@postgres:5432/vip_coordinator
|
||||
NODE_ENV=production
|
||||
PORT=3000
|
||||
|
||||
# Frontend Configuration
|
||||
VITE_API_URL=http://localhost:3000
|
||||
VITE_FRONTEND_URL=http://localhost
|
||||
|
||||
# Google OAuth Configuration
|
||||
GOOGLE_CLIENT_ID=your_google_client_id_here
|
||||
GOOGLE_CLIENT_SECRET=your_google_client_secret_here
|
||||
|
||||
# Redis Configuration
|
||||
REDIS_URL=redis://redis:6379
|
||||
|
||||
# Security
|
||||
JWT_SECRET=auto-generated-on-startup
|
||||
```
|
||||
|
||||
### 3. Create Docker Compose File
|
||||
|
||||
Create a `docker-compose.yml` file:
|
||||
|
||||
```yaml
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:15-alpine
|
||||
environment:
|
||||
POSTGRES_DB: ${POSTGRES_DB}
|
||||
POSTGRES_USER: ${POSTGRES_USER}
|
||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
||||
volumes:
|
||||
- postgres_data:/var/lib/postgresql/data
|
||||
ports:
|
||||
- "5432:5432"
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
ports:
|
||||
- "6379:6379"
|
||||
healthcheck:
|
||||
test: ["CMD", "redis-cli", "ping"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
backend:
|
||||
image: t72chevy/vip-coordinator:backend-latest
|
||||
environment:
|
||||
- DATABASE_URL=${DATABASE_URL}
|
||||
- NODE_ENV=${NODE_ENV}
|
||||
- PORT=${PORT}
|
||||
- GOOGLE_CLIENT_ID=${GOOGLE_CLIENT_ID}
|
||||
- GOOGLE_CLIENT_SECRET=${GOOGLE_CLIENT_SECRET}
|
||||
- REDIS_URL=${REDIS_URL}
|
||||
- JWT_SECRET=${JWT_SECRET}
|
||||
ports:
|
||||
- "3000:3000"
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
|
||||
frontend:
|
||||
image: t72chevy/vip-coordinator:frontend-latest
|
||||
environment:
|
||||
- VITE_API_URL=${VITE_API_URL}
|
||||
- VITE_FRONTEND_URL=${VITE_FRONTEND_URL}
|
||||
ports:
|
||||
- "80:80"
|
||||
depends_on:
|
||||
backend:
|
||||
condition: service_healthy
|
||||
|
||||
volumes:
|
||||
postgres_data:
|
||||
```
|
||||
|
||||
### 4. Deploy the Application
|
||||
|
||||
```bash
|
||||
# Start all services
|
||||
docker-compose up -d
|
||||
|
||||
# Check service status
|
||||
docker-compose ps
|
||||
|
||||
# View logs
|
||||
docker-compose logs -f
|
||||
```
|
||||
|
||||
### 5. Access the Application
|
||||
|
||||
- **Frontend**: http://localhost
|
||||
- **Backend API**: http://localhost:3001
|
||||
- **Health Check**: http://localhost:3001/health
|
||||
|
||||
## 🔧 Configuration
|
||||
|
||||
### Google OAuth Setup
|
||||
|
||||
1. Go to the [Google Cloud Console](https://console.cloud.google.com/)
|
||||
2. Create a new project or select an existing one
|
||||
3. Enable the Google+ API
|
||||
4. Create OAuth 2.0 credentials
|
||||
5. Add your domain to authorized origins
|
||||
6. Add your callback URL: `http://your-domain/auth/google/callback`
|
||||
|
||||
### Environment Variables
|
||||
|
||||
| Variable | Description | Required | Default |
|
||||
|----------|-------------|----------|---------|
|
||||
| `POSTGRES_DB` | PostgreSQL database name | Yes | `vip_coordinator` |
|
||||
| `POSTGRES_USER` | PostgreSQL username | Yes | `vip_user` |
|
||||
| `POSTGRES_PASSWORD` | PostgreSQL password | Yes | - |
|
||||
| `DATABASE_URL` | Full database connection string | Yes | - |
|
||||
| `GOOGLE_CLIENT_ID` | Google OAuth client ID | Yes | - |
|
||||
| `GOOGLE_CLIENT_SECRET` | Google OAuth client secret | Yes | - |
|
||||
| `REDIS_URL` | Redis connection string | Yes | `redis://redis:6379` |
|
||||
| `NODE_ENV` | Node.js environment | No | `production` |
|
||||
| `PORT` | Backend server port | No | `3001` |
|
||||
| `VITE_API_URL` | Frontend API URL | Yes | - |
|
||||
| `VITE_FRONTEND_URL` | Frontend base URL | Yes | - |
|
||||
|
||||
## 🏗️ Architecture
|
||||
|
||||
### Backend
|
||||
- **Node.js + Express.js**: RESTful API server
|
||||
- **TypeScript**: Full type safety
|
||||
- **PostgreSQL**: Persistent data storage with automatic schema management
|
||||
- **Redis**: Caching and real-time updates
|
||||
- **JWT Authentication**: Secure, stateless authentication
|
||||
- **Google OAuth 2.0**: Simple, secure user authentication
|
||||
### Services
|
||||
|
||||
### Frontend
|
||||
- **React 18 + TypeScript**: Modern, type-safe frontend
|
||||
- **Vite**: Lightning-fast development server
|
||||
- **Tailwind CSS v4**: Modern utility-first styling
|
||||
- **React Router**: Client-side routing
|
||||
- **Frontend**: React application with Vite build system, served by Nginx
|
||||
- **Backend**: Node.js/Express API server with TypeScript
|
||||
- **Database**: PostgreSQL for persistent data storage
|
||||
- **Cache**: Redis for session management and real-time features
|
||||
|
||||
### Security Features
|
||||
|
||||
- **JWT Auto-Rotation**: Automatic JWT secret rotation for enhanced security
|
||||
- **Google OAuth**: Secure authentication via Google
|
||||
- **Non-Root Containers**: All containers run as non-root users
|
||||
- **Health Checks**: Comprehensive health monitoring
|
||||
- **Input Validation**: Robust input validation and sanitization
|
||||
|
||||
### Key Features
|
||||
|
||||
- **Real-time Scheduling**: Live updates for VIP schedules and assignments
|
||||
- **Driver Management**: Comprehensive driver tracking and assignment
|
||||
- **User Roles**: Admin and driver role-based access control
|
||||
- **Responsive Design**: Mobile-friendly interface
|
||||
- **Data Export**: Export capabilities for schedules and reports
|
||||
- **Audit Logging**: Comprehensive activity logging
|
||||
|
||||
## 🚀 Quick Start
|
||||
## 🔍 Monitoring & Troubleshooting
|
||||
|
||||
### Prerequisites
|
||||
- Docker and Docker Compose
|
||||
- Google Cloud Console account (for OAuth setup)
|
||||
### Health Checks
|
||||
|
||||
### 1. Start the Application
|
||||
```bash
|
||||
git clone <repository-url>
|
||||
cd vip-coordinator
|
||||
make dev
|
||||
```
|
||||
# Check all services
|
||||
docker-compose ps
|
||||
|
||||
**Services will be available at:**
|
||||
- 🌐 **Frontend**: http://localhost:5173
|
||||
- 🔌 **Backend API**: http://localhost:3000
|
||||
- 📚 **API Documentation**: http://localhost:3000/api-docs.html
|
||||
- 🏥 **Health Check**: http://localhost:3000/api/health
|
||||
|
||||
### 2. Configure Google OAuth
|
||||
See [SETUP_GUIDE.md](SETUP_GUIDE.md) for detailed OAuth setup instructions.
|
||||
|
||||
### 3. First Login
|
||||
- Visit http://localhost:5173
|
||||
- Click "Continue with Google"
|
||||
- First user becomes system administrator
|
||||
- Subsequent users need admin approval
|
||||
|
||||
## 📚 API Documentation
|
||||
|
||||
### Interactive Documentation
|
||||
Visit **http://localhost:3000/api-docs.html** for:
|
||||
- 📖 Complete API reference with examples
|
||||
- 🧪 "Try it out" functionality for testing endpoints
|
||||
- 📋 Request/response schemas and validation rules
|
||||
- 🔐 Authentication requirements for each endpoint
|
||||
|
||||
### Key API Categories
|
||||
- **🔐 Authentication**: `/auth/*` - OAuth, user management, role assignment
|
||||
- **👥 VIPs**: `/api/vips/*` - VIP profiles, scheduling, flight integration
|
||||
- **🚗 Drivers**: `/api/drivers/*` - Driver management, availability, conflicts
|
||||
- **✈️ Flights**: `/api/flights/*` - Flight tracking, real-time updates
|
||||
- **⚙️ Admin**: `/api/admin/*` - System settings, user approval
|
||||
|
||||
## 🛠️ Development
|
||||
|
||||
### Available Commands
|
||||
```bash
|
||||
# Start development environment
|
||||
make dev
|
||||
# Backend health
|
||||
curl http://localhost:3001/health
|
||||
|
||||
# View logs
|
||||
make logs
|
||||
|
||||
# Stop all services
|
||||
make down
|
||||
|
||||
# Rebuild containers
|
||||
make build
|
||||
|
||||
# Backend development
|
||||
cd backend && npm run dev
|
||||
|
||||
# Frontend development
|
||||
cd frontend && npm run dev
|
||||
docker-compose logs backend
|
||||
docker-compose logs frontend
|
||||
docker-compose logs postgres
|
||||
docker-compose logs redis
|
||||
```
|
||||
|
||||
### Project Structure
|
||||
```
|
||||
vip-coordinator/
|
||||
├── backend/ # Node.js API server
|
||||
│ ├── src/
|
||||
│ │ ├── routes/ # API route handlers
|
||||
│ │ ├── services/ # Business logic services
|
||||
│ │ ├── config/ # Configuration and auth
|
||||
│ │ └── index.ts # Main server file
|
||||
│ ├── package.json
|
||||
│ ├── tsconfig.json
|
||||
│ └── Dockerfile
|
||||
├── frontend/ # React frontend
|
||||
│ ├── src/
|
||||
│ │ ├── components/ # Reusable UI components
|
||||
│ │ ├── pages/ # Page components
|
||||
│ │ ├── config/ # API configuration
|
||||
│ │ ├── App.tsx # Main app component
|
||||
│ │ └── main.tsx # Entry point
|
||||
│ ├── package.json
|
||||
│ ├── vite.config.ts
|
||||
│ └── Dockerfile
|
||||
├── docker-compose.dev.yml # Development environment
|
||||
├── docker-compose.prod.yml # Production environment
|
||||
├── Makefile # Development commands
|
||||
├── SETUP_GUIDE.md # Detailed setup instructions
|
||||
└── README.md # This file
|
||||
### Common Issues
|
||||
|
||||
1. **Database Connection Issues**
|
||||
- Ensure PostgreSQL is healthy: `docker-compose logs postgres`
|
||||
- Verify DATABASE_URL format
|
||||
- Check password special characters (avoid `!` and other special chars)
|
||||
|
||||
2. **Google OAuth Issues**
|
||||
- Verify client ID and secret
|
||||
- Check authorized origins in Google Console
|
||||
- Ensure callback URL matches your domain
|
||||
|
||||
3. **Frontend Not Loading**
|
||||
- Check VITE_API_URL points to correct backend
|
||||
- Verify backend is healthy
|
||||
- Check browser console for errors
|
||||
|
||||
## 🚀 Production Deployment
|
||||
|
||||
### For Production Use
|
||||
|
||||
1. **Use HTTPS**: Configure SSL/TLS certificates
|
||||
2. **Secure Passwords**: Use strong, unique passwords
|
||||
3. **Environment Secrets**: Use Docker secrets or external secret management
|
||||
4. **Backup Strategy**: Implement regular database backups
|
||||
5. **Monitoring**: Set up application and infrastructure monitoring
|
||||
6. **Load Balancing**: Consider load balancers for high availability
|
||||
|
||||
### Example Production Environment
|
||||
|
||||
```env
|
||||
# Production environment example
|
||||
POSTGRES_PASSWORD=super_secure_random_password_here
|
||||
VITE_API_URL=https://api.yourdomain.com
|
||||
VITE_FRONTEND_URL=https://yourdomain.com
|
||||
NODE_ENV=production
|
||||
```
|
||||
|
||||
## 🔐 User Roles & Permissions
|
||||
## 📝 API Documentation
|
||||
|
||||
### Administrator
|
||||
- Full system access
|
||||
- User management and approval
|
||||
- System configuration
|
||||
- All VIP and driver operations
|
||||
### Authentication Endpoints
|
||||
|
||||
### Coordinator
|
||||
- VIP management (create, edit, delete)
|
||||
- Driver management
|
||||
- Schedule management
|
||||
- Flight tracking
|
||||
- `GET /auth/google` - Initiate Google OAuth
|
||||
- `GET /auth/google/callback` - OAuth callback
|
||||
- `POST /auth/logout` - Logout user
|
||||
- `GET /auth/me` - Get current user
|
||||
|
||||
### Driver
|
||||
- View assigned schedules
|
||||
- Update task status
|
||||
- Access driver dashboard
|
||||
### Core Endpoints
|
||||
|
||||
## 🌐 Deployment
|
||||
- `GET /api/vips` - List VIPs
|
||||
- `POST /api/vips` - Create VIP
|
||||
- `GET /api/drivers` - List drivers
|
||||
- `POST /api/drivers` - Create driver
|
||||
- `GET /api/schedules` - List schedules
|
||||
- `POST /api/schedules` - Create schedule
|
||||
|
||||
### Development
|
||||
```bash
|
||||
make dev
|
||||
```
|
||||
### Health & Status
|
||||
|
||||
### Production
|
||||
```bash
|
||||
# Build production images
|
||||
make build
|
||||
|
||||
# Deploy with production configuration
|
||||
docker-compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
### Environment Configuration
|
||||
See [SETUP_GUIDE.md](SETUP_GUIDE.md) for detailed environment variable configuration.
|
||||
|
||||
## 📋 Current Status
|
||||
|
||||
### ✅ Implemented Features
|
||||
- Google OAuth authentication with JWT
|
||||
- Role-based access control
|
||||
- User approval workflow
|
||||
- VIP management with multi-flight support
|
||||
- Driver management and scheduling
|
||||
- Real-time flight tracking
|
||||
- Schedule conflict detection
|
||||
- Interactive API documentation
|
||||
- Docker containerization
|
||||
- PostgreSQL data persistence
|
||||
|
||||
### 🚧 Planned Features
|
||||
- [ ] Real-time GPS tracking for drivers
|
||||
- [ ] Push notifications for schedule changes
|
||||
- [ ] Mobile driver application
|
||||
- [ ] Advanced reporting and analytics
|
||||
- [ ] Google Sheets integration
|
||||
- [ ] Multi-tenant support
|
||||
- [ ] Advanced mapping features
|
||||
- `GET /health` - Application health check
|
||||
- `GET /api/status` - Detailed system status
|
||||
|
||||
## 🤝 Contributing
|
||||
|
||||
1. Fork the repository
|
||||
2. Create a feature branch: `git checkout -b feature/amazing-feature`
|
||||
3. Make your changes and test thoroughly
|
||||
4. Commit your changes: `git commit -m 'Add amazing feature'`
|
||||
5. Push to the branch: `git push origin feature/amazing-feature`
|
||||
6. Submit a pull request
|
||||
2. Create a feature branch
|
||||
3. Make your changes
|
||||
4. Add tests if applicable
|
||||
5. Submit a pull request
|
||||
|
||||
## 📄 License
|
||||
|
||||
@@ -224,11 +284,28 @@ This project is licensed under the MIT License - see the LICENSE file for detail
|
||||
|
||||
## 🆘 Support
|
||||
|
||||
- 📖 **Documentation**: Check [SETUP_GUIDE.md](SETUP_GUIDE.md) for detailed setup
|
||||
- 🔧 **API Reference**: Visit http://localhost:3000/api-docs.html
|
||||
- 🐛 **Issues**: Report bugs and request features via GitHub issues
|
||||
- 💬 **Discussions**: Use GitHub discussions for questions and ideas
|
||||
For issues and questions:
|
||||
|
||||
1. Check the troubleshooting section above
|
||||
2. Review Docker Compose logs
|
||||
3. Create an issue on GitHub with:
|
||||
- Docker Compose version
|
||||
- Environment details
|
||||
- Error logs
|
||||
- Steps to reproduce
|
||||
|
||||
## 🔄 Updates
|
||||
|
||||
To update to the latest version:
|
||||
|
||||
```bash
|
||||
# Pull latest images
|
||||
docker-compose pull
|
||||
|
||||
# Restart services
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**VIP Coordinator** - Streamlining VIP logistics with modern web technology.
|
||||
**Built with ❤️ for efficient VIP transportation coordination**
|
||||
|
||||
Reference in New Issue
Block a user