Statische, mehrsprachige Website (DE/EN/FR) auf Basis von Eleventy mit eigenem, schlankem Design.
- Eleventy 2
- Nunjucks + Markdown
- Eigenes CSS (Design-Tokens, Light/Dark), keine CSS-Frameworks
- Inter + Source Serif 4 (selbst gehostet via Fontsource)
- Pagefind (Suche)
- Eleventy Navigation + Pagination
- RSS/JSON Feed + ICS Kalender
- Mehrsprachige Inhalte in Deutsch, Englisch und Franzoesisch
- Saubere Navigation mit Sprachwechsel im Header
- Blog inklusive Tags, Pagination und Feed
- Deployment auf Netlify
- Node.js 20 empfohlen
- npm
git clone https://github.com/a-lottes/lottes.dev.git
cd lottes.dev
npm installnpm startnpm run buildBuild-Output liegt in _site/.
npm start: lokaler Dev-Servernpm run build: Produktionsbuild (inkl.postbuild)npm run debug: Eleventy Debug-Ausgabenpm run debugstart: Dev-Server mit Debug-Ausgabenpm run benchmark: Eleventy Benchmark-Ausgabe
content/: Seiten und Blog-Inhalte pro Sprache_data/: globale Daten, Metadaten, i18n-Strings_includes/: Layouts, Templates und Komponentenpublic/: statische Assets (CSS, JS, Bilder, Icons)_site/: generierter Output
Das CSS liegt in public/css/ und wird von _includes/layouts/base.njk inline gebundelt:
tokens.css: Design-Tokens (Farben, Fonts, Abstände) inkl. Light/Darkfonts.css:@font-facefür die selbst gehosteten Schriftenbase.css: Reset und Grundelementelayout.css: Layout-Primitives (.container,.grid,.cluster,.hero)prose.css: Artikeltypografie (.prose)components.css: Header, Nav, Cards, Footer usw.
JavaScript in public/js/ (vanilla, ohne Dependencies): theme.js (Light/Dark/System-Toggle),
nav.js (Menüs und Sprachwechsler), network.js (animiertes Netzwerk im Hero der Startseiten,
aktiviert über heroCanvas: true im Frontmatter).
- DE:
content/de/ - EN:
content/en/ - FR:
content/fr/
_data/i18n/de/index.js_data/i18n/en/index.js_data/i18n/fr/index.js
Fuer korrekte Zuordnung derselben Artikel in unterschiedlichen Sprachen wird translationKey im Frontmatter verwendet.
Beispiel:
translationKey: agent-workflow-in-practiceWenn ein Artikel keine Uebersetzung hat, ist der Sprachlink im Header auf der Zielsprache deaktiviert.
Die Netlify-Konfiguration ist in netlify.toml hinterlegt:
- Build Command:
npm run build - Publish Directory:
_site - Node Version:
20
Wichtig: Im Netlify UI darf Publish Directory nicht auf public stehen, sonst wird nur die Asset-Struktur statt der generierten Website ausgeliefert.
- Datei im passenden Sprachordner unter
content/{lang}/...erstellen. - Frontmatter setzen (
title,layout, optionaleleventyNavigation). - Bei Navigationsseiten
eleventyNavigationsauber pflegen.
- Datei in
content/{lang}/blog/posts/anlegen. - Frontmatter mit
title,description,date,tagssetzen. - Bei mehrsprachigen Pendants den gleichen
translationKeyverwenden.
- Pruefen, ob die betroffenen Posts denselben
translationKeynutzen. - Pruefen, ob alle Sprachvarianten im passenden Ordner existieren.
In seltenen Faellen liegen alte Dateien noch in _site/.
rm -rf _site
npm run build- Code: MIT
- Inhalte/Assets: siehe Dateien unter
LICENSES/