Texas Nova · How It Works

solution architecture · component wiring ← back to the map
browser · hypermedia client datastar maplibre gl imperative map sources.json Texas RSS · WebSub deepcrawl JSONL Texas Nova Go · one binary · 9.4 MB (stripped) rssfeed poller WebSub push · jittered GETs ingest + geo RON + merge-patch normalization · ron-go stardust client Transact · Events chi · templ · datastar server-rendered fragments reactor Datalog intent flips stardust-db RSS / JSONL transact · canonical RON event bus SSE /nova/events text/event-stream GET /api/*.geojson
canonical RON merge-patch writes realtime SSE (text/event-stream) Stardust transaction event bus plain HTTP
Stardust 0.0.8 · latest available Datastar v1.0.2 · latest Go 1.26 · stdlib crypto only 9.4 MB stripped binary ~240 KB gzipped first load — maplibre 221 KB · datastar 13 KB · page 5 KB

On the wire

News items are normalized into canonical RON by ingest + geo (ron-go), then written with one client call. Idempotent: identical fields fold as unchanged, null retracts.

{48453 {countyId '48453' name Travis intent monitor
       population 1290638
       signals { <unix-published> {headline url sentiment published {#utc ...}} }}
find [?id ?name ?intent]
where [
  [?id countyId ?cid]
  [?id name ?name]
  [?id intent ?intent]
]
orderBy [?intent ?name]
Compaction by design The store stays a compact fact set, not a growing event log.
Realtime without polling Event bus → one SSE connection; reconnects replay from Last-Event-ID.
Lightweight end to end One 9.4 MB binary; no framework, no bundler, no hydration.