01 · Web · Growth · Tool
SvelteKit + Drizzle + Postgres
Less code per screen than any React stack, with server loaders and form actions the agent can follow top to bottom.
Agent fit4/5 Growth · Charge for it Reviewed
The stack
- Framework
- SvelteKit
- Data
- Postgres via Drizzle
- Auth
- Lucia or Auth.js, only if the tool has users
- Hosting
- Cloudflare, Vercel, or a container
- Also
-
- Tailwind CSS
- Superforms + Zod for every form
- Vitest for loaders and actions
Why agents do well here
4/5- Load functions and form actions put data in and data out next to the page, which is the locality that keeps an agent's change in one file.
- Svelte components are shorter than the React equivalent, so more of the tool fits in context at once.
- Drizzle keeps the schema as readable TypeScript, so the agent sees the data model without opening a database client.
Avoid at this tier
- Reaching for a client store when a load function would do.
- A separate API when actions already are the API.
- React because the team knows it; a tool is small enough to learn on.
How it fits together
A tool at growth has real users and a real database, but still one workflow. SvelteKit’s routes folder is the whole application: each route loads its data, handles its forms, and renders its page in three files sitting together.
Folder layout
src/
routes/ (app)/<workflow>/+page.svelte, +page.server.ts, +page.test.ts
lib/server/ db.ts, schema.ts, auth.ts
lib/components/ small, named primitives
drizzle/ migrations/ First five decisions
Lock these in before the agent writes the second feature. Each one removes a choice it would otherwise make differently every time.
- 01 Server loaders for every read
- 02 Form actions for every write
- 03 Superforms with Zod for validation
- 04 Drizzle migrations in the repo
- 05 Vitest on the server files
Also fits this cell
Same tier, same profile, a different stack. Pick one of these only for the reason given.
- Leptos Full-Stack Rust (SSR + Hydration on Axum) (opens in a new tab)
The team wants one language from database to UI and is already fluent in Rust.
When to move on
Stay here until the product forces the next tier. You are ready for Scale when:
- More than one team owns part of the product
- You serve users from more than one region or under data-residency rules
- An auditor will ask how a change got to production
- A single deploy touching everything is no longer acceptable