The service behind prometheus.x � standalone .x site that accepts app listings, scans binaries, and attaches signed scan reports.
Find a file
Local Dev 8e0830f046 prometheus: SVG icons for the 8 categories
Replaces the emoji glyphs (💬🛡️💸🎮🧰🎧⚙️✨) in the category grid with
dedicated SVG icons under /static/icons/cat-<slug>.svg, following the
same visual family as the sibling .x marks (theseus, sirius, ariadne,
pithos, aegis): 12-radius dark square + acid-green mark, legible at
16 px tab-icon size and 40 px grid size.

Designs chosen to not blur with the Silent Mode product icons also
rendered on the site:
  cat-communication  speech bubble + three dots (not an envelope — too
                     close to the Hephaestus letter imagery elsewhere)
  cat-privacy        shield + checkmark (DISTINCT from aegis.svg's
                     shield+chevron, so category + listing don't collide)
  cat-wallets        stacked coins + B serif (hints at the BCH coin)
  cat-games          stylised controller (d-pad + two action buttons)
  cat-devtools       code brackets < / > (reads as "code" at 16 px
                     where a wrench/hammer blurs with the Utilities gear)
  cat-media          play triangle in a circle (equally "player" and
                     "publish/broadcast")
  cat-utilities      gear with hollow centre (less visual weight than
                     the Media circle; the two side-by-side don't
                     crowd each other)
  cat-other          sparkle burst + two smaller sparkles (sibling of
                     sirius.svg's 4-point mark, extras so the two don't
                     look identical)

pages-browse.js: CATEGORIES[].icon is now the path to the SVG, not an
emoji string. The three places the icon rendered — grid card, category
hero, and the inline chip on listing detail — all now use <img> at the
size they need (40, 56, 14 respectively). The CSS entry
`.cat .ico` loses the font-size + grayscale (text styling) and gains
width/height for the image plus a tiny hover rotation that matches the
existing lift transform.

Also: when a listing has no `icon` of its own, the detail page's icon
slot now falls back to the category's SVG (centered + padded) instead
of a plain 📦 emoji, so the detail hero always has a vector icon.
2026-10-22 21:30:13 +03:00
deploy prometheus: rework snapshot timer unit for the docker deploy 2026-10-11 00:58:53 +02:00
public prometheus: SVG icons for the 8 categories 2026-10-22 21:30:13 +03:00
scripts prometheus: standalone identity + first-wave Silent Mode listings 2026-10-09 01:23:21 +02:00
service prometheus: SVG icons for the 8 categories 2026-10-22 21:30:13 +03:00
.gitignore prometheus: upload + ClamAV scan + signed scan reports 2026-10-05 22:41:55 +02:00
package-lock.json prometheus: signed listings — BIP-137 publisher sign, SQLite index 2026-10-08 01:48:12 +02:00
package.json prometheus: signed listings — BIP-137 publisher sign, SQLite index 2026-10-08 01:48:12 +02:00
README.md prometheus: scaffold the standalone service — pages, routing, static assets 2026-10-05 22:22:47 +02:00

Prometheus

The service behind prometheus.x — a standalone website that accepts app listings, scans the binaries, generates APS1 records for publishers to sign, and serves the browse pages.

The architecture decisions and the reasoning behind them live at _coordination/sessions/prometheus-x-architecture.md. Read that before touching the code; it answers the questions this directory otherwise invites ("why isn't this on Sia?", "why isn't the admin on another subdomain?", "why Node?").

service/     Node HTTP server, templates, scanner, storage, payments
public/      Static assets served under /static/
content/     Prose content in a form the templates render into pages

Run it locally

cd Prometheus
npm install          # none yet; placeholder for when deps show up
node service/server.js

Opens on http://127.0.0.1:3700 by default. Override with PORT=xxxx.

Layout

The server is one node:http listener behind a trivial map-based router. Pages are plain functions that return {title, description, body} and layout() wraps them in the common document shell. Static files under public/ are served directly.

There's no framework and no templating engine on purpose — a site this small does not earn a dependency surface, and the response-rendering path is short enough to read at a glance.