Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
50 lines
2.3 KiB
Markdown
50 lines
2.3 KiB
Markdown
# questions (redoal.com)
|
|
|
|
The content behind [redoal.com](https://redoal.com) — a second face of
|
|
the same [portal](https://project.uhhm.no/uhhm/portal) question engine
|
|
that serves uhhm.no. Every page is a YAML file under `questions/`;
|
|
pushing to `main` lints and then tells every running portal instance
|
|
to hot-reload.
|
|
|
|
The full schema reference lives in
|
|
[uhhm/questions' README](https://project.uhhm.no/uhhm/questions) —
|
|
this repo only notes what's distinctive here:
|
|
|
|
- **`site.yaml`** rebrands the instance: title `redoal`, its own
|
|
wordmark, and a `gesture` hero — the landing page opens on a
|
|
drawing canvas wired to `wss://relay.redoal.com` (the
|
|
`redoal-relay` crate in [redoal/redoal](https://project.uhhm.no/redoal/redoal)),
|
|
so visitors' similar strokes echo to each other live. The wordmark
|
|
is white-stroked like uhhm's, because portal's light theme lands
|
|
wordmarks as ink via an invert filter.
|
|
- **`type: gesture`** on `index.yaml`'s "Our Understanding" — the
|
|
pseudo edition of the network: draw a path, it becomes a real
|
|
20-byte gesture key (computed by the relay with the canonical Rust
|
|
pipeline), and the submitted answer stores `{points, key}` in the
|
|
`redoal_gestures` bucket. Marked `optional: true` deliberately:
|
|
the widget's hidden input is invisible to HTML required-validation.
|
|
- **`gitea_releases`** on "Our Composition" — advertises
|
|
redoal/redoal's releases. The jq filter pins `url: null` while that
|
|
repo is private (a private release's html_url 404s for anonymous
|
|
visitors); flip it to `.html_url` if the repo ever goes public.
|
|
- **Bucket names are `redoal_`-prefixed** (`redoal_gestures`,
|
|
`redoal_subscribers`): both portal instances share one NATS
|
|
JetStream, and bare names would collide with uhhm's buckets.
|
|
|
|
This repo also runs the redoal.com instance itself:
|
|
`.gitea/workflows/deploy.yml` pins `PORTAL_RELEASE` to a release tag
|
|
on uhhm/portal — bump the pin and push to upgrade (or revert to roll
|
|
back), and the workflow ships the artifact, rewrites the env from
|
|
this repo's Actions variables/secrets, restarts `app@redoal-portal`,
|
|
and refreshes the Caddy route. Content edits never need a deploy;
|
|
they hot-reload live.
|
|
|
|
Lint locally before pushing:
|
|
|
|
```
|
|
/srv/app/redoal-portal/current/question_lint --path questions
|
|
```
|
|
|
|
(or from a portal checkout:
|
|
`cargo run --features ssr --bin question_lint -- --path <this repo>/questions`)
|