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:
- Verify
/,/install, and installer byte equality athttps://flog.repopack.app. - Add
flog.runas a custom domain in the hosting control plane and record the exact DNS target and ownership records it provides. - Add those records at the authoritative DNS provider. Do not proxy or cache
/installwhile domain validation is pending. - Wait for the hosting control plane to report a valid certificate for
flog.run, then verify HTTPS and redirect any HTTP request to HTTPS. - Compare
curl -fsSL https://flog.run/installwithscripts/installbefore 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.