Introduction
What newt-app is and why it exists
Most full-stack starters make you choose: a minimal boilerplate that leaves too much undone, or a bloated template that ships opinions you don't want and dependencies you'll spend the first week ripping out.
newt-app is neither. It scaffolds a production-ready monorepo with the things every serious app needs (a typed frontend, a structured backend, authentication, and a shared component library) without padding it with things you'll never use.
Motivation
The goal is to eliminate the gap between "I have an idea" and "I have something running." Not by hiding complexity, but by making the right choices up front so you don't have to.
Every piece in the stack was chosen because it's good at exactly one thing:
- Next.js handles the frontend. App Router, server components, file-based routing.
- NestJS handles the backend. Structured, testable, scales when you need it to.
- Better Auth handles authentication. Runs across both apps without duplication.
- Kysely handles persistence. A typed query builder over SQLite or Postgres, shared by auth and your app.
- pnpm workspaces hold it together.
apps/for runnable apps,packages/for shared code. - Turborepo makes builds fast. Cached, parallel, monorepo-aware.
Request flow
Each request flows from the browser through Next.js, which handles rendering and routing, then to NestJS for API and business logic.
How it works
When you run create-newt-app my-app, the CLI reads a set of source templates and writes them out as a new project on disk.
pnpm dlx create-newt-app my-app
cd my-app
pnpm install
pnpm devThe output is a fully-formed monorepo:
There is no runtime dependency on newt-app itself. The generated project is entirely standalone. Own it, change it, grow it.