The TypeScript starter kit from jxd.dev

Ship the product, not the plumbing.

Onyx is a full-stack TypeScript starter on Cloudflare: auth, organizations, billing, a public API, realtime, AI, and background work. Wired together, typed end to end, and tested.

onyx-web / one Worker

Web appPublic APIAuthAI agentRealtimeJobsCronsWorkflows

Bound to

D1R2QueuesDurable Objects

Built on

  • Cloudflare
  • TanStack Start
  • React 19
  • Drizzle + D1
  • Better Auth
  • Stripe
  • Tailwind CSS v4
  • Vite+

01 / Features

Authentication
Email and password on Better Auth, with verification and password reset flows.
Organizations
Teams with invitations, roles, member management, and an org switcher.
Billing
Stripe subscriptions per organization: per-seat pricing and plan guards at every layer.
Public API
Contract-first oRPC with API keys, OpenAPI docs, a typed npm client, and a CLI.
Realtime
Collaborative notes, live task lists, and presence on Durable Objects.
AI assistant
A chat agent on the Cloudflare Agents SDK, shipped as a working paid feature.
Background work
Cron triggers, typed queue-backed jobs, and durable multi-step workflows.
Files and email
R2 uploads through files-sdk and React Email templates delivered with Resend.
Notifications
An in-app feed with realtime updates plus batched email digests.
Tested and typed
Playwright end-to-end coverage, Vitest, CI bundle budgets, and strict TypeScript.

02 / Architecture

Everything deploys as a single Cloudflare Worker: the app, the API, auth, jobs, crons, and workflows. One deploy, one log stream, and no service mesh between you and production. Cloudflare's primitives replace the usual fleet of services.

D1
Relational data behind a typed Drizzle schema.
R2
File storage for uploads, wired through files-sdk.
Queues
Typed background jobs with a dead-letter queue.
Durable Objects
Realtime rooms, presence, notifications, and the AI agent.
Cron Triggers
Scheduled jobs, registered in code and merged into the deploy.
Workflows
Durable multi-step processes that survive restarts.

Read the architecture post

03 / Workflow

Local dev simulates the whole platform: the database, storage, queues, Durable Objects, cron triggers, and workflows all run on your machine with no cloud account. Foundations only stay healthy where they can be exercised.

vp install

vp run dev

# D1, R2, Queues, DOs, crons, and workflows, simulated locally

➜ http://localhost:3000

Playwright covers the real journeys, Vitest covers the units, and CI enforces types, tests, and bundle-size budgets on every push.

04 / Pricing

The template

£399one-time

Own the code. Build your product on it.

  • The complete repository, every package
  • The docs site, tests, and CI pipeline
  • A year of updates from the changelog

With an engagement

Includedwith every engagement

JXD builds your product on Onyx.

  • Weeks to production, not quarters
  • Senior engineering, no layers
  • Full handover: code, infra, knowledge

Pricing is provisional during early access. The full licensing terms come with the purchase.

05 / Questions

What exactly do I get?
The complete repository: the application, the docs site, every package, the Playwright and Vitest suites, and the CI pipeline. It runs locally with one command.
Do I need a Cloudflare account?
Not to build. Local dev simulates D1, R2, Queues, Durable Objects, crons, and workflows. You need an account when you deploy, and the free tier goes a long way.
Am I locked into Cloudflare?
Onyx is Cloudflare by default, portable by design. Capabilities live in focused packages behind small interfaces, so swapping the storage, database, or deploy target is contained work, not a rewrite.
How do updates arrive?
Onyx is the foundation JXD builds client products on, so it improves continuously. The changelog tracks every drop, and because you own the fork, you pull what you want when you want it.
Does it work with AI coding agents?
Yes, deliberately. Focused packages, per-package READMEs, a maintained CLAUDE.md, and typed contracts give agents the structure they need to make correct changes.
What is the license?
One purchase covers one product. The full terms come with the purchase; if you are unsure whether your use fits, ask hello@jxd.dev.

06 / Writing

Introducing Onyx

A full-stack TypeScript starter kit on Cloudflare. Auth, organizations, billing, a public API, realtime, AI, and background work, already wired together and tested.

2 min read

A whole SaaS on one Cloudflare Worker

App, API, auth, jobs, crons, workflows, realtime, and AI in a single deploy. How Onyx uses Cloudflare's primitives, and what that buys you.

2 min read

All posts

Next / Get Onyx

Start at the interesting part. Get the foundation, keep the repository, and ship your product on it.

hello@jxd.dev

Or start with the docs