SEO + GEO mašina

Technical description

Node 22 + Express 4, the database is SQLite through `sql.js` (a single file), findings and proofs are append-only JSONL. The new interface is plain HTML/CSS/JS with no build step, served by the same process under `/novi`.

How to run it

npm ci                                   # 29 zavisnosti
PORT=3100 node server.js                 # normalan rad (baza database.sqlite)

# demo režim (sintetički podaci, bez prave baze)
SEOGEO_DEMO=1 SEOGEO_DATA_DIR=data-demo PORT=3100 node server.js

node data-demo/seed-demo.mjs http://127.0.0.1:3100   # napuni demo
node _qa/smoke.mjs                                   # 18/18 provera (testovi)
node ui/build-pages.mjs                              # regeneriši landing i opis

API

methodpathwhat it does
GET/api/novi/pregledclients + findings + proofs + what waits (one cockpit input)
GET/api/novi/klijenticlient list (demo or database)
GET/api/novi/nalazi?klijentId=findings with source and hash
POST/api/novi/nalazirecord a finding — the server computes the hash
GET/api/novi/dokazi?klijentId=before → after proofs
POST/api/novi/dokazirecord a proof for a finding
GET/api/novi/summary?klijentId=how many findings, how many proven
GET/api/healthliveness (existing route)

Data

Limits — what this demo does not do

How it is deployed

One Node process behind nginx, a systemd unit, Let’s Encrypt, demo mode through env. Recipe: E:\poslovi\DEMO-REGISTAR.md.

The demo does not spend money on a model: it runs on synthetic data with no keys set.