mirror of
https://github.com/jakejarvis/stanza.git
synced 2026-07-16 18:05:58 -04:00
62 lines
2.3 KiB
Markdown
62 lines
2.3 KiB
Markdown
# Stanza
|
|
|
|
Modular monorepo template CLI — aka shadcn for full-stack TypeScript projects.
|
|
|
|
```sh
|
|
npm init stanza my-revolutionary-app
|
|
```
|
|
|
|
Pick a framework, ORM, database, auth provider, and UI — get a clean monorepo with idiomatic code, vendored into your repo. Layer in more modules later with `stanza-cli add`.
|
|
|
|
> [!WARNING]
|
|
> **Major work in progress!** See the [module registry](https://stanza.tools/docs/registry) for the roadmap.
|
|
|
|
## Why Stanza?
|
|
|
|
- **`add` works after `init`.** Run `stanza add` on an existing project — it's manifest-driven and peer-aware, so it picks the right adapter for your stack and wires deps, env, and templates into the correct workspace package.
|
|
- **Your code, vendored.** Generated files land in your repo verbatim. There's no Stanza runtime to install or carry around.
|
|
- **Open registry.** Modules are static JSON. Point the CLI at your own host and serve custom modules.
|
|
|
|
## Quick start
|
|
|
|
```sh
|
|
npm init stanza my-app
|
|
cd my-app
|
|
npm install
|
|
npm run dev
|
|
```
|
|
|
|
Add a module to an existing project at any time:
|
|
|
|
```sh
|
|
npx stanza-cli add auth better-auth
|
|
```
|
|
|
|
`auth`, `db`, and `orm` install into their own internal workspace packages (`packages/auth/`, `packages/db/`, named `@<your-app>/auth`, `@<your-app>/db`); your app consumes them via `workspace:*`. Swapping an auth provider replaces the contents of `packages/auth/` without touching your app's imports.
|
|
|
|
## Docs
|
|
|
|
Full guides and the CLI reference live at **[stanza.tools/docs](https://stanza.tools/docs)**. Assemble a stack visually with the builder at **[stanza.tools](https://stanza.tools)**.
|
|
|
|
## What's inside
|
|
|
|
```
|
|
apps/
|
|
cli/ # stanza-cli — the CLI binary
|
|
web/ # https://stanza.tools (TanStack Start)
|
|
packages/
|
|
schema/ # @withstanza/schema — stanza.json + module schema, contract types, category list
|
|
registry/ # slot/peer/capability resolver + package.json/env/template synthesis
|
|
codemods/ # ts-morph helpers for region-aware patching
|
|
utils/ # shared path-safety + env-file helpers
|
|
create-stanza/ # `npm init stanza` template shim
|
|
registry/
|
|
modules/ # first-party modules (framework, orm, db, auth, ui, tooling, testing)
|
|
scripts/
|
|
compile-registry.ts # builds the static registry JSON the CLI consumes
|
|
```
|
|
|
|
## License
|
|
|
|
[MIT](./LICENSE)
|