- vite assetsInlineLimit 0: fonts-work.css 42.8 KB -> 5.9 KB - Ghost posts fetched with limit=100&page=N instead of limit=all - 404 title uses site.name; drop the duplicate js-class script on /everything/ - deploy/compose.yml: LISTENBRAINZ_USER - HANDOFF and TODO: the site is live and the sources ran Audit findings 2, 6, 7, 18, 19, 21 (docs/audits/2026-11-11-audit.md). Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
portfolio-next
The next version of lucaswinther.info: a two-gate personal site (work / off the
clock), rendered by Astro with small React islands. Behaviour: docs/specs/001-site.md; content format:
docs/CONTENT-CONTRACT.md. The real content lives in the separate portfolio-next-content repo; this repo
holds only synthetic fixtures.
Run locally
Needs Bun 1.3.
bun install --frozen-lockfile
SOURCES_FIXTURES=fixtures/sources bun src/cli.ts build fixtures/content .tmp/site
bun src/cli.ts preview .tmp/site # http://localhost:4321/
SOURCES_FIXTURES uses canned Ghost/Trakt/Hardcover data, so nothing needs configuring. Check content with
bun src/cli.ts validate fixtures/content. Tests: bun test and bunx playwright test. The container:
docker build -t portfolio-next:local . && scripts/smoke-test.sh portfolio-next:local.
Deploying it for real: docs/DEPLOY.md (example compose and Ansible playbook in deploy/).
Working on this repo with an AI agent (or as a human)? Start with AGENTS.md.