- robots.txt and sitemap.xml (both answered with the homepage before)
- real 404 page; nginx returns 404 instead of the homepage for unknown paths
- gzip and caching for fonts, images, videos
- JSON-LD as one graph: ProfessionalService (+founders, offer), WebSite,
FAQPage built from the FAQ answers
- sharper title and a meta description under 160 characters,
real descriptions for imprint and privacy pages
- imprint cites § 5 DDG (TMG was replaced in May 2024)
- empty kontakt.howWeWork hides the block instead of a red placeholder
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Fonts: every Google font the editor offers (13 families, latin and
latin-ext, 1.2 MB) now lives in public/fonts; the layout inlines
@font-face rules only for the fonts in use, built from
src/lib/font-faces.json. scripts/fonts-holen.py re-fetches them.
The admin font preview loads the same files via /admin/fonts and
/admin/api/font-faces. Checked: no request leaves larpaso.de on the
start page, Impressum or Datenschutz, nor in the admin editor.
nginx: access_log off, so visitor IPs are not stored. Caddy has no
access log configured either.
Privacy policy replaces the placeholder and describes only what the
site actually does: controller (from the Impressum), hosting at netcup
in Nuremberg (from the server IP), no access logs, HTTPS, mailto
contact form and e-mail, self-hosted fonts and media, no cookies,
data subject rights and the Lower Saxony supervisory authority.
The closing note is no longer styled as a warning.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Multi-stage Dockerfile (node build -> nginx serve), nginx config with
_astro asset caching, .dockerignore, and .gitignore hardening for
TLS key files. Astro already builds static output with site set to
https://larpaso.de.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JmTVcwbGJBYP7gu4P7b1yG