Migrate Vite SPA to Hugo (hugo-coder, dark) with WebGPU background

- Hugo static site at root: config, content (home/about/resume/blog + 5 projects),
  data/resume.yaml, custom layouts (gpu background, resume renderer, projects list),
  dark theme with canvas behind content
- gpu-bg/: extracted WebGPU/WebGL2 spiral engine as a Vite sub-package; slim bootstrap
  drops router/overlay/text renderer; fixed uniforms (scene0/dim0); self-contained engine.js
- archive/: retired Vite SPA preserved (router, overlay, data, engine/text orphaned)
- 3-stage Dockerfile (node -> hugo extended/dart-sass -> nginx), static nginx config
- DEPLOYMENT.md handover + README rewrite; pre-hugo rollback tag
This commit is contained in:
2026-08-21 03:39:42 +02:00
parent 3ad5cf55e3
commit 9ea85db5ce
74 changed files with 3170 additions and 75 deletions

View File

@@ -5,26 +5,26 @@ server {
root /usr/share/nginx/html;
index index.html;
# Security headers
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "DENY" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
# Enable compression
gzip on;
gzip_types text/css application/javascript text/javascript application/wasm image/svg+xml;
gzip_min_length 512;
# Immutable cache for hashed assets
location /assets/ {
expires 1y;
add_header Cache-Control "public, immutable";
}
# fingerprint-hashed Hugo assets (css/js) and the engine bundle: immutable
location /css/ { expires 1y; add_header Cache-Control "public, immutable"; }
location /js/ { expires 1y; add_header Cache-Control "public, immutable"; }
location /gpu/ { expires 1y; add_header Cache-Control "public, immutable"; }
# Everything else → index.html (SPA fallback)
# static fonts/favicons
location /fonts/ { expires 1y; add_header Cache-Control "public, immutable"; }
# everything else: plain static — real files, 404 is legitimate (no SPA fallback)
location / {
try_files $uri $uri/ /index.html;
try_files $uri $uri/ =404;
expires -1;
add_header Cache-Control "no-cache";
}
}
}