Stop spending the first ten weeks rebuilding the same six services. Start where the actual product begins.
Built with the stack senior engineers ship on.
Four surfaces, one registry. Each surface ships with the same contracts, the same patterns, and the same guarantees, whether you build it yourself or ship with us.
Who it's for
SaaS founders
Reach your first paying customer in 30 days, with contracts you can extend. One stack, six providers, the same typed contracts and audit trail across every surface.
Learn more
Enterprise teams
Skip the internal platform build. Use ours, with the same contracts, the same guarantees, the same audit trail across every service, every provider, every team.
Learn more
AI-native teams
Templates an agent reads as well as you do. MCP-ready, typed end-to-end, no plumbing to invent. One command to scaffold, your agent runs it.
Learn more
Explorer
{
"name": "next-monorepo",
"private": true,
"scripts": {
"dev": "turbo dev",
"build": "turbo build",
"lint": "turbo lint"
},
"packageManager": "pnpm@9.12.0"
}Terminal
The DeesseJS CLI
Run one command and the CLI clones the template, installs its dependencies, and leaves you with a working project you can configure and start. Pick a different template slug to bring a different surface into your workspace.
Choose a template, initialize it with the CLI, then inspect the result.
Run$ deessejs init saas-starterfrom your terminal.
What this command does
$ deessejs init saas-starterTemplate
saas-starter
Init does
Project
saas-starter/ ├── package.json └── src/
Then run pnpm dev.
Inspect: deessejs info saas-starter
Read the CLI guideThe runtime half of every contract: typed errors, durable RPC, typed collections, and functional primitives. Each one runs behind the same boundary your templates already import, so the same handler signature compiles in five frameworks and one agent.
import { Errors, Schema } from "@deessejs/errors"
class UserNotFound extends Errors.TaggedError("UserNotFound")({
userId: Schema.String,
}) {}
const findUser = (id: string) => {
const user = db.user.find(id)
if (!user) throw new UserNotFound({ userId: id })
return user
}
export const route = Errors.handle(findUser, {
UserNotFound: ({ userId }) => ({ status: 404, body: { userId } }),
})Plays well with
Every template is wired against the 6 contracts, not a fixed set of brands. Run the frameworks, hosts, and providers your team already knows.
The default surface for every Pro template, with server components, App Router, and the edge runtime.
Island architecture for marketing surfaces and docs sites that ship near-zero JS by default.
The contract layer is React-typed. Any React-compatible framework consumes the same templates.
Supported via the same oRPC procedure types. Bind the same contracts from a Vue front-end.
Default deploy target. Edge functions, ISR, and preview deployments out of the box.
Workers, R2, Queues, D1. The templates deploy to Cloudflare without code changes.
Any wire-compatible host works. The Drizzle schema is the source of truth, ported anywhere.
Default billing provider. Subscriptions, usage metering, and webhooks via the Billing contract.
CLI · Command
$ deessejs init saas-starterCoding agents
Every template ships with the contracts your coding agent reads, typed at every boundary, AGENTS.md at the monorepo root, an MCP manifest for the tools. Pick the CLI; the contracts stay the same.
The agent reads AGENTS.md at the root, picks the right template, and runs the init for you. You start the dev server from a clean checkout.
Ask for traces, logs, and metrics in plain language. The agent wires the contract end-to-end without you touching a config file.
Migrate off Better Auth to Clerk mid-project without rewriting call sites. The agent reads the contract, verifies the new provider, and swaps the adapter.
Patterns from the registry we build and ship: explicit types at every boundary, contracts before implementation, and sensible defaults for the tedious parts. Short, tested in real templates, and free to copy.
Answers to common questions about the registry, the contracts, and shipping with us. If you have any other questions, please reach out.
Ready to ship?
Browse the registry to pick a template. Or talk to our delivery team. Same templates, same contracts, same guarantees.