The first week of every SaaS,already built.

Auth, database, AI, translations and tests come wired. You start on your product, not on groundwork.

npx @edd_remonts/create-edd-app my-product

The first weeks always disappear into the same work

Sign-in flows, folder structure, test runners, Docker. None of it makes your product different, and all of it can go wrong. Here is what the template takes off your plate.

Authentication

With the template

Better Auth and Clerk arrive pre-configured. Database sessions work in minutes.

From scratch

A day or two lost to endpoints, JWTs, cookie flags, middleware and user tables.

Architecture

With the template

Self-contained modules behind one barrel import. New features can't tangle with old ones.

From scratch

A folder layout improvised under deadline, refactored painfully six months in.

Testing

With the template

Vitest and Playwright run out of the box, with smoke tests covering real routes.

From scratch

Hours of config files, runners, database seeding and CI before the first useful test.

AI streaming

With the template

Server-sent events and a chat UI are already built, with five providers to choose from.

From scratch

Hand-rolling chunk parsing, retry logic and streaming state for every provider.

Deployment

With the template

Multi-profile Docker Compose for the app, Postgres and ChromaDB, ready for any VPS.

From scratch

Writing Dockerfiles and compose files by hand, then debugging them in production.

Minute one

One command. A real codebase.

Not an empty folder. A typed monolith with twelve modules, migrations and CI hooks, named after your product.

typed

App Shell

Theme, sidebar navigation, dialogs and responsive layout.

tanstack routertailwind v4
isolated

Domain Modules

Users, settings, dashboard widgets and a streaming AI chat. Each one isolated.

decoupled contextSSE stream
tested

Integrations & QA

Better Auth, Drizzle ORM, Playwright and Vitest, configured and talking to each other.

drizzleplaywright E2E
Hour one

Sign in to a product that already works

Before the hour is out you are clicking through your own app: real sign-in, a live dashboard, an AI chat answering over SSE. The screens below are the template, untouched.

Access your workspace

Sign in to the app you scaffolded an hour ago.

or continue with

What's inside

Six pieces you would otherwise build yourself, already wired together.

Landing & marketing

This very page: hero, scenes, contact form and footer, all behind translation keys.

App shell

Collapsible sidebar, topbar, theming and toasts, responsive from the start.

Authentication

Better Auth with database sessions, plus optional Clerk SSO.

Data layer

Drizzle ORM over Postgres, with typed schemas and one-command migrations.

AI module

Five providers, one client: OpenAI, Anthropic, Ollama, LM Studio and llama.cpp, with RAG via ChromaDB.

Quality gates

Type checks, ESLint, Prettier, i18n parity and tests behind a single validate command.

Days one to five

Five days from first commit to production

A realistic path, not a countdown. Each day has a goal, a handful of tasks and the exact command to run. Tick them off as you go.

Launch readiness

0 of 15 tasks done (0%)

Day 1

Environment

Clone the repository, copy the example env file and check that the dev server boots.

Checklist

Run$ pnpm install && pnpm dev
Where to look.env.example
Day 2

Brand

Make it yours: colors, logo and navigation.

Checklist

Where to looksrc/shared/styles/globals.css
Day 3

Auth & data

Wire your credentials and shape the database.

Checklist

Run$ pnpm db:generate && pnpm db:migrate
Where to lookdrizzle.config.ts
Day 4

Your product

The fun part: routes, widgets and AI for your actual domain.

Checklist

Run$ pnpm routes:inventory
Where to looksrc/routes/
Day 5

Ship

Prove it works, then put it in front of people.

Checklist

Run$ pnpm test:e2e && pnpm build
Where to lookdocker-compose.yml

01Structure

Every feature lives in its own module, behind one import.

Twelve modules ship today. Deleting one doesn't break the others.

02Security

Auth, roles and configuration are decided before your first feature, not after your first incident.

Better Auth sessions, RBAC and typed env access come wired.

03Longevity

Swap the brand, the modules and the copy. The architecture is built to outlive them.

This landing is itself a module you could replace this afternoon.

Questions before you clone?

Write to us about the template: a setup problem, a missing feature, an architectural doubt. Your message lands in the same contact-messages module that ships with the starter.

We usually answer within a couple of days.

Open repository

Bugs and feature requests live as GitHub issues. The roadmap is public.

Open GitHub

Async by default

No calls, no meetings. Write when it suits you; we answer the same way.

Low-volume updates

Release notes land in your inbox at most once a month.