A web app template
Start from a full stack that already works.
A TypeScript monorepo — an Express API, a SvelteKit app and the types they share — with accounts, a database and tests already wired together. Build your features where the showcase is.
What's inside
One shared contract
Every payload is a zod schema in shared/: the API validates requests with it, the UI parses responses with it.
An API in layers
Express 5 with a folder per feature — router, controller, service, repository — one response envelope and typed error codes.
A real database
Postgres through Drizzle, with migrations and cursor pagination.
A server-rendered UI
SvelteKit 3 and Svelte 5 with shadcn-svelte components, several themes and light or dark mode — try the buttons above.
Accounts
Sign-up and sessions through better-auth; what someone creates belongs to them alone.
Tests at every level
Vitest for the API and the UI, components tested in a real browser, Playwright end to end.
The showcase: todo lists
Todo lists are the example feature: small enough to read in one sitting, yet they touch every layer — a shared schema, an API feature with its own tables, owner checks, paginated lists, and pages with dialogs, empty states and error handling. Read them to see how a feature is built, then replace them with your own.
- Sign up for an account.
- Create a list.
- Add todos, tick them off, delete them.