mirror of
https://github.com/skoelle/moonweb-site.git
synced 2026-09-17 17:00:25 +00:00
README.md
This commit is contained in:
@@ -129,5 +129,4 @@ jobs:
|
||||
# Required one-time setup (see PLAN.md Phase 2):
|
||||
# Create Cloudflare Workers and bind custom domains.
|
||||
# DNS is already on Cloudflare (SPEC.md §4.6).
|
||||
# Note: Cloudflare Free-Tier limits to 5 Workers per repository.
|
||||
#
|
||||
|
||||
@@ -19,7 +19,7 @@ Monorepo für 5 statische Websites unter moonweb.org, basierend auf Eleventy (11
|
||||
- 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
|
||||
|
||||
@@ -78,7 +78,7 @@ moonweb-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
|
||||
- **Deploy:** Cloudflare Pages (5 separate Projects)
|
||||
|
||||
## Entwicklung
|
||||
|
||||
@@ -127,7 +127,6 @@ 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
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# moonweb.org — Implementation Plan
|
||||
|
||||
Companion to `SPEC.md`. Defines order of work. All five sites (hub, infra, smarthome, code, retro) launch **simultaneously** — no staged rollout by domain. cv (stefankoelle.de) stays external (Cloudflare Free-Tier limits to 5 Pages projects per repository).
|
||||
Companion to `SPEC.md`. Defines order of work. All five sites (hub, infra, smarthome, code, retro) launch **simultaneously** — no staged rollout by domain.
|
||||
|
||||
## Phase 0 — Repo & tooling setup
|
||||
|
||||
@@ -18,7 +18,7 @@ Work order within this phase is flexible since all domains launch together; sugg
|
||||
- Build the aggregator script, run it once, generate `code/_data/repos.json`.
|
||||
- Build the overview page grouped by subcategory (Automation & Sync, Dev-Tools, Web Apps, Firmware/Hardware, Misc).
|
||||
2. **smarthome** — overview first, detail pages only where content already exists.
|
||||
- Draft the overview: how the smart home is structured (mirrors what's on `home.moonweb.org`: buttons/control, sensors, calendar, weather, media).
|
||||
- Draft the overview: how the smart home is structured (buttons/control, sensors, calendar, weather, media).
|
||||
- For each existing topic with enough material (HomematicIP/MQTT, Tasmota, LED-Matrix *reference only, no migration*, M5Stack/WT32SC01 dashboards, WetterAPI, AirPlay, OctoPi, TubeArchivist), decide case by case: enough content → detail page; too thin → mention in overview only, no placeholder.
|
||||
- Translate source material to English during authoring (one-time AI pass per document, per `SPEC.md §7`).
|
||||
3. **infra** — overview only, redaction pass required.
|
||||
@@ -29,12 +29,12 @@ Work order within this phase is flexible since all domains launch together; sugg
|
||||
- One overview page listing what hardware exists.
|
||||
- Add "work in progress" notices for anything that isn't ready — better an honest short page than none.
|
||||
5. **hub** — build last within this phase since it links to all the others.
|
||||
- One-line description + link per destination (infra, smarthome, code, retro, and external links to stefankoelle.de, www.moonweb.org, 28k8.moonweb.org, home.moonweb.org).
|
||||
- One-line description + link per destination (infra, smarthome, code, retro, and external links to stefankoelle.de, www.moonweb.org, 28k8.moonweb.org).
|
||||
|
||||
## Phase 2 — CI/CD
|
||||
|
||||
1. Write `.github/workflows/build-deploy.yml`: builds all five sites in one job (or matrix), then deploys each output folder to its corresponding Cloudflare Pages project via `wrangler pages deploy`.
|
||||
2. Create five Cloudflare Pages projects (hub, infra, smarthome, code, retro), each bound to its target custom domain (DNS already on Cloudflare, no extra setup needed). Note: Cloudflare Free-Tier limits to 5 Pages projects per repository — cv (stefankoelle.de) stays external.
|
||||
2. Create five Cloudflare Pages projects (hub, infra, smarthome, code, retro), each bound to its target custom domain (DNS already on Cloudflare, no extra setup needed).
|
||||
3. Do one full dry run per site locally before the first real deploy.
|
||||
|
||||
## Phase 3 — Launch
|
||||
@@ -51,13 +51,13 @@ Work order within this phase is flexible since all domains launch together; sugg
|
||||
- Building any Perplexity-backchannel mechanism for reusing published site content in this project.
|
||||
- Redirecting the apex domain from `www.moonweb.org` to `hub.moonweb.org`.
|
||||
- Any analytics, "last updated" timestamps, or scheduled/automated content generation beyond the one-time GitHub aggregator run.
|
||||
- Porting stefankoelle.de into the monorepo — stays external (Cloudflare Free-Tier limits to 5 Pages projects).
|
||||
- Porting stefankoelle.de into the monorepo — stays external.
|
||||
|
||||
## Definition of done for this build
|
||||
|
||||
- All five sites live on Cloudflare Pages under their intended domains.
|
||||
- code.moonweb.org reflects the current GitHub repos via the `.moonweb.yml` aggregator, grouped by subcategory.
|
||||
- smarthome.moonweb.org gives an accurate picture of what's running on home.moonweb.org today, with detail pages only where content already existed.
|
||||
- smarthome.moonweb.org gives an accurate picture of what's running on the homelab today, with detail pages only where content already existed.
|
||||
- infra.moonweb.org describes the stack shallowly with zero sensitive data leaked.
|
||||
- retro.moonweb.org exists with an honest, minimal overview (WIP notices allowed).
|
||||
- hub.moonweb.org correctly links everything, including the untouched external sites (stefankoelle.de, www.moonweb.org, 28k8.moonweb.org).
|
||||
|
||||
@@ -10,7 +10,7 @@ code.moonweb.org → 💻 Curated GitHub project catalog
|
||||
retro.moonweb.org → 🕹️ Physical retro hardware collection
|
||||
```
|
||||
|
||||
> **External sites** (not in this monorepo): [stefankoelle.de](https://stefankoelle.de) (CV), [www.moonweb.org](https://www.moonweb.org) (2000s time capsule), [28k8.moonweb.org](https://28k8.moonweb.org) (90s BBS archive), [home.moonweb.org](https://home.moonweb.org) (Authelia-protected dashboard).
|
||||
> **External sites** (not in this monorepo): [stefankoelle.de](https://stefankoelle.de) (CV), [www.moonweb.org](https://www.moonweb.org) (2000s time capsule), [28k8.moonweb.org](https://28k8.moonweb.org) (90s BBS archive).
|
||||
|
||||
---
|
||||
|
||||
@@ -29,8 +29,8 @@ retro.moonweb.org → 🕹️ Physical retro hardware collection
|
||||
│
|
||||
▼
|
||||
┌────────────────────────┐
|
||||
│ Cloudflare Workers │
|
||||
│ (5 Pages projects) │
|
||||
│ Cloudflare Workers │
|
||||
│ (Cloudflare Workers) │
|
||||
└────────────────────────┘
|
||||
│
|
||||
┌──────────────┼──────────────┐
|
||||
@@ -38,10 +38,6 @@ retro.moonweb.org → 🕹️ Physical retro hardware collection
|
||||
hub.moonweb.org infra.moonweb.org …
|
||||
```
|
||||
|
||||
### Why 5 separate Cloudflare projects?
|
||||
|
||||
Cloudflare Free-Tier limits to **5 Pages projects per repository**. Each subdomain (hub, infra, smarthome, code, retro) gets its own project. `stefankoelle.de` stays external to stay within this limit.
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ Tech Stack
|
||||
|
||||
@@ -20,10 +20,10 @@ outside the monorepo, untouched:
|
||||
├── stefankoelle.de CV, career, personal (extern gehostet)
|
||||
├── www.moonweb.org finished, no overlap (2001-style internet time capsule)
|
||||
├── 28k8.moonweb.org 90s BBS/scene archive, separate approach, may migrate later (undecided)
|
||||
└── home.moonweb.org Authelia-protected homelab dashboard/control plane (not part of this site set)
|
||||
|
||||
```
|
||||
|
||||
Apex domain `moonweb.org` currently redirects to `www.moonweb.org`. This stays as-is for now; a later redirect to `hub.moonweb.org` is possible but out of scope for this build. Cloudflare Free-Tier limits to 5 Pages projects per repository, which is why cv (stefankoelle.de) stays external.
|
||||
Apex domain `moonweb.org` currently redirects to `www.moonweb.org`. This stays as-is for now; a later redirect to `hub.moonweb.org` is possible but out of scope for this build.
|
||||
|
||||
## 3. Domain purposes
|
||||
|
||||
@@ -31,7 +31,7 @@ Apex domain `moonweb.org` currently redirects to `www.moonweb.org`. This stays a
|
||||
|---|---|---|
|
||||
| hub | Gateway, links to everything, one-line description per destination | Minimal |
|
||||
| infra | Shallow, structured overview of the stack: Proxmox (PVE + pve2), Synology DS918+, VLANs, Fritz!Box mesh, SSO, plus how I work (OpenCode/OpenClaw dev environment) | Reference, high-level only |
|
||||
| smarthome | Why the homelab exists — what's actually running on `home.moonweb.org` as smart home: sensors, automation, calendar/contacts sync, dashboards, media | Project storytelling |
|
||||
| smarthome | Why the homelab exists — what's actually running on the homelab as smart home: sensors, automation, calendar/contacts sync, dashboards, media | Project storytelling |
|
||||
| code | Curated, sorted GitHub catalog — overview only, always linking out to GitHub | Portfolio |
|
||||
| retro | Physical retro hardware collection (not software/demos — that's 28k8's domain) | Simple, factual |
|
||||
|
||||
@@ -40,7 +40,7 @@ Apex domain `moonweb.org` currently redirects to `www.moonweb.org`. This stays a
|
||||
### 4.1 Header-consistent, content-flexible principle
|
||||
|
||||
- **Header is identical** across infra/smarthome/code/retro: site-switcher (hub · infra · smarthome · code · retro), domain accent color, consistent branding.
|
||||
- **Overview (index) pages** use a shared card-grid layout (reference: current `home.moonweb.org` — banner header, grouped card sections, clean sans-serif, generous whitespace, light theme only, no heavy JS).
|
||||
- **Overview (index) pages** use a shared card-grid layout (reference: clean card-grid layout with banner header, grouped card sections, sans-serif, generous whitespace, light theme only, no heavy JS).
|
||||
- **Detail/sub-pages** keep the same header but may use a freer layout below it (reference: `/ledmatrix/` on stefankoelle.de today — pin tables, API docs, photos in free layout instead of a rigid card grid).
|
||||
|
||||
Note: cv (stefankoelle.de) is external and uses its own independent design — it does not follow this principle.
|
||||
@@ -137,14 +137,13 @@ moonweb-site/
|
||||
└── build-deploy.yml # builds all sites, deploys each to its Cloudflare Pages project
|
||||
```
|
||||
|
||||
Note: `cv/` (stefankoelle.de) is hosted externally and linked from hub/site-switcher — it is not part of this monorepo (Cloudflare Free-Tier limits to 5 Pages projects per repository).
|
||||
Note: `cv/` (stefankoelle.de) is hosted externally and linked from hub/site-switcher — it is not part of this monorepo.
|
||||
|
||||
## 11. Technical stack
|
||||
|
||||
- **Static site generator:** Eleventy (11ty) — markdown/YAML-first, minimal JS, `_data` folders map directly onto the `.moonweb.yml` aggregator output, low maintenance for five sites at this scale.
|
||||
- **Build:** entirely in GitHub Actions.
|
||||
- **Deploy:** Cloudflare Pages — five separate Pages projects (one per public domain: hub, infra, smarthome, code, retro), since Cloudflare Pages binds one custom-domain set per project. One shared GitHub Actions workflow builds all five sites and deploys each output folder to its respective Pages project.
|
||||
- **Cloudflare Free-Tier limit:** Max 5 Pages projects per repository — cv (stefankoelle.de) stays external to avoid hitting this limit.
|
||||
- **Runtime:** fully static, no server-side code, no containers for the website itself (distinct from the actual homelab services running on the Docker host).
|
||||
- **DNS:** already on Cloudflare — no additional setup step needed for Pages custom domains.
|
||||
- **Local preview:** Eleventy's built-in dev server with live reload, run per-site (`npm run dev:<site>`) before any commit.
|
||||
@@ -156,4 +155,4 @@ Note: `cv/` (stefankoelle.de) is hosted externally and linked from hub/site-swit
|
||||
- Any Perplexity-backchannel mechanism (website content reusable inside this project) — deferred, no time invested now.
|
||||
- Analytics of any kind.
|
||||
- Automated content generation/translation pipelines beyond the one-time GitHub aggregator for code and the one-time translation pass during migration.
|
||||
- Porting stefankoelle.de into the monorepo — stays external (Cloudflare Free-Tier limits to 5 Pages projects per repository).
|
||||
- Porting stefankoelle.de into the monorepo — stays external.
|
||||
|
||||
@@ -20,7 +20,7 @@ Stand: 2026-08-13
|
||||
- [ ] 28k8.moonweb.org Zukunft klären
|
||||
- [ ] Perplexity-Rückkanal
|
||||
- [ ] Apex-Domain Redirect (moonweb.org → hub.moonweb.org)
|
||||
- [ ] stefankoelle.de in Monorepo portieren (nur wenn Cloudflare Free-Tier-Limit gelöst wird)
|
||||
- [ ] stefankoelle.de in Monorepo portieren
|
||||
|
||||
## Schon erledigt (Stand 2026-08-13)
|
||||
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ sections:
|
||||
href: "https://infra.moonweb.org"
|
||||
emoji: "🏗️"
|
||||
- title: "smarthome"
|
||||
summary: "What's actually running on home.moonweb.org, and why."
|
||||
summary: "What's actually running on the homelab, and why."
|
||||
href: "https://smarthome.moonweb.org"
|
||||
emoji: "🏠"
|
||||
- title: "code"
|
||||
|
||||
Reference in New Issue
Block a user