Skip to Content
BackendOverview

Backend Overview

Tech Stack

LayerTechnology
RuntimeNode.js ≥ 20 (node:http — no framework)
LanguageTypeScript (ESM, run via tsx)
AuthWeb3Auth JWT verification
StorageNeon Postgres (JSONB) / In-memory
On-chainviem + @metamask/delegation-toolkit
AIVenice AI (deliverable verification)
Relayer1Shot (USDC-gas payouts)

Architecture

The backend uses no framework — routing is a string-split dispatcher in app.ts. Every domain is a vertical slice:

model (repository) → service (business logic) → route (HTTP handler) → wired in app.ts

Dependency Injection

createApp(options) lets every repository and service be overridden, so tests inject in-memory repos and never touch a database:

const server = createApp({ skipAuth: true, jobRepository: new InMemoryJobRepository(), // ... other overrides })

Key Files

FilePurposeSize
src/index.tsEntry point — starts server0.9 KB
src/app.tsHTTP server + DI + dispatch26 KB
src/config/Env config + chain registry10 KB
src/models/Repository layer (10 files)36 KB
src/services/Business logic (15 services)55 KB
src/routes/HTTP handlers (10 files)10 KB
Last updated on