Documentation / 3. Technology stack

Chapter 3

Technology stack

Runtime, storage, crypto, SSH, auth, styling, deploy.

Concrete runtime + library choices. Nothing exotic; every dependency is commodity infrastructure.

LayerChoiceWhy
RuntimeNode.js 22 LTSStable + supported; no experimental flags required.
FrameworkNext.js 16 (Turbopack)Pages + App Router hybrid. Turbopack dev-loop; production build via Next's own compiler.
UIReact 19 + TypeScript strictStrict TS catches whole categories of bugs at author time.
StorageSQLite via better-sqlite3 + versioned migrationsZero-ops durable state. WAL mode on. Postgres migration path reserved for T4.
Cryptolibsodium (wrappers + sumo-free)Envelope encryption for the secrets vault; secretstream for backups. Battle-tested primitives only.
Password hashingcrypto.scrypt from node:cryptoNo dependency; OWASP-recommended parameters (N=2^14, r=8, p=1).
Remote opsssh2 (JS)Pure Node implementation; no libssh linker headaches. Pooled connections via lib/ssh.ts (v0.7.8z14).
Chain RPC clientouronet-core (to be wired in, v0.8.x)First-party TypeScript client for StoaChain /chainweb/0.0/<ver>/chain/<c>/pact/local + /send endpoints. Retry + per-chain endpoint rotation + batched-tx helpers. Becomes load-bearing when the hub starts reading on-chain state directly (Baron qualification, verified_at stamping) and signing its own transactions (autonomous tx transmitter, v0.9.x).
AuthenticationMailcow IMAP + iron-session cookiesReal mailboxes for ancient/modern/baron; scrypt-hash fallback for operators. One active scope per session.
EmailMailcow DockerizedIndependent mail server on the same VPS. Standard IMAP/SMTP/SOGo webmail.
Content storageIPFS clusterBaron-tier pinning service (v1.0.x) + own-artefact repository (v1.1.x).
StylingTailwind CSS v4Brand tokens: gold #f0a500, black #0a0a0f, dark #0d1117. Inline utility classes.
Workertsx watch in dev, PM2 in prodSame entry point (worker/index.ts); PM2 restarts on crash + logs to stdout.
DeploymentHetzner-style VPS + PM2 + nginxSingle-server ops today. Let\’s Encrypt for TLS. Horizontal path reserved for T4+.
Observabilitystdout logs + PM2 + netdata on nodesStructured tracing + log-shipping are T3 work.

What we deliberately avoid

  • Native addons when a pure-JS alternative exists.
  • Runtime flags that mark us as “experimental” in Node.
  • Payment SDKs, exchange SDKs, broker libraries — we do not process payments, trade digital assets, or custody funds (see §0 Legal scope).