- datenschutz.astro: DSGVO privacy policy (server logfiles, Hetzner as
Auftragsverarbeiter per Art. 28, cookieless Umami, self-hosted fonts,
data-subject rights, supervisory-authority complaint).
- consts.ts: extract shared LEGAL entity data; Impressum now reads from it.
- blog: "Why my calendar app has no internet permission" and
"Open standards as a constraint, not a checkbox".
- uses.astro: colophon of the site stack, Floret apps, and self-hosted infra.
- Footer: add Uses + Datenschutz links alongside Impressum.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Legally required Impressum for the Einzelunternehmen (Kleinunternehmer,
no VAT ID, not in Handelsregister). Covers § 5 DDG contact data,
§ 18 Abs. 2 MStV responsible person, § 36 VSBG, and liability/copyright
disclaimers. Linked from the footer on every page.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
node:22 ships npm 10, which rejects the npm-11-generated package-lock
("Missing: @emnapi/core"). Upgrade npm to 11 before npm ci.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
npm ci failed on node:22-alpine (musl): Astro 7's rolldown/oxc native
bindings pull @emnapi/core etc. that aren't resolved for musl. Build on
Debian glibc to match the lockfile's linux-x64-gnu deps.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Personal site & blog for jeanlucmakiola.de.
- Astro 7 static output; self-hosted Inter + JetBrains Mono (Fontsource)
- Material 3 Expressive design tokens (red accent over neutral surfaces)
- Home (hero + about + selected work + latest writing)
- /work index + per-app pages (Calendula, Agendula, floret-kit) with
build-time Gitea release tags, brand-icon link rows, features grid,
and an at-a-glance facts panel
- Blog via Markdown content collection; RSS, sitemap, robots, OG/SEO
- Privacy-respecting Umami analytics, env-gated (off in dev)
- Dockerfile (build -> Caddy) + Caddyfile for Coolify deploy
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>