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
| method | path | what it does |
|---|---|---|
GET | /api/novi/pregled | clients + findings + proofs + what waits (one cockpit input) |
GET | /api/novi/klijenti | client list (demo or database) |
GET | /api/novi/nalazi?klijentId= | findings with source and hash |
POST | /api/novi/nalazi | record a finding — the server computes the hash |
GET | /api/novi/dokazi?klijentId= | before → after proofs |
POST | /api/novi/dokazi | record a proof for a finding |
GET | /api/novi/summary?klijentId= | how many findings, how many proven |
GET | /api/health | liveness (existing route) |
Data
- database.sqlite — clients and state (unused in the demo)
- data/nalazi.jsonl and data/dokazi.jsonl — append-only, with hashes
- data-demo/ — synthetic clients, findings and proofs for the demo
- ui/ — the new interface (Pregled, Klijent, pages) + pages.mjs that generates them
Limits — what this demo does not do
- Tests cover the three money paths (18 checks: findings, proofs, releases, HTTP); parts outside that circle are verified by hand.
- Publishing is not automated: the machine drafts, a human releases (or Full Vidljivost picks it up from the release queue).
- The demo has no authentication and runs on synthetic data; the real database is not exposed.
- Legacy screens (workbench, analytics, v11, v15) still exist at their own addresses — the new interface does not remove them.
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.