mirror of
https://github.com/Einundzwanzig-Podcast/einundzwanzig.space.git
synced 2025-12-13 08:16:49 +00:00
3.9 KiB
3.9 KiB
Ziel: Kurze, handlungsorientierte Hinweise, damit ein AI-Copilot sofort produktiv an diesem Node.js/Pug-basierten Static-Site-Generator arbeiten kann.
-
Architektur-Überblick
- Static-Site-Build: Node.js-Skripte in
tasks/erzeugen JSON- und HTML-Artefakte. - Eingabe:
content/*.json, Pug-Templates insrc/und statische Assets instatic/. - Zwischenausgaben:
generated/*.json(z.B.episodes.json,site-data.json). - Ausgabe:
dist/enthält die fertige Website (kopiert ausstatic/+ gerenderte Pug-Seiten + gebaute Assets). - Zentrale Hilfsfunktionen in
helpers.js(z.B.write,writeJSON,assetUrl,slugify,markdown).pug.config.jsimportiert diese Helpers in die Pug-Umgebung.
- Static-Site-Build: Node.js-Skripte in
-
Wichtige Tasks / Reihenfolge
tasks/fetch_feed.js— lädt den Podcast-Feed, parsed Episoden, generiertgenerated/episodes.jsonunddist/feed-Artefakte (auch Kapitel, Personen-Metadaten).tasks/fetch_episodes.js— lädt mp3s und Bilder anhand vongenerated/episodes.json(verwendetEPISODES_DIR).tasks/generate_site_data.js— lädt externe APIs (z.B. mempool.observer, Meetups) und schreibtgenerated/site-data.json.tasks/generate_pages.js— rendert Pug-Templates (src/*.pug) mitgenerated/*und schreibt HTML nachdist/.tasks/generate_sitemap.js— bautdist/sitemap.xmlausdist/**/*.html.
-
Wichtige npm-Skripte (häufig gebraucht)
- Lokales Setup:
npm install - Dev-Workflow (Watcher + BrowserSync):
npm start(führtinitaus, startet parallel watcher-Tasks) - Komplett bauen:
npm run build(init+build:*) - Produktions-Build (minify + rev + sitemap):
npm run prod - Nur Seiten neu rendern (unterstützt ein optionales argv für
changedFile):node tasks/generate_pages.js src/member.pug - Alle Episoden herunterladen:
EPISODES_DIR=./episodes npm run episodes
- Lokales Setup:
-
Konventionen & Eigenheiten (wichtig für Änderungen)
- Tasks verwenden
sync-request(synchrone HTTP-Aufrufe). Änderungen an Netzwerkcode sollten robust gegen Timeouts/Fehler sein; viele Tasks haben lokale Fallbacks (content/*.json). helpers.jskapselt URL-/Asset-Logik. VerwendeassetUrl/assetPathstatt händischem Pfadbau, damitHOST/NODE_ENVkorrekt angewendet wird.- Kategorie- und Teilnehmernormierung geschieht in
tasks/fetch_feed.js(z.B. MappingDer-Weg→Der Weg, Alias-Auflösung viaparticipantsWithAliases). Änderungen an Kategorien müssen dort gespiegelt werden. generated/ist build-artifact; verändere primärcontent/undtasks/– nichtgenerated/dauerhaft.- Pug-Mixins in
src/includes/mixins.pugwerden pro Projekt häufig wiederverwendet (z.B.+episodeItem,+episodePlayer).
- Tasks verwenden
-
Integrationen & externe Abhängigkeiten
- Podcast-Feed:
content/meta.jsonenthältmasterFeedUrl/publicFeedUrl—tasks/fetch_feed.jsreferenziert diese. - Mempool-API:
https://mempool.observer/api/recentBlocksingenerate_site_data.js(block height in site-data). - Meetup-Portal:
https://portal.einundzwanzig.space/...(Falling back tocontent/meetups-do-not-edit.json). - Nostr:
tasks/generate_nostr.jsnutzt@nostr-dev-kit/ndk(erzeugt mapping/relays fürcontent/participants.json).
- Podcast-Feed:
-
Fehlerszenarien & Debug-Hinweise
- Viele Tasks loggen Fehler und fallen auf lokale JSONs zurück; bei Netzwerkfehlern zuerst
npm run build:datamanuell testen. - Für Debugging: setze
NODE_ENV=development(dev host/asset-Pfade) oderCI=trueumfetch_feed.jsin den Debug-Modus zu versetzen. - Sitemap/URLs:
tasks/generate_sitemap.jsnutztDEPLOY_PRIME_URL/URLenv vars — beim lokalen Test ggf. setzen.
- Viele Tasks loggen Fehler und fallen auf lokale JSONs zurück; bei Netzwerkfehlern zuerst
-
Schnellbeispiele, die AI-Agenten oft ausführen sollten
- Rendern & lokaler Server (ganzer Dev-Loop):
npm install npm start - Schnell Seiten neu bauen nach Template-Änderung:
node tasks/generate_pages.js src/includes/mixins.pug
- Rendern & lokaler Server (ganzer Dev-Loop):