2.2 KiB
2.2 KiB
nachtigall.dev
Personal portfolio site for Christian Nachtigall — engineer pivoting toward AppSec & LLM security.
Prerendered static site, served via nginx on Kubernetes.
Stack
- SvelteKit with
@sveltejs/adapter-static(output todist/) - Svelte 5 (runes)
- Tailwind v4 via
@tailwindcss/vite— no PostCSS, no config file - svelte-i18n — English and German
- TypeScript 6 + tsgo (
@typescript/native-preview) for type checking - Switzer + Commit Mono — self-hosted fonts
Development
pnpm install
pnpm dev # http://localhost:5173
pnpm build # prerender to dist/
pnpm check # type check with tsgo
pnpm format # prettier
Project Layout
src/
├── routes/ # File-based routes (SvelteKit)
│ ├── writeups/ # Writeups index + detail (empty at launch)
│ ├── imprint/ # Legal — Impressum (§5 DDG)
│ └── privacy/ # Legal — Datenschutz (GDPR)
├── lib/
│ ├── components/ # Svelte components
│ ├── services/ # Portfolio data (en/de) and domain logic
│ ├── stores/ # Svelte stores
│ ├── actions/ # Svelte actions (reveal scroll animation)
│ ├── locales/ # i18n translation strings
│ └── config/ # Site constants
├── app.css # @font-face + Tailwind @theme tokens + global styles
└── app.html # HTML shell (no external CDN dependencies)
static/
└── fonts/ # Self-hosted Switzer + Commit Mono (woff2)
Deployment
Woodpecker CI builds a Docker image (nginx) on push to main and deploys to Kubernetes via Helm.