vikingowl f30dccdb99
All checks were successful
ci/someci/push/woodpecker Pipeline was successful
feat: add writeups to sitemap
2026-04-27 00:17:11 +02:00
2026-04-27 00:17:11 +02:00

nachtigall.dev

Personal portfolio site for Christian Nachtigall — engineer pivoting toward AppSec & LLM security.

Prerendered static site, served via nginx on Kubernetes.

Stack

Svelte Vite TypeScript Tailwind CSS Go

  • SvelteKit with @sveltejs/adapter-static (output to dist/)
  • 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.

Description
No description provided
Readme 2.3 MiB
Languages
Svelte 51.5%
TypeScript 40.2%
CSS 5.6%
JavaScript 1.5%
Smarty 0.7%
Other 0.5%