7d125fe7d4db8f4dab0ef1891647d493a3a3a820
All checks were successful
ci/woodpecker/push/web Pipeline was successful
The importMap.js was an empty stub, causing all Lexical richText fields (bio, post body, etc.) to silently not render in the admin UI. Reverts the unnecessary collapsible wrapper on About bio. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
jasonwoltje.com — Professional Website
Personal brand + portfolio site for Jason Woltje. Payload CMS 3 on Next.js 16, Postgres 17, deployed to Docker Swarm (w-docker0) behind Traefik.
Stack
| Layer | Choice |
|---|---|
| Framework | Next.js 16 (App Router) |
| CMS | Payload 3 (Next-integrated, admin at /admin) |
| DB | PostgreSQL 17 |
| Styling | Tailwind v3 (ported from stitch design tokens) |
| Fonts | Space Grotesk (display/labels) + Inter (body), self-hosted via next/font |
| Media | Local volume (migratable to S3/MinIO via Payload adapter) |
| Analytics | Umami (self-hosted) |
| CAPTCHA | Cloudflare Turnstile |
| Registry | git.mosaicstack.dev container packages (immutable sha-* tags) |
| CI | Woodpecker CI + Kaniko |
| Deploy | Portainer stack on w-docker0 (Swarm) |
| Ingress | Edge Traefik (TLS) → per-swarm Traefik (entrypoints=web) |
Repository layout
professional-website/
├── src/ # Next.js app + Payload config
├── public/ # static assets
├── design-samples/ # stitch design reference (HTML + DESIGN.md)
├── images/ # source headshots (pre-upload originals)
├── docs/
│ ├── PRD.md # product requirements
│ ├── TASKS.md # execution tracking
│ └── scratchpads/ # per-task working notes
├── Dockerfile # multi-stage build
├── docker-compose.swarm.yml # Portainer stack (prod)
├── .woodpecker/web.yml # CI pipeline
└── .env.example
Local dev
pnpm install
cp .env.example .env # fill in local values
pnpm dev # Next + Payload on http://localhost:3000
Payload admin: http://localhost:3000/admin
Documentation
docs/PRD.md— product requirements, scope, architecture decisionsdocs/TASKS.md— milestone + task trackingdesign-samples/stitch_jasonwoltje.com/silicon_ethos/DESIGN.md— design system reference
Deployment
Container images are built by Woodpecker and pushed to git.mosaicstack.dev/jason.woltje/professional-website:sha-<short>. The Portainer stack references immutable tags — latest is never used as a deploy reference.
See docs/PRD.md §Infrastructure for the full deploy runbook.
Description
Languages
TypeScript
69.2%
HTML
28.3%
CSS
1.2%
Dockerfile
0.9%
JavaScript
0.2%
Other
0.2%