Orbit is built on libraries you'd pick anyway. Pick your frontend framework at scaffold time. Swap billing, jobs, email, or uploads by replacing one adapter — each lives behind a port.
Pick one — or keep both. Framework is chosen at scaffold time.
App Router + Turbopack. Server components, server actions, the usual.
Vite + TanStack Router file-based routes. Fully client-first with an SSR story.
Shared across both shells. Strict mode on.
New engine, design tokens in CSS, no tailwind.config.js.
~55 accessible components in packages/ui, yours to own and extend.
Server state + typed client routing (Router on the Start shell).
Hono on Node, typed end-to-end. No framework magic.
Fast, type-safe routing. Node adapter + WS upgrade.
Strict settings across every workspace.
Runtime validation at the HTTP boundary.
Native WebSocket server for the realtime hub.
One Postgres database, one Prisma schema, branded IDs throughout.
You bring the database. Any Postgres works.
Schema, migrations, generated client in apps/api.
Typed branded IDs: ws_*, team_*, mbr_*, sub_*, etc.
better-auth does the hard parts. Providers are feature-flagged.
Sessions, cookies, OAuth, magic link, admin plugin.
Passwordless email. Dev endpoint logs the URL in console.
Google + Apple wired in. Buttons hide when creds are missing.
Optional. Stored on the accounts table.
Subscriptions behind a BillingProvider port. Pick one adapter.
The default. Checkout, portal, subscription webhooks.
Merchant-of-record, indie-friendly pricing.
Merchant-of-record via a Stainless-generated SDK.
Append-only row-per-webhook, idempotent and audit-friendly.
Mailer is a port. Templates are plain React components.
Default adapter. Swap for anything that sends mail.
Components for magic-link and invite templates.
Fallback adapter used in dev — emails print to stdout.
Background work behind a JobQueue / JobRuntime pair.
Postgres-backed queue with cron. Zero extra infra.
Managed HTTP queue. Great for serverless.
Inline execution for tests and seeds.
One provider today, pluggable via an Uploads bounded context.
Presigned uploads, typed router, avatars out of the box.
The bits that make a monorepo actually work.
Pipelines for dev, build, typecheck, lint.
Dev server for the TanStack shells and www.
Unit + integration tests for the api workspace.
Zero-config TypeScript runner for api dev and scripts.
Small choices you don't have to re-make.
Icon set used across ui and www.
Variable fonts, self-hosted via @fontsource-variable.
Variant APIs for the ui package.