I open-sourced my SaaS starter — here's the part I didn't
Source: Dev.to
What you get for free
npm create orb@latest my-app
- API – A Hono API with proper DDD layering (bounded contexts, repositories, a UnitOfWork, an EventBus). Not because DDD is trendy, but because it’s the structure I keep arriving at when a SaaS moves past the toy stage.
- Multi‑tenant workspaces – The root primitive, with members and a workspace‑scoped PBAC system. Two‑scope permissions (workspace + team) baked in, with
requirePermission()middleware on the server anduseCan()on the client. - Auth – Powered by
better-auth(magic links, OAuth, password + email verification). - Frontend choice – Either TanStack Start or Next.js App Router. The CLI deletes the one you didn’t pick. Both share the UI library and the WebSocket client; per‑page code is duplicated intentionally so each variant stays idiomatic to its framework.
- Database – PostgreSQL via Prisma.
- Realtime – WebSockets.
- Dev utilities – An in‑memory rate limiter for development.
- UI library – 55‑component internal library built on Base UI + Tailwind v4 (see coss.com).
- Login & onboarding – A beautiful login page and onboarding flow tailored to creating your workspace.
All of this is a real SaaS skeleton you can ship. The source is on GitHub under the MIT license.
What’s behind the paywall
The following features are not included in the free starter:
- Teams – Nested inside workspaces, with their own roles and permissions.
- Billing – Stripe, Polar, and Dodo adapters behind a
BillingProviderport. - Audit logs – Global (admin) and tenant‑scoped ledgers, materialized by a post‑commit projector.
- Uploads –
UploadThingadapter behind aFileStorageport. - Transactional email –
Resendadapter behind aMailerport. - Background jobs – Graphile Worker or QStash, swappable.
- Remote rate limiting – Upstash or Unkey adapters.
- Alternative ORM – Drizzle as an alternative to Prisma (same repository interfaces, same UnitOfWork).
- Waitlist mode – For closed‑beta launches.
These components rely on many design decisions specific to my DDD approach.
I work at Cal.com as my day job—feel free to book me for anything tech‑related.