mirror of
https://github.com/skoelle/moonweb-site.git
synced 2026-09-18 01:10:25 +00:00
initial commit
This commit is contained in:
@@ -0,0 +1,137 @@
|
||||
# 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
|
||||
|
||||
```bash
|
||||
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:
|
||||
|
||||
```bash
|
||||
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)
|
||||
Reference in New Issue
Block a user