mara on PR #1: "remove issue link from readme, that does not matter once project is up". Dropped: - The `Tracks [hyperhive#502](...)` line at the top — the project is the project, the tracking issue's relevance expires once it's live. - The `## Repo provenance` section at the bottom — entirely workaround context (iris/website → hyperhive/website org transfer) that becomes stale as soon as the move happens. Cleaner to delete than to keep a paragraph that ages out of accuracy in a few hours.
96 lines
3 KiB
Markdown
96 lines
3 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.
|
|
|
|
## Build
|
|
|
|
```sh
|
|
# 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.
|