Developer Portfolio for Duneamsk
Naming what the history contains is not something a visitor needs and reads badly on the author's own site. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .gitea/workflows | ||
| docs | ||
| nginx | ||
| packages | ||
| templates | ||
| .dockerignore | ||
| .gardenignore | ||
| .gitignore | ||
| .helmignore | ||
| biome.jsonc | ||
| bun.lock | ||
| Chart.yaml | ||
| Dockerfile | ||
| package.json | ||
| README.md | ||
| tsconfig.base.json | ||
| values.yaml | ||
Nile
Nile is a modern digital portfolio for Dunemask — the site at dunemask.net plus the templated résumé it publishes.
Layout
Bun workspaces (packages/*):
| Path | What |
|---|---|
packages/site |
@nile/site — the React/Vite site. vite build also prerenders every route |
packages/resume |
@nile/resume — the résumé template, its build and its publish step |
nginx/ |
nginx config for the runtime image |
templates/ |
Helm chart templates (Chart.yaml, values.yaml at root) |
docs/ |
seven agent docs — see below |
Docs
Written for agents, not for browsing. rendering.md is the mandatory one: conventions.md
and architecture.md both defer to it for anything in the render path.
| File | Read it before |
|---|---|
docs/rendering.md |
anything in the render path — prerender, hydration, the brand intro, serving, output-identity checks |
docs/architecture.md |
changing the workspace shape, routes, the build, or a reproducibility pin |
docs/conventions.md |
writing any component — Tailwind/Ark rules, the palette, biome, data-not-components |
docs/file-map.md |
looking for where something lives |
docs/glossary.md |
a term in the other docs that reads like a feature flag (delta, preflight, the sheet) |
docs/resume.md |
touching the résumé package from the site side; deep reference is packages/resume/docs/ |
docs/audit.md |
proposing a change that alters rendered output — the open decision queue lives there |
Commands
Run from the repo root; bun, not node.
bun install
bun run dev # vite dev server, port 5173
bun run build # one vite build; the prerender runs as a plugin inside it
bun run preview # vite preview, port 4173
bun run resume # build the résumé and publish it into the site's public/
bun run resume:build # résumé build only
bun run resume:check # slack / wrapped-bullet / misalignment measurements
Deploy
docker build . → multi-stage: oven/bun:1-alpine builds packages/site/dist,
nginx:alpine serves it. .gitea/workflows/pr-build.yml builds every PR;
deploy-edge.yml runs garden deploy nile --env usw-edge on master.