mirror of
https://github.com/skoelle/moonweb-site.git
synced 2026-09-17 17:00:25 +00:00
5.3 KiB
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-READMETODO.md— Offene Items + Workflow für weitere ArbeitTODO.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
- Header konsistent — Identischer Site-Switcher auf allen Home-Sites
- Content flexibel — Detailseiten dürfen eigenes Layout haben
- Accent-Farben: hub=#3b6ea5, infra=#99333A, smarthome=#1f8a8a, code=#3E5098, retro=#8a6d3b
- Englisch — Alle Sites komplett auf Englisch
- Keine Analytics — Keine Tracking-Tools
- 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_TOKENCLOUDFLARE_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)