Skip to content

Under the hood

The ShareWell stack.

Boring where it should be, sharp where it counts. One language front to back, one runtime, one file for state, and a fleet of Claude agents on top.

Claude agents

the performers

The app · SvelteKit + Svelte 5

the web app

Bun

runtime · packages · tests

Drizzle ORM

the data layer

SQLite + PostgreSQL

the stores

▪ the tower conducts itself from the top

The pieces

Twelve tools. No spares.

Each one earns its place. None of it is here because a template put it there.

Svelte 5 + SvelteKit

Remote functions and runes: the UI talks to the server with no API layer to design, version or drift.

Bun

Runtime, package manager, test runner and SQLite driver in one binary. Four toolchains retired.

TypeScript

One language front to back. Agents never switch context, and neither do you.

Tailwind CSS v4

Design tokens live in CSS. Every product in the suite shares one visual system.

Drizzle ORM

Typed queries over a self-creating store. The database appears on first boot, and the schema lives in code.

SQLite

The local store, via bun:sqlite. Zero setup, zero ops, one file to back up.

PostgreSQL

The system of record behind the product. Boring, durable, correct.

Python + uv

The backend APIs and Releaser. uv makes every install deterministic for humans and agents alike.

Claude

The performers. Fleets of coding agents, one per worktree, conducted and never merging.

Grafana + OTEL

The otel-lgtm container: logs, traces and metrics for every agent in one pane on :3000.

Sentry

Errors arrive as tasks with the trace attached, so the report and the fix share a page.

GitHub

Issue sync, PRs and releases via gh. The public face of a deterministic pipeline.

plus uv and OpenTelemetry doing quiet, load-bearing work.

Why it works

Why the stack is the way it is.

01

Uniform repos make fleets possible.

Every repo looks the same to an agent: bun or uv, conventional commits, releaser to ship. An agent dropped into any worktree already knows where everything is. That sameness is what buys the throughput.

02

No seams for drift to live in.

Remote functions replace the REST layer between UI and server. The schema lives in code next to the queries. When there is no gap between the layers, there is nothing to fall into it.

03

Boring on purpose.

A SQLite file, a systemd user service, one observability container. The stack has fewer moving parts than the fleet it conducts, which is exactly the ratio you want.

▪ shipping deterministic orchestration

Take the podium.