14 Commits

Author SHA1 Message Date
99483d90ca feat: rename to the qapi console, and deploy it to oolon
The console is now **qapi console**, served at https://qapi.blackbeard.observer.
The papi logo and the upstream licence stay: this is a fork of
polkadot-api/papi-console, not a rewrite, and the sidebar link points at our
fork rather than theirs.

Deployment follows architecture/deployment-gitea-actions.md — the workflow is
the source of infra truth, and one-time host provisioning is an operator script:

  script/infra-setup.sh   dns  -> the Cloudflare CNAME to bl.thgttg.com
                          cert -> Let's Encrypt, DNS-01, ECDSA
                          edge -> gitea_ci, scoped sudoers, webroot, vhosts

  .gitea/workflows/deploy.yaml   build (pnpm) -> rsync the bundle -> reload

The roles run in that order because certbot uses a DNS-01 challenge and nginx
fails its config test on a missing ssl_certificate — which would block every
reload on a SHARED proxy, not just this vhost. The same reasoning bounds what CI
may do: the sudoers drop-in grants rsync into one webroot, restorecon on it,
a config test and a reload. No certbot, no /etc/letsencrypt, no sites-available
write, no useradd.

Two vhosts, per architecture/reverse-proxies.md: the public one on the https
tier at 127.0.0.1:14443 behind the stream SNI router that owns TCP 443 (binding
443 directly is undetectable by `nginx -t` and ends with nginx silently serving
stale certificates), and a qapi.internal one for mesh clients, which stays
disabled until someone mints its internal certificate.

There is no application host and no upstream: the console is a static SPA that
opens WebSockets straight from the browser to the chains' own RPC endpoints.

The build gate is `pnpm build` (tsc -b + vite build) plus a check that the
signers-common patch is applied to the copy node actually resolves. Without that
patch every signing attempt dies with `Unkown signer` in a browser, after
deploy, in front of a user — and a lockfile drift is all it would take.

`pnpm lint` is deliberately not in the gate: it is broken upstream and was
before this fork touched anything (typescript-eslint 8.69 refuses to load
against the TypeScript 7.0 this repo resolves).

Live and verified: the public name answers 200 with this console's title over
the WAN address, serving the Let's Encrypt certificate for it, and the whole
deploy path — rsync as gitea_ci through the scoped sudoers, restorecon, config
test, reload, fetch — has been run by hand end to end.

Refs #3

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012uDUodEcRbBwNRi3UCmw8f
2026-09-16 08:42:06 +03:00
Victor Oliva
5de5e19f70 chore: remove fathom (#116) 2025-12-16 02:38:42 +01:00
Victor Oliva
b3214684bf style: cleanup styles towards more default ones (#95)
* cleanup styles towards more default ones

* make inputs less prominent
2025-11-05 14:08:08 +01:00
Josep M Sobrepere
02233befd3 ustart using fantom 2024-11-12 09:11:46 +03:00
Carlo Sala
ed5ac6ca37 icon 2024-11-10 10:20:03 +07:00
Victor Oliva
f585308e64 invert highlight on finalized table 2024-11-09 09:26:30 +07:00
Victor Oliva
0bdb3d2bb0 reduce color set to shadcn themeing 2024-11-08 23:17:25 +07:00
ArcherDilunaire
befd2dffee WIP edit view 2024-11-07 12:16:36 +02:00
Victor Oliva
08f9855804 quickfix shadcn-ui theme 2024-11-06 15:21:13 +01:00
ArcherDilunaire
4824b186aa style changes 2024-11-05 14:12:35 +02:00
Victor Oliva
5c4fccb11e add router 2024-10-22 16:20:30 +02:00
Victor Oliva
f2ee28e154 bring theme and codec-components library 2024-10-22 15:31:20 +02:00
Victor Oliva
9b6c0b3622 cleanup vite starter 2024-10-22 14:39:04 +02:00
Victor Oliva
b1dc4884e8 Initial commit from vite 2024-10-22 14:29:38 +02:00