Build process
The client is built with Vue CLI (Webpack) and served as static files via Nginx.dist/ — ~40 CSS chunks + ~44 JS chunks with content hashing for cache busting.
Docker
File:Dockerfile
Multi-stage build:
Nginx configurations
Six environment-specific Nginx configs:Common Nginx settings
All configs share:worker_connections: 1024sendfile: onkeepalive_timeout: 65resolver: 127.0.0.11(Docker DNS)- SPA routing:
try_files $uri $uri/ /index.html
API proxy (staging/testing/dev)
In non-production environments, Nginx proxies/api requests to the backend:
In production, the API lives on the same domain (
tutorbloc.com/api) but is handled by a separate server/load balancer, not the client Nginx. The production Nginx config has no proxy rules.SSL certificates
Let’s Encrypt certificates at:-initialise configs are used during first deployment to serve the ACME challenge before SSL is set up.