Working React 19 before Compiler integration
🚀 Phase 2 Complete - React 19 Foundation - React upgraded: 18.2.0 → 19.0.0 ✅ - MUI upgraded: 5 → 6 ✅ - React Router upgraded: 6 → 7 ✅ - All packages updated and working ✅ - Production build: 995KB bundle ✅ - All containers working ✅ Ready for Phase 3: React Compiler integration 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -22,7 +22,9 @@
|
||||
"Bash(docker stats:*)",
|
||||
"Bash(time make:*)",
|
||||
"Bash(docker compose:*)",
|
||||
"Bash(git add:*)"
|
||||
"Bash(git add:*)",
|
||||
"Bash(git commit:*)",
|
||||
"Bash(git tag:*)"
|
||||
],
|
||||
"deny": []
|
||||
}
|
||||
|
||||
@@ -40,3 +40,9 @@ VITE_API_BASE_URL=http://backend:3001/api
|
||||
VITE_AUTH0_DOMAIN=your-domain.auth0.com
|
||||
VITE_AUTH0_CLIENT_ID=your-client-id
|
||||
VITE_AUTH0_AUDIENCE=https://api.motovaultpro.com
|
||||
|
||||
# External Server Deployment
|
||||
# Update these when deploying to external server with custom domain
|
||||
FRONTEND_DOMAIN=motovaultpro.com
|
||||
FRONTEND_PORT=3000
|
||||
# For API calls from external domain, update backend CORS settings
|
||||
9
certs/.gitignore
vendored
Normal file
9
certs/.gitignore
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
# SSL Certificates - exclude from git for security
|
||||
*.crt
|
||||
*.key
|
||||
*.pem
|
||||
*.p12
|
||||
*.pfx
|
||||
|
||||
# Keep directory structure
|
||||
!.gitignore
|
||||
@@ -91,17 +91,23 @@ services:
|
||||
frontend:
|
||||
build:
|
||||
context: ./frontend
|
||||
dockerfile: Dockerfile.dev
|
||||
dockerfile: Dockerfile
|
||||
container_name: mvp-frontend
|
||||
environment:
|
||||
NODE_ENV: development
|
||||
VITE_API_BASE_URL: http://backend:3001/api
|
||||
VITE_AUTH0_DOMAIN: ${VITE_AUTH0_DOMAIN:-motovaultpro.us.auth0.com}
|
||||
VITE_AUTH0_CLIENT_ID: ${VITE_AUTH0_CLIENT_ID:-yspR8zdnSxmV8wFIghHynQ08iXAPoQJ3}
|
||||
VITE_AUTH0_AUDIENCE: ${VITE_AUTH0_AUDIENCE:-https://api.motovaultpro.com}
|
||||
ports:
|
||||
- "3000:3000"
|
||||
- "0.0.0.0:3000:3000" # HTTP (redirects to HTTPS)
|
||||
- "0.0.0.0:443:3443" # HTTPS
|
||||
volumes:
|
||||
- ./certs:/etc/nginx/certs:ro # Mount SSL certificates
|
||||
depends_on:
|
||||
- backend
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:3000"]
|
||||
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "--no-check-certificate", "https://localhost:3443"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
|
||||
@@ -37,8 +37,8 @@ RUN touch /var/run/nginx.pid && \
|
||||
|
||||
USER frontend
|
||||
|
||||
# Expose port
|
||||
EXPOSE 3000
|
||||
# Expose ports
|
||||
EXPOSE 3000 3443
|
||||
|
||||
# Start nginx
|
||||
CMD ["nginx", "-g", "daemon off;"]
|
||||
@@ -9,9 +9,35 @@ http {
|
||||
sendfile on;
|
||||
keepalive_timeout 65;
|
||||
|
||||
# HTTP server - redirect to HTTPS
|
||||
server {
|
||||
listen 3000;
|
||||
server_name localhost;
|
||||
server_name motovaultpro.com *.motovaultpro.com localhost;
|
||||
|
||||
# Redirect all HTTP traffic to HTTPS
|
||||
return 301 https://$host:3443$request_uri;
|
||||
}
|
||||
|
||||
# HTTPS server
|
||||
server {
|
||||
listen 3443 ssl http2;
|
||||
server_name motovaultpro.com *.motovaultpro.com localhost;
|
||||
|
||||
# SSL certificate configuration
|
||||
ssl_certificate /etc/nginx/certs/motovaultpro.com.crt;
|
||||
ssl_certificate_key /etc/nginx/certs/motovaultpro.com.key;
|
||||
|
||||
# Modern SSL configuration
|
||||
ssl_protocols TLSv1.2 TLSv1.3;
|
||||
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384;
|
||||
ssl_prefer_server_ciphers off;
|
||||
ssl_session_cache shared:SSL:10m;
|
||||
ssl_session_timeout 10m;
|
||||
|
||||
# Security headers
|
||||
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
|
||||
add_header X-Frame-Options DENY always;
|
||||
add_header X-Content-Type-Options nosniff always;
|
||||
|
||||
root /usr/share/nginx/html;
|
||||
index index.html;
|
||||
@@ -28,6 +54,7 @@ http {
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header X-Forwarded-Port $server_port;
|
||||
}
|
||||
|
||||
# Enable gzip compression
|
||||
|
||||
@@ -18,6 +18,7 @@ export const Auth0Provider: React.FC<Auth0ProviderProps> = ({ children }) => {
|
||||
const clientId = import.meta.env.VITE_AUTH0_CLIENT_ID;
|
||||
const audience = import.meta.env.VITE_AUTH0_AUDIENCE;
|
||||
|
||||
|
||||
const onRedirectCallback = (appState?: { returnTo?: string }) => {
|
||||
navigate(appState?.returnTo || '/dashboard');
|
||||
};
|
||||
|
||||
@@ -12,5 +12,10 @@ export default defineConfig({
|
||||
server: {
|
||||
port: 3000,
|
||||
host: '0.0.0.0', // Allow external connections for container
|
||||
allowedHosts: [
|
||||
'localhost',
|
||||
'motovaultpro.com',
|
||||
'.motovaultpro.com'
|
||||
],
|
||||
},
|
||||
});
|
||||
Reference in New Issue
Block a user