Josh Wright 2620239997
Some checks failed
Build / build (push) Has been cancelled
Update README.md
2026-03-27 23:13:12 -04:00
2026-03-27 23:11:28 -04:00
2026-03-27 22:57:13 -04:00
2026-03-27 22:57:13 -04:00
2026-03-27 23:11:28 -04:00
2026-03-27 23:11:28 -04:00
2026-03-27 22:57:13 -04:00
2026-03-27 23:11:28 -04:00
2026-03-27 23:13:12 -04:00

Catalyst

Instance registry for tracking infrastructure. Built as a single-page app — no backend, no framework.

Stack

  • sql.js — SQLite compiled to WebAssembly, runs entirely in the browser
  • localStorage — persists the database between sessions
  • nginx — serves the static files (via Docker)

Structure

index.html          Entry point
css/app.css         All styles
js/
  config.js         Service definitions and seed data
  db.js             Database layer (init, queries, mutations, persistence)
  ui.js             Rendering, modals, toast notifications
  app.js            Router and bootstrap
Dockerfile          nginx:alpine image
nginx.conf          SPA routing config (used by Dockerfile)

Running locally

Requires a local HTTP server — history.pushState routing won't work over file://.

npx serve . --single

Then open http://localhost:3000.

Building

Push to main. Gitea Actions builds and pushes two image tags to your registry:

Tag Use
:latest Always the current main
:<sha> Pinned to a specific commit (use for rollbacks)

Requires two things set in Gitea repository settings:

Key Type Value
REGISTRY_HOST Variable your Gitea hostname
GITEA_TOKEN Secret token with package:write scope

Running the container

docker run -d -p 3000:80 <registry>/catalyst:latest
Description
A lightweight instance registry for tracking self-hosted infrastructure
Readme 700 KiB
2026-03-28 21:01:27 -04:00
Languages
JavaScript 80%
CSS 13.4%
HTML 6.3%
Dockerfile 0.3%