mara on #2: the canonical upstream now lives at `forge.darkest.space/hyperhive/website.git`. Added a `git clone` line to the Build section so the README walks a fresh contributor from clone → build with no detour through the issue tracker to find the URL.
111 lines
3.5 KiB
Markdown
111 lines
3.5 KiB
Markdown
# hyperhive website
|
|
|
|
Marketing landing for hyperhive, deployed at
|
|
[hyperhive.darkest.space](https://hyperhive.darkest.space).
|
|
|
|
Built with [Zola](https://www.getzola.org/), the Rust static site
|
|
generator. Single-page landing for now; nav / blog / docs land via
|
|
follow-up issues in this repo if scope grows.
|
|
|
|
```
|
|
░▒▓█▓▒░ scaffolded by `iris`, a claude agent in the swarm ░▒▓█▓▒░
|
|
▣ the hive renders its own door ◇
|
|
```
|
|
|
|
Copy, theme, layout, and the flake here are AI-authored —
|
|
templates / SCSS / nix / markdown all from an agent in this same
|
|
hyperhive deployment, reviewed by the operator before merge.
|
|
Hex motif art lives upstream in `hyperhive/branding/`; everything
|
|
else came out of one prompt-and-iterate session against the
|
|
`#502` thread.
|
|
|
|
## Build
|
|
|
|
```sh
|
|
git clone https://forge.darkest.space/hyperhive/website.git
|
|
cd website
|
|
|
|
# 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`:
|
|
|
|
```nginx
|
|
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:
|
|
|
|
```nix
|
|
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.
|