Eine statische Website gebaut mit Hugo und Tailwind CSS.
ASCII Dresden ist eine mehrsprachige (Deutsch/Englisch) statische Website/Blog, erstellt mit Hugo. Sie nutzt Tailwind CSS (PostCSS) für das Styling und ist so konzipiert, dass sie leicht erweitert und angepasst werden kann.
- Content in
content/(zweisprachig:de+en). - Layouts unter
layouts/und Partial-Templates unterlayouts/_partials/. - Tailwind/PostCSS Pipeline konfiguriert in
postcss.config.jsundtailwind.config.js.
Note
Die angegebenen Versionen stellen sicher, dass alle Features (insbesondere Tailwind + PostCSS) korrekt funktionieren.
- Hugo (Version >= 0.112.0) — siehe
hugo.toml. - Node.js (empfohlen aktuelle LTS) und npm (oder ein alternativer Paketmanager).
Tip
Stelle sicher, dass Hugo und Node.js (LTS) installiert sind, bevor du mit dem Schnellstart beginnst.
git clone https://github.com/ascii-dresden/website2026
cd website2026npm install
# yarn install
# pnpm installInstalliere Hugo falls nötig und starte den dev-Server:
# macOS / Linux (mit Homebrew)
brew install hugo# Windows (mit Chocolatey)
choco install hugo -yWeitere Informationen findest du hier.
hugo server
--disableFastRender
--ignoreCache
--noHTTPCache
--cleanDestinationDirImportant
Hugo liest Dateien aus assets/ und nutzt beim Build automatisch deine PostCSS- und Tailwind-Konfiguration, sofern die Toolchain verfügbar ist.
# Optional: CSS zuerst bauen
HUGO_ENVIRONMENT=production npx postcss assets/css/main.css -o static/css/main.css
# Dann Hugo für die Produktiv-Build:
hugo
# Ergebnisse werden in `public/` geschriebenassets/— Quelldateien für CSS, Icons, Bilder.assets/css/main.css— Tailwind-Imports und Basiskonfiguration.assets/icons/,assets/images/— statische Medien.
content/— Seiten und Posts (de/en).layouts/— Hugo-Layouts und Partials.data/— strukturierte Daten für Timeline und Menü.hugo.toml— Hugo-Konfiguration (Sprache, Module, Build-Optionen).package.json— Node devDependencies (Tailwind, PostCSS).static/— statische Dateien (Dokumente, Bilder).public/— generierte Site.
- Neue Seiten:
content/<lang>/...odercontent/postsfür Blogeinträge. - Templates:
layouts/_default/undlayouts/_partials/anpassen. - Tailwind: Passe
tailwind.config.jsan (Farben, Font-Families, Content Pfade). - PostCSS:
postcss.config.jssteuert die Pipeline;HUGO_ENVIRONMENTaktiviertautoprefixer.
Diese Sektion beschreibt, wie du die Website pflegst und Inhalte aktualisierst (Blog-Artikel, Metadaten, Bilder, Menü, etc.).
- Der Content liegt unter
content/posts/und ist zweisprachig: es gibt je Artikel separate Dateien für Deutsch und Englisch (z. B.post-1.de.mdundpost-1.en.md). - Neue Artikel anlegen: Erstelle zwei Dateien (de + en) mit entsprechendem Front Matter. Beispiel-FrontMatter (YAML):
---
title: "Mein Artikel"
tag: "POST"
tagColor: "bg-red-100 text-red-800"
date: "2026-01-01"
slug: "mein-artikel"
image: "images/mein-artikel.jpg"
description: "Kurzbeschreibung"
draft: false
layout: post
---- Wichtige Felder:
title,date,description(für SEO),slug(URL),tag,draft(true = nicht veröffentlichen),image(Pfad zu Bild inassets/imagesoderstatic/images).
- Site-weite Einstellungen (z. B. Titel, Sprache, Params) sind in
hugo.tomlkonfiguriert. - SEO-Meta-Texte: Falls du Meta-Texte global anpassen willst, bearbeite die Partial
layouts/_partials/seo.htmloder die einzelnen Seiten-Front-Matters.
- Originale / Quelldateien: Lege größere Originalbilder in
assets/images/(wird von Hugo/Resources verarbeitet) oder instatic/images/wenn du sie unverändert ausliefern möchtest. - Naming & Pfade: Verwende sprechende, kleingeschriebene Dateinamen ohne Leerzeichen, z. B.
mein-artikel-hero.jpg. - Optimierung: Wenn möglich, lade optimierte WebP/AVIF-Versionen hoch oder nutze die Optimierung durch
{{< image src="/images/..." alt="Alt Text" >}} in Markdown
{{ partial "image.html" (dict "src" /images/... "alt" Alt Text "class" "w-full") }} in HTML
- Branch-Workflow: Erstelle einen Feature-Branch (
feature/add-article), committe Änderungen und öffne einen Pull Request. - Commit-Nachricht: Kurz und prägnant, z. B.
feat(blog): add article "Mein Artikel" (de/en). - Vor dem Merge: Lokale Vorschau prüfen und optional automatisierte Checks/CI (z. B. Lighthouse) laufen lassen.
- Node-Pakete aktualisieren:
npm update
npm audit fix- Hugo-Version prüfen/aktualisieren (je nach Distribution, z. B. Homebrew):
brew upgrade hugo- Alle Artikel nicht auf
draft: truegesetzt, falls veröffentlicht. - Bilder korrekt verlinkt und optimiert.
- Lokaler Build ohne Fehler (
hugo), CSS vorhanden (static/css/main.css). - Übersetzungen (
.de.md/.en.md) synchron.
Das Projekt enthält mehrere Shortcodes unter layouts/shortcodes/. Hier eine kurze Erklärung zu jedem Shortcode, welche Parameter sie erwarten und ein Beispiel für die Nutzung:
-
image- Zweck: Vereinfachtes Einbinden responsiver Bilder; leitet Parameter an die Partial
layouts/_partials/image.htmlweiter, die Hugo Resources für responsive Srcsets benutzt. - Wichtige Parameter:
src(Pfad, z. B.images/mein-bild.webp),alt,class(Tailwind-Klassen). - Beispiel (Markdown):
{{< image src="/images/cafe.webp" alt="Café" class="w-full" >}}
- Zweck: Vereinfachtes Einbinden responsiver Bilder; leitet Parameter an die Partial
-
menu- Zweck: Rendert das Menü (Getränke & Snacks) aus
data/menu.jsonin der passenden Sprache. - Wichtige Parameter:
lang(optional, z. B.deoderen; default: Seiten-Sprache). - Beispiel:
{{< menu lang="de" >}}oder einfach{{< menu >}}wenn die Seite die richtige Sprache hat.
- Zweck: Rendert das Menü (Getränke & Snacks) aus
-
timeline- Zweck: Zeigt eine History-/Timeline-Ansicht basierend auf
data/history.json(Schlüsselhistory_de/history_en). - Wichtige Parameter:
lang(optional, überschreibt Seiten-Sprache). - Daten-Einträge können optional ein Feld
imageenthalten (image: "images/cafe.webp"), das mobil oberhalb des Textes und auf Desktop als Vorschaubild in der gegenüberliegenden Spalte angezeigt wird. - Beispiel:
{{< timeline lang="de" >}}(die Daten werden ausdata/history.jsongezogen).
- Zweck: Zeigt eine History-/Timeline-Ansicht basierend auf
-
carousel- Zweck: Ein leichtgewichtiges Bild-Carousel mit Controls und optionalem Autoplay (keine externen Bibliotheken).
- Wichtige Parameter:
images: Komma-separierte Liste von Bildpfaden (z. B.images/a.webp,images/b.webp) — die Bilder sollten inassets/images/liegen, damit Hugo Resources sie verarbeiten kann.autoplay: Sekunden (z. B.4) für automatische Weiterschaltung;0= aus.class: Optional zusätzliche Tailwind-Klassen für den Wrapper.
- Beispiel:
{{< carousel images="images/cafe.webp,images/getraenke.webp" autoplay="4" class="max-w-3xl mx-auto" >}}
Beiträge sind willkommen:
- Fork erstellen.
- Feature-Branch anlegen.
- Änderungen committen.
- Pull Request öffnen.
Note
Bei Fragen oder Vorschlägen zur Website kannst du mich per E-Mail erreichen: jannik.menzel@ifsr.de
Der Sourcecode dieses Projektes ist unter der MIT Lizenz lizenziert. Details dazu findest du in der LICENSE Datei.
