# WebGPU Portfolio [![Build & Deploy](https://git.djosen.one/djoser/webgpu-portfolio/actions/workflows/deploy.yml/badge.svg?branch=master)](https://git.djosen.one/djoser/webgpu-portfolio/actions) Generative-art portfolio site. WebGPU canvas background, DOM overlay UI. ## Dev ```bash npm install npm run dev # vite dev server (opens browser) npm run typecheck # tsc --noEmit npm run build # typecheck + vite build → dist/ npm run preview # serve built dist/ ``` ## Docker ```bash # Build docker build -t webgpu-portfolio . # Run (foreground) docker run --rm -p 8080:80 webgpu-portfolio # Run (detached) docker run -d -p 8080:80 --name portfolio webgpu-portfolio # Compose docker compose up -d ``` Site at `http://localhost:8080`. ### Smoke test ```bash docker run -d -p 8080:80 --name portfolio-test webgpu-portfolio curl -sSf http://localhost:8080/ > /dev/null && echo "OK" curl -sSf http://localhost:8080/assets/ | head -1 # should 200 (hashed JS) docker stop portfolio-test ``` ### Image size ~6 MB (nginx:alpine-slim + static dist). Multi-stage build — Node build layer is discarded.