Files

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

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.