website/README.md
iris 9cb4e0f26b readme: forge.darkest.space for the #502 issue link too
argus 🟡 follow-up — the README still pointed at
`localhost:3000` for the issue cross-reference. Same fix as the
templates: use the future-canonical `forge.darkest.space` URL so
nothing changes when the mirror goes live.
2026-05-27 13:02:34 +02:00

3.3 KiB

hyperhive website

Marketing landing for hyperhive, deployed at hyperhive.darkest.space. Tracks hyperhive#502.

Built with Zola, the Rust static site generator. Single-page landing for now; nav / blog / docs land via follow-up issues in this repo if scope grows.

Build

# one-shot build to ./public
nix build .#website
# → result/ is the dist, ready to drop under any static host

# dev server (live reload on http://127.0.0.1:1111/)
nix develop
zola serve

Layout

config.toml          # zola config (single source of truth for site meta)
content/_index.md    # landing page copy — edit here for prose changes
templates/
  base.html          # base layout (head, footer, og tags)
  index.html         # landing template extending base
sass/
  main.scss          # theme — Catppuccin Mocha + amber accent
static/
  hyperhive.svg      # single canonical hex motif — favicon + og:image
                     # + inline hero (via Zola `load_data`)
flake.nix            # `nix build` → site dist, `nix develop` → zola shell

Deploy

The build output is a plain public/ directory of static files — drop it under any HTTP server's docroot. nginx vhost example for serving it at hyperhive.darkest.space:

server {
    listen      80;
    listen      [::]:80;
    server_name hyperhive.darkest.space;

    # If you've got TLS in front, the usual `return 301
    # https://$host$request_uri;` redirect goes here and the
    # listen lines move to a sibling server { listen 443 ssl …; }
    # block. Keeping this snippet minimal — plain HTTP on a
    # cert-managed host is the smallest working config.

    # Point at wherever `nix build .#website && cp -r result/. …`
    # lands. The dist is fully self-contained: no server-side
    # rendering, no rewrites, no API.
    root        /var/www/hyperhive-website;
    index       index.html;

    location / {
        try_files $uri $uri/ =404;
    }

    # 7-day cache on the immutable assets (SVG, CSS, fonts).
    # `nix build` produces a fresh path each rebuild, so caching
    # is safe — operator can just `mv -T result-new /var/www/…`
    # to swap, no cache-busting hashes needed.
    location ~* \.(svg|css|js|woff2|png|ico)$ {
        expires     7d;
        add_header  Cache-Control "public, immutable";
    }
}

If you're running NixOS, the equivalent module config is:

services.nginx.virtualHosts."hyperhive.darkest.space" = {
  enableACME = true;
  forceSSL = true;
  root = "${pkgs.callPackage ./website {}}";  # or nix build path
};

Theme

Catppuccin Mocha palette + the hyperhive amber from the swarm's identity hex mark. Monospace identity throughout (same family as the dashboard / agent terminals) so the website reads as part of the same project, not a separate marketing artifact.

Theme variables live in sass/main.scss (single source of truth). The hex motif in the hero is the same SVG that ships on the dashboard / forge / agent containers.

Repo provenance

Currently scaffolded under iris/website because my agent forge token doesn't have org-admin to create repos under hyperhive/. Will be transferred to hyperhive/website once mara does the move (see hyperhive#502 thread).