# Deployment Guide ## Prerequisites - Node.js 18+ and npm/yarn - Backend API running on configured port (default: 3000) ## Development ```bash cd frontend npm install npm run dev ``` The app will be available at `http://localhost:3001` ## Building for Production ```bash npm run build ``` This creates an optimized production build in the `dist/` directory. ## Environment Variables Create a `.env` file: ```env VITE_API_BASE_URL=http://localhost:3000 VITE_APP_NAME=DBIS Admin Console VITE_REAL_TIME_UPDATE_INTERVAL=5000 ``` For production, update `VITE_API_BASE_URL` to your production API URL. ## Production Deployment ### Option 1: Static Hosting (Recommended) The build output is static files that can be served by any web server: 1. Build the application: ```bash npm run build ``` 2. Deploy the `dist/` directory to: - **Nginx**: Copy `dist/` contents to `/var/www/html/` - **Apache**: Copy `dist/` contents to web root - **CDN**: Upload to S3/CloudFront, Azure Blob, etc. - **Vercel/Netlify**: Connect repository and deploy ### Option 2: Docker Create a `Dockerfile`: ```dockerfile FROM node:18-alpine AS builder WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . RUN npm run build FROM nginx:alpine COPY --from=builder /app/dist /usr/share/nginx/html COPY nginx.conf /etc/nginx/conf.d/default.conf EXPOSE 80 CMD ["nginx", "-g", "daemon off;"] ``` Build and run: ```bash docker build -t dbis-admin-console . docker run -p 80:80 dbis-admin-console ``` ### Option 3: Serve with Node.js Install `serve`: ```bash npm install -g serve ``` Serve the build: ```bash serve -s dist -l 3001 ``` ## Nginx Configuration Example `nginx.conf`: ```nginx server { listen 80; server_name admin.dbis.local; root /usr/share/nginx/html; index index.html; # Gzip compression gzip on; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; # Security headers add_header X-Frame-Options "SAMEORIGIN" always; add_header X-Content-Type-Options "nosniff" always; add_header X-XSS-Protection "1; mode=block" always; # SPA routing location / { try_files $uri $uri/ /index.html; } # API proxy (if needed) location /api { proxy_pass http://backend:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } # Cache static assets location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ { expires 1y; add_header Cache-Control "public, immutable"; } } ``` ## Environment-Specific Builds ### Development ```bash npm run dev ``` ### Staging ```bash VITE_API_BASE_URL=https://staging-api.dbis.local npm run build ``` ### Production ```bash VITE_API_BASE_URL=https://api.dbis.local npm run build ``` ## Health Checks The application includes error boundaries and error handling. Monitor: - API connectivity - Authentication token validity - Error rates in console/logs ## Performance Optimization - Code splitting is enabled - Assets are minified and optimized - Lazy loading ready for routes - Efficient data polling (10-15s intervals) ## Security Considerations - JWT tokens stored in localStorage (consider httpOnly cookies for production) - CORS configured on backend - XSS protection via React - CSRF protection via token validation - Security headers in nginx config ## Monitoring Recommended monitoring: - Error tracking (Sentry, LogRocket) - Performance monitoring (Web Vitals) - API response times - User session tracking ## Troubleshooting ### Build fails - Check Node.js version (18+) - Clear `node_modules` and reinstall - Check for TypeScript errors ### API connection issues - Verify `VITE_API_BASE_URL` is correct - Check CORS settings on backend - Verify network connectivity ### Authentication issues - Check token expiration - Verify backend auth endpoints - Check browser console for errors