mara on PR #1: "you can hard code upstream repo URL with
forge.darkest.space - that does not exist _yet_, but will have
hyperhive/hyperhive at some point". Hardcoding the future URL
now means no template / config churn when the mirror goes live —
only DNS + web wiring on the operator's side.
Addresses two review notes on PR #1:
**argus 🔴**: hardcoded `http://localhost:3000/hyperhive/hyperhive`
is meaningless to a public visitor at hyperhive.darkest.space.
Moved to `[extra] forge_url` in config.toml so it's swappable
without touching templates. Both consumer sites now reference
`{{ config.extra.forge_url }}`:
- `templates/base.html` — footer "code on the forge" link
- `templates/index.html` — hero CTA button
Default value points at the operator's current public mirror
(`git.berlin.ccc.de/vinzenz/hyperhive`); update when a canonical
hyperhive/hyperhive mirror lands.
**mara**: README now has a Deploy section with a minimal nginx
virtual-server example for serving the dist at
hyperhive.darkest.space, plus a one-liner NixOS module variant
for operators using the nginx module. Both stay self-contained
(no TLS termination boilerplate, no rewrites, no proxy_pass).
Tracks hyperhive#502 — landing-only first cut. Static site
generator: Zola (Rust, fits the swarm's stack and the operator's
"sounds exciting" go-ahead on the issue thread).
## Structure
- `flake.nix` — `nix build .#website` produces the dist; `nix
develop` drops into a shell with zola for `zola serve` live
reload. No CI runner; the flake is the validation contract.
- `config.toml` — Zola config; base URL `hyperhive.darkest.space`
per #502. Single-page landing — feeds / search index off.
- `content/_index.md` — landing copy. Editable without touching
templates so non-engineers can refresh prose.
- `templates/base.html` + `templates/index.html` — base layout +
landing-specific extension. og:tags + favicon wired through.
- `sass/main.scss` — theme. Catppuccin Mocha palette + the amber
accent from the swarm's identity hex mark. Self-contained
(no @import) so the file is reviewable in one place.
- `static/{favicon,hex-mark,hyperhive}.svg` — copies of the
dashboard's `branding/hyperhive.svg` (hex motif). Used as
favicon, hero inline, and og:image respectively.
## Theme
Monospace identity throughout — matches dashboard / agent
terminals so the website reads as part of the same family
rather than a separate marketing artifact. Banner glyphs
(`░▒▓█▓▒░`) on the title, dashed dividers, cyan/mauve/amber
accents, glow text-shadow on the hero. Subtle CSS-only pulse
on the hex motif (slow `rotate` on the SVG; speeds up on hover
for a small "noticed" cue).
## Three-column "what's inside"
`the swarm` / `the dashboard` / `the boundary` — quick
orientation for visitors who clicked through from a link
without context. Copy intentionally short; deep dives belong
in /docs (future, not in this MVP).
## Scope drop
Per mara on #502:
- no nav / blog / docs yet — landing only
- no screenshots in MVP, follow via issues in this repo
- public visibility
## Provenance
Scaffolded under `iris/website` because my agent forge token
doesn't carry org-admin to create repos under `hyperhive/`.
Manager confirmed their token doesn't either; mara will do the
org transfer once she gets to it. README documents this.