Stack
The libraries and services Outdraft uses — including the Railway worker behind background mail jobs — and why they were chosen.
What this page covers
Stack is the short map of what Outdraft is built on, and why those pieces are in the product. It is not an inventory of every library, and it is not a deploy runbook. For how the pieces fit as layers, see Architecture · Overview.
Foundations
Most of the product sits on four foundations: the application surface, durable data and auth, background jobs, and the path to the public email network.
- 01
Next.js & React
The application surface — marketing, the signed-in workspace, Settings, and this documentation. Server-rendered routes and API handlers keep user actions at a clear edge between the browser and the rest of the system.
- 02
Supabase
Auth, Postgres, Storage, Realtime, and server routines. This is where accounts, messages, mailbox state, organizations, teams, nests, and delivery progress stay durable — and where live updates reach the client.
- 03
Background jobs
A dedicated worker on Railway runs organization and team fanout, scheduled and personal delivery, mailbox cleanup, and related billing jobs. Queue data stays on private Redis inside that environment — the browser never talks to it.
- 04
Email delivery
Outbound mail to the wider network and inbound events back into Outdraft inboxes. The product owns compose, storage, and mailbox experience; a dedicated delivery layer connects that experience to external addresses.
Why these foundations
Outdraft needs a fast web app, a trustworthy place for mail and membership data, a worker that can finish delivery after the request returns, and a reliable way to exchange mail with addresses outside Outdraft. Keeping those as separate foundations is what lets the workspace stay product-shaped — compose, inbox, projects, nests — while delivery and storage remain clear behind the API.
TypeScript runs across that surface so the same domain language (messages, scopes, organizations) stays shared between client and server. The browser still does not write mail or membership rows directly; it calls APIs that enforce session and system rules. How those trust boundaries are enforced is covered in Security.
Libraries that shape the product
A few libraries show up in the experience often enough to call out — not because they define Outdraft, but because they make the product feel like a mail workspace rather than a generic CRUD app.
TanStack Query
Loads and refreshes server-backed data in the workspace so lists and detail views stay current without treating the browser as the source of truth.
Zustand
Holds lightweight client state for the signed-in session of the UI — selection, shells, and local session concerns that aren’t durable product data.
TipTap
The rich-text editor behind compose — so writing mail stays structured for display, send, and storage.
The visual system is built with a Tailwind-based component layer so marketing, the workspace, and documentation stay on one vocabulary of layout and interaction. Day-to-day screens and charts use that layer; it is plumbing for consistency, not a separate product surface.
How this maps to Architecture
Foundations here map onto Overview’s layers: Next.js covers both the client and API routes; background jobs are the Railway worker; Supabase is durable state; email delivery sits at the edge of the wider network. Stack names the choices; Architecture explains the boundaries between them — including personal, team, and organization scopes.
Read next
Continue with Security.