DeesseJS
  • Enterprise
  • Pricing
DeesseJS logoDeesseJS

Software engineering as a commodity: agents that code, workflows that scale, infrastructure that works. Built with the DeesseJS ecosystem.

Ecosystem

  • Errors
  • DRPC
  • Collections
  • FP

Learn

  • Docs
  • Blog
  • Changelog
  • Knowledge Base

Use cases

  • SaaS apps
  • AI products
  • Landing pages
  • API backends
  • Internal tools

Company

  • About
  • Manifesto
  • Principles
  • Vision
  • Enterprise
  • Delivery
  • Help

Legal & Trust

  • Privacy
  • Terms
  • Cookies
  • DPA
  • Security

Community

  • Open Source Program
  • Github
  • LinkedIn
  • X

Explore

  • Customers
  • Templates
  • Ecosystem
  • Stack
© 2026 DeesseJS. All rights reserved.
Introducing intelligent code generation

The registry that shortens your time to production.

Stop spending the first ten weeks rebuilding the same six services. Start where the actual product begins.

Browse templatesTalk to an expert

Built with the stack senior engineers ship on.

Next.js
Better Auth
Drizzle
Stripe
Postgres
Cloudflare
Resend
OpenAI
Surfaces
Explore all surfaces

Pick the surface. Get the convention.

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

The same registry. Three doors in.

SaaS founders

Skip 10 weeks of infra.

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

Stop rebuilding the same eight services.

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

Ship with your agent, not against it.

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

saas-starter
AGENTS.md
README.md
package.json
apps
app
docs
web
packages
api
auth
database
ui
utils
pnpm-workspace.yaml
turbo.json
{
  "name": "next-monorepo",
  "private": true,
  "scripts": {
    "dev": "turbo dev",
    "build": "turbo build",
    "lint": "turbo lint"
  },
  "packageManager": "pnpm@9.12.0"
}

Terminal

$ deessejs init saas-starter
✔ Cloned into ./saas-starter
✔ Detected package manager: pnpm
✔ Dependencies installed
$ pnpm dev

The DeesseJS CLI

From registry to working project.

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.

Read the install guide

What this command does

$ deessejs init saas-starter

Template

saas-starter

Init does

  1. Clone the template repo
  2. Detect your package manager
  3. Install dependencies

Project

saas-starter/
├── package.json
└── src/

Then run pnpm dev.

Inspect: deessejs info saas-starter

Read the CLI guide
The ecosystem
See the ecosystem

The tools your templates ship with

The 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

Bring the stack you already use.

Every template is wired against the 6 contracts, not a fixed set of brands. Run the frameworks, hosts, and providers your team already knows.

  • Deploy automatically from git or with the CLI. No extra config.
  • Wide range support for the most popular frameworks and hosts.
  • Typed contracts at every boundary, so your agent and your IDE stay in sync.
  • Bring your own auth: Better Auth, Clerk, Auth0, Lucia, or your own provider.
Browse the stack

Next.js

The default surface for every Pro template, with server components, App Router, and the edge runtime.

Astro

Island architecture for marketing surfaces and docs sites that ship near-zero JS by default.

React

The contract layer is React-typed. Any React-compatible framework consumes the same templates.

Vue

Supported via the same oRPC procedure types. Bind the same contracts from a Vue front-end.

Vercel

Default deploy target. Edge functions, ISR, and preview deployments out of the box.

Cloudflare

Workers, R2, Queues, D1. The templates deploy to Cloudflare without code changes.

Postgres

Any wire-compatible host works. The Drizzle schema is the source of truth, ported anywhere.

Stripe

Default billing provider. Subscriptions, usage metering, and webhooks via the Billing contract.

S

Initialize a saas-starter template from the registry.

Reading the registry, detecting your package manager. Here's the plan: clone the template, detect your package manager, install dependencies.

CLI · Command

$ deessejs init saas-starter
  • ✓ Cloned into ./saas-starter
  • ✓ Detected package manager: pnpm
  • ✓ Installed 487 packages

Project ready. Run pnpm dev to start the server.

Coding agents

Works with any coding agent.

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.

Initialize a template

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.

Add observability

Ask for traces, logs, and metrics in plain language. The agent wires the contract end-to-end without you touching a config file.

Swap a contract

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.

  • Claude Code
  • Codex
  • Pi
  • Cursor
  • Grok
  • OpenCode
Latest guides
See all guides

From the knowledge base.

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.

import { defineQueue, worker } from "@deessejs/jobs"

export const sendEmail = defineQueue("send-email")

worker(sendEmail, async (job) => {
  await resend.emails.send({
    to: job.to,
    subject: job.subject,
  })
})

Run background jobs

Queue and worker patterns for async work outside your request path.

David Pereira1 min read
import { defineConfig } from "@deessejs/config"

export default defineConfig({
  deploy: { target: "vercel", region: "fra1" },
  env: { DATABASE_URL: "vercel-postgres://…" },
  build: { command: "pnpm build" },
})

Deploy to Vercel

Connect your repo, configure environments, and run your first production build.

David Pereira2 min read
import { defineAgent } from "@deessejs/agent"
import { createDRPCClient } from "@deessejs/drpc"

export const summariser = defineAgent({
  name: "summariser",
  transport: createDRPCClient({ endpoint: env.DRPC_URL }),
  tools: [summariseTool, classifyTool],
})

Build your first agent stack

Compose an AI agent with the SDK, a tool registry, and a streaming endpoint.

David Pereira1 min read
npm install -g deessejs
deessejs init my-app --template nextjs-saas
deessejs dev

Install the deessejs CLI

Set up the CLI, authenticate, and discover templates from the registry.

David Pereira1 min read
import { createRetrievalPipeline } from "@deessejs/rag"

const pipeline = createRetrievalPipeline({
  store: pgvector("articles"),
  embed: openai("text-embedding-3-small"),
  rerank: cohere("rerank-english-v3.0"),
})

const hits = await pipeline.query("how does auth work?")

Use the Next.js RAG template

From the templates registry to a streaming chat endpoint with embeddings.

David Pereira1 min read
import { trace, span } from "@deessejs/observability"

export const handleRequest = trace("http", async (req) =>
  span("auth.check", async () => ensureUser(req)),
)

Add observability

Logs, traces, and metrics — the three signals that catch production issues.

David Pereira1 min read
import { defineSchema, table, col } from "@deessejs/database"

export default defineSchema({
  users: table({
    id: col.uuid().primary(),
    email: col.text().unique(),
    createdAt: col.timestamp().defaultNow(),
  }),
})

Manage Postgres migrations

Drizzle migrations in CI, rollback, zero-downtime schema changes.

David Pereira1 min read
// before launching
await checks.verify([
  checks.secrets.env(),
  checks.db.migrations(),
  checks.billing.stripeWebhook(),
  checks.auth.rateLimit(),
  checks.queue.dlqDrained(),
])

Production readiness checklist

Auth, secrets, observability, rate limits — what to verify.

David Pereira1 min read

Frequently asked questions.

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?

Use the templates. Or ship with us.

Browse the registry to pick a template. Or talk to our delivery team. Same templates, same contracts, same guarantees.

Browse the registryTalk to delivery