Skip to content

System architecture

A single Viite Platform API (Hono, port 3000) fronts every vertical. Clients — the React dashboard and the CLI — talk to it through @abeauvois/platform-sdk. A durable pg-boss queue drives the unified Job engine, and everything persists to PostgreSQL.

┌─────────────────────────────────────────────────────────────┐
│ CLIENTS │
│ Dashboard (React + Vite) CLI (cleye) │
│ @abeauvois/platform-sdk @abeauvois/platform-sdk │
│ @abeauvois/platform-ui @abeauvois/platform-sdk-cli │
└───────────────────────────┬─────────────────────────────────┘
┌─────────────────────────────────────────────┐
│ Viite Platform API │
│ (Hono, Port 3000) │
│ │
│ Auth (better-auth) Config / Settings │
│ Jobs (presets, schedules, workers, │
│ StepRegistry) │
│ Ingestion (Gmail / web / CDP scraper) │
│ Social Blog Tasks Quotes Bookmarks │
│ Classifieds Notion export Gamification │
│ Skills Triage Activity Observation │
│ Bots (OpenClaw) Artifact (unified store) │
│ │
│ ┌───────────────────────────────────────┐ │
│ │ pg-boss (durable job queue) │ │
│ └───────────────────────────────────────┘ │
└───────────────────────┬─────────────────────┘
┌─────────────────────────────────────────────┐
│ PostgreSQL Database │
│ Users & Sessions Jobs & Schedules │
│ Social / Blog / Artifact drafts │
│ Tasks Quotes Bookmarks Settings │
│ Ingestion watermarks Observations │
│ pgboss.* (queue, runtime-managed) │
└─────────────────────────────────────────────┘

Technology stack

CategoryTechnology
RuntimeBun
LanguageTypeScript
BackendHono (lightweight HTTP framework)
FrontendReact 19 + Vite + TailwindCSS
RoutingTanStack Router
StateTanStack React Query
DatabasePostgreSQL + Drizzle ORM
Authbetter-auth (with bearer plugin)
Job queuepg-boss (drives the unified Job engine)

Authentication flow

The Viite Platform API is the central auth provider. On sign-in it issues a session cookie (same-origin web apps) and a bearer token (CLI / cross-origin). userId is threaded through every vertical’s repositories for multi-tenancy — see Tenancy.

Continue with the hexagonal model that keeps the domain infrastructure-free.