# VIP Coordinator Frontend

React 18 frontend with TypeScript, Tailwind CSS, Auth0, and TanStack Query.

## Quick Start

```bash
# Install dependencies
npm install

# Configure Auth0
# Edit .env with your Auth0 credentials

# Start development server
npm run dev
```

Frontend will be available at: **http://localhost:5173**

## Tech Stack

- **React** 18.2.0
- **TypeScript** 5.3+
- **Vite** 5.x (build tool)
- **Tailwind CSS** 3.4+ (styling)
- **Auth0 React SDK** (authentication)
- **TanStack Query** v5 (data fetching)
- **React Router** 6.x (routing)
- **Axios** (HTTP client)
- **Lucide React** (icons)

## Features

- ✅ Auth0 authentication with automatic token management
- ✅ Protected routes
- ✅ Role-based access control
- ✅ Modern, responsive UI with Tailwind CSS
- ✅ Automatic API token injection
- ✅ Real-time data with TanStack Query
- ✅ Dashboard with stats
- ✅ VIP management
- ✅ Driver management
- ✅ Schedule/event management
- ✅ Flight tracking
- ✅ User management (admin)

## Pages

- `/login` - Auth0 login page
- `/callback` - Auth0 callback handler
- `/dashboard` - Main dashboard with stats
- `/vips` - VIP list and management
- `/drivers` - Driver list and management
- `/events` - Schedule and event management
- `/flights` - Flight tracking
- `/users` - User management (admin only)

## Environment Variables

Create `.env` file:

```env
VITE_API_URL=http://localhost:3000/api/v1
VITE_AUTH0_DOMAIN=your-tenant.us.auth0.com
VITE_AUTH0_CLIENT_ID=your-client-id
VITE_AUTH0_AUDIENCE=https://your-api-identifier
```

## Development

```bash
npm run dev      # Start dev server
npm run build    # Build for production
npm run preview  # Preview production build
npm run lint     # Run ESLint
```

## Project Structure

```
src/
├── components/
│   ├── Layout.tsx          # Main layout with navigation
│   └── ProtectedRoute.tsx  # Route protection component
├── contexts/
│   └── AuthContext.tsx     # Auth context wrapper
├── lib/
│   ├── api.ts              # Axios client with interceptors
│   └── utils.ts            # Utility functions
├── pages/
│   ├── Login.tsx           # Login page
│   ├── Callback.tsx        # Auth callback
│   ├── Dashboard.tsx       # Main dashboard
│   ├── VIPList.tsx         # VIP management
│   ├── DriverList.tsx      # Driver management
│   ├── EventList.tsx       # Schedule management
│   ├── FlightList.tsx      # Flight tracking
│   └── UserList.tsx        # User management
├── types/
│   └── index.ts            # TypeScript interfaces
├── App.tsx                 # Root component
├── main.tsx                # Entry point
└── index.css               # Global styles
```

## Authentication Flow

1. User clicks "Sign In with Auth0" on login page
2. Redirected to Auth0 hosted login
3. After authentication, returned to `/callback`
4. Token stored in localStorage
5. Axios interceptor attaches token to all API requests
6. Protected routes check authentication status
7. User redirected to dashboard

## API Integration

The frontend communicates with the backend API at `http://localhost:3000/api/v1`.

All API calls use the Axios client in `lib/api.ts` which:
- Automatically adds JWT token to requests
- Handles errors globally
- Logs all requests in development

## Building for Production

```bash
npm run build
```

This creates optimized production files in `dist/` directory.

Deploy to:
- Digital Ocean App Platform
- Netlify
- Vercel
- Any static hosting service

## Notes

- First user to register becomes administrator automatically
- Subsequent users require admin approval
- All routes except `/login` and `/callback` require authentication
- Token refresh handled automatically by Auth0 SDK
