Files
moonweb-site/AGENTS.md
T
2026-08-13 21:58:53 +02:00

5.3 KiB

AGENTS.md — moonweb-site

Projektübersicht

Monorepo für 5 statische Websites unter moonweb.org, basierend auf Eleventy (11ty), deployt auf Cloudflare Pages.

Websites

Site Domain Zweck Status
hub hub.moonweb.org Zentrale Indexseite, verlinkt alles Fertig
infra infra.moonweb.org Infrastruktur-Übersicht (Proxmox, Synology, Netzwerk) Übersicht + 3 Detailseiten
smarthome smarthome.moonweb.org Smart Home Projekte und Dashboards Übersicht + 6 Detailseiten
code code.moonweb.org GitHub-Projekte (aggregiert via .moonweb.yml) Fertig (10 Repos)
retro retro.moonweb.org Physische Retro-Hardware Nur Übersicht (WIP)

Externe Sites (nicht im Monorepo)

  • stefankoelle.de — Lebenslauf, Kontakt (extern gehostet)
  • www.moonweb.org — 2000er Internet-Zeitkapsel
  • 28k8.moonweb.org — 90er BBS/Scene-Archiv
  • home.moonweb.org — Authelia-geschütztes Homelab-Dashboard

Dateistruktur

moonweb-site/
├── hub/                    # Eleventy-Config + index.njk
├── infra/                  # Eleventy-Config + index.njk + 3 Subseiten
│   ├── backup-strategy/
│   ├── monitoring/
│   └── dev-workflow/
├── smarthome/              # Eleventy-Config + index.njk + 6 Subseiten
│   ├── homematic-mqtt/
│   ├── tasmota-energy/
│   ├── balkonpi/
│   ├── airplay-audio/
│   ├── octoprint/
│   └── tubearchivist/
├── code/                   # Eleventy-Config + index.njk
│   └── _data/repos.json    # Vom GitHub-Aggregator generiert
├── retro/                  # Eleventy-Config + index.njk
├── shared/                 # Gemeinsame Komponenten
│   ├── _includes/
│   │   ├── base.njk        # Basis-Layout (Header, Site-Switcher, Footer)
│   │   └── card-grid.njk   # Card-Grid Template
│   ├── base.css            # Basis-CSS (Layout, Cards, Typography)
│   └── theme-*.css         # Accent-Farben pro Site
├── scripts/
│   └── github-aggregator/  # Python-Skript für code.moonweb.org
│       ├── aggregate.py
│       ├── example.moonweb.yml
│       └── README.md
├── .github/workflows/
│   └── build-deploy.yml    # CI/CD: Build + Deploy zu Cloudflare Pages
├── DESIGN.md               # Initiales Konzept mit Design-Entscheidungen (deutsch)
├── SPEC.md                 # Vollständige Spezifikation (148 Zeilen)
├── PLAN.md                 # Implementierungsplan (65 Zeilen)
├── README.md               # Projekt-README
├── TODO.md                 # Offene Items + Workflow
└── package.json            # npm scripts für dev/build

Dokumentation

  • DESIGN.md — Initiales Konzept mit Design-Entscheidungen (deutsch)
  • SPEC.md — Vollständige Spezifikation (148 Zeilen)
  • PLAN.md — Implementierungsplan (65 Zeilen)
  • README.md — Projekt-README
  • TODO.md — Offene Items + Workflow für weitere Arbeit
  • TODO.md — Offene Items + Workflow für weitere Arbeit

Technischer Stack

  • SSG: Eleventy (11ty) v3.1.6
  • Templates: Nunjucks (.njk)
  • CSS: Variables-basiert mit Accent-Farben pro Site
  • Deploy: Cloudflare Pages (5 separate Projects)
  • CI/CD: GitHub Actions
  • GitHub-Aggregator: Python (liest .moonweb.yml aus Repos)
  • Cloudflare Free-Tier: Max 5 Pages Projects pro Repository

Entwicklung

npm install
npm run dev:hub          # localhost:8081
npm run dev:infra        # localhost:8082
npm run dev:smarthome    # localhost:8083
npm run dev:code         # localhost:8084
npm run dev:retro        # localhost:8085
npm run build            # Alle Sites bauen

Design-Prinzipien

  1. Header konsistent — Identischer Site-Switcher auf allen Home-Sites
  2. Content flexibel — Detailseiten dürfen eigenes Layout haben
  3. Accent-Farben: hub=#3b6ea5, infra=#99333A, smarthome=#1f8a8a, code=#3E5098, retro=#8a6d3b
  4. Englisch — Alle Sites komplett auf Englisch
  5. Keine Analytics — Keine Tracking-Tools
  6. Sensible Daten — Infra-Content wird manuell redigiert (keine IPs, Keys, Passwörter)

Content-Regeln (SPEC.md §5)

Site Detailseiten? Regel
smarthome Ja Nur wenn genug Content vorhanden
code Nie Nur Übersicht + GitHub-Links
infra Kaum Bewusst oberflächlich (sensible Daten)
retro Ja, minimal Rudimentär, WIP erlaubt

GitHub-Aggregator

scripts/github-aggregator/aggregate.py liest .moonweb.yml aus allen public Repos von skoelle und schreibt code/_data/repos.json. Manuell ausführen:

export GITHUB_TOKEN=ghp_xxx
python scripts/github-aggregator/aggregate.py

CI/CD

.github/workflows/build-deploy.yml baut alle 5 Sites (hub, infra, smarthome, code, retro) und deployt sie zu Cloudflare Pages.

Benötigte Secrets:

  • CLOUDFLARE_API_TOKEN
  • CLOUDFLARE_ACCOUNT_ID

Hinweis: Cloudflare Free-Tier erlaubt nur 5 Projects pro Repository. stefankoelle.de bleibt extern.

Offene Punkte

  • retro/ ist bewusst rudimentär gehalten
  • Einige Cards in smarthome/ und infra/ verlinken noch auf "#" (Placeholder)
  • Deploy erfolgt noch nicht automatisch (Phase 3 ausstehend)
  • stefankoelle.de ist extern gehostet, wird nur verlinkt (nicht im Monorepo)