Documentation menu

flog.run website

The Primate application in web/ is the source for the flog website. The repository root declares it as a flog workspace, and flog.lock is the only JavaScript dependency lockfile.

Local verification#

Build the current flog executable, install exactly the locked dependencies, and run the production server checks:

go build -o ./flog ./cmd/flog
./flog install
./flog run --cwd web build
./flog run --cwd web check

The production image performs the same verification from a clean context. It builds flog from the checked-out source and runs plain flog install, which always requires the committed lock and can never bootstrap or rewrite it. The image does not invoke another JavaScript package manager. Build it from the repository root:

podman build -f web/Containerfile -t flog-web .

The /install route reads scripts/install directly. Its smoke test compares the response body byte-for-byte with that canonical file and also checks /, an unknown route, status codes, and response content types.

Documentation pages#

The /docs section renders the repository's Markdown files in this directory on the server. web/lib/docs.js defines the stable route, navigation label, and short description for each canonical file; it does not contain a second copy of the documentation prose. Add or rename a public page by updating that map and the Markdown file together.

Documentation navigation is ordinary server-rendered HTML. The desktop sidebar and narrow-screen disclosure menu require no client-side JavaScript. The production image copies /docs beside the application so the same reviewed Markdown is served in local, container, and deployed builds.

Repopack App#

web/repopack-app.json is the versioned App blueprint. The production runner listens on port 6161 and needs no secrets or persistent volumes. The Repopack App uses the reserved platform origin https://flog.repopack.app.

Deploy only a pushed commit SHA, and expose flog.run only from reviewed master. Configure automatic deployments from master so a task-branch deployment at the platform origin is replaced after merge rather than becoming a second release path.

flog.run DNS and TLS#

Changing public DNS is a separate operator action and is not performed by the repository build or deployment:

  1. Verify /, /install, and installer byte equality at https://flog.repopack.app.
  2. Add flog.run as a custom domain in the hosting control plane and record the exact DNS target and ownership records it provides.
  3. Add those records at the authoritative DNS provider. Do not proxy or cache /install while domain validation is pending.
  4. Wait for the hosting control plane to report a valid certificate for flog.run, then verify HTTPS and redirect any HTTP request to HTTPS.
  5. Compare curl -fsSL https://flog.run/install with scripts/install before publishing the domain as the canonical installation endpoint.

Keep the platform origin available for rollback and health checks. TLS private keys belong to the hosting platform and must not be committed to this repository.