The open-source monorepo behind create-awesome-node-app: a composable scaffolding CLI for production-ready Node, Web, Full-Stack, Monorepo, and AI-ready projects.
Package README · Official Site · Templates · Extensions · Contributing · Troubleshooting
This repository contains the source code for create-awesome-node-app, the CLI that composes curated templates, addons, custom options, and AI-ready conventions into working projects.
Use this README if you want to understand the codebase, run it locally, contribute a fix, improve documentation, or work on the CLI packages. If you only want to generate an app, start with the package README.
npm create awesome-node-app@latest my-appRun headlessly for scripts, CI, or platform automation:
npx create-awesome-node-app my-app \
--template react-vite-boilerplate \
--addons tailwind-css zustand github-setup \
--no-interactiveMore examples live in the CLI package README.
This is a Node 22+ monorepo managed with npm workspaces and Turborepo.
| Path | Purpose |
|---|---|
packages/create-awesome-node-app |
Main CLI package, Commander entrypoint, interactive wizard, catalog listing, and package metadata. |
packages/create-node-app-core |
Scaffolding engine: resolves templates/extensions, copies files, applies template options, installs dependencies, and initializes git. |
packages/eslint-config-base |
Shared base ESLint flat config. |
packages/eslint-config-ts |
TypeScript ESLint config extending the base preset. |
packages/eslint-config-react |
React ESLint config extending the TypeScript preset. |
packages/eslint-config-next |
Next.js ESLint config extending the TypeScript preset. |
packages/tsconfig |
Shared TypeScript base configurations. |
docs/ |
Troubleshooting and migration notes. |
.github/workflows |
CI for tests, lint, typecheck, shellcheck, markdown, and release automation. |
Template and extension data is maintained in Create-Node-App/cna-templates. This repo consumes that catalog remotely.
Requires Node.js 22 (the version pinned in .node-version; use fnm use to switch automatically):
git clone https://github.com/Create-Node-App/create-node-app.git
cd create-node-app
fnm use # reads .node-version
npm install
npm run buildRun the local CLI after building:
./packages/create-awesome-node-app/index.js my-appRun a non-interactive local smoke test:
./packages/create-awesome-node-app/index.js smoke-app \
--template react-vite-boilerplate \
--addons tailwind-css \
--no-interactive \
--no-install- Read the relevant package README before changing code.
- Make the smallest correct change.
- Add or update tests when behavior changes.
- Run the targeted package checks first.
- Run broader repo checks before opening a PR.
- Update docs when commands, behavior, package metadata, or contribution paths change.
For contribution requirements and project expectations, see CONTRIBUTING.md.
npm run build -- --filter create-awesome-node-app
npm run test -- --filter create-awesome-node-app
npm run lint -- --filter create-awesome-node-appImportant files:
packages/create-awesome-node-app/src/index.tsfor CLI flags and execution flow.packages/create-awesome-node-app/src/options.tsfor interactive and non-interactive option resolution.packages/create-awesome-node-app/src/templates.tsfor remote catalog loading.packages/create-awesome-node-app/src/list.tsfor--list-templatesand--list-addonsoutput.
npm run build -- --filter @create-node-app/core
npm run test -- --filter @create-node-app/core
npm run lint -- --filter @create-node-app/coreImportant files:
packages/create-node-app-core/index.tsfor the maincreateNodeAppworkflow.packages/create-node-app-core/loaders.tsfor template file discovery and rendering.packages/create-node-app-core/paths.tsfor local, GitHub, and package path handling.packages/create-node-app-core/installer.tsfor install command behavior.
Template and extension implementations live in Create-Node-App/cna-templates, not in this monorepo.
Use local file:// URLs when developing templates or extensions before publishing them to the catalog:
npx create-awesome-node-app local-app \
--template file:///absolute/path/to/my-template \
--addons file:///absolute/path/to/my-extension \
--no-interactiveFor a template inside a monorepo subdirectory:
npx create-awesome-node-app local-app \
--template "file:///absolute/path/to/catalog-repo?subdir=templates/my-starter" \
--no-interactive| Command | What it validates |
|---|---|
npm run build |
Builds all packages through Turborepo. |
npm run test |
Runs package test tasks. |
npm run test:all |
Runs all Node native test files under packages/**/tests. |
npm run test:coverage |
Builds and runs coverage with c8. |
npm run lint |
Runs ESLint across packages. |
npm run type-check |
Runs TypeScript checks across packages. |
npm run format |
Formats supported files with Prettier. |
Run targeted checks while iterating, then run the broader checks before requesting review.
npx create-awesome-node-app my-react-app --template react-vite-boilerplate
npx create-awesome-node-app my-api --template nestjs-boilerplate
npx create-awesome-node-app my-next --template nextjs-starternpx create-awesome-node-app my-app \
--template react-vite-boilerplate \
--addons tailwind-css zustand
npx create-awesome-node-app my-api \
--template nestjs-boilerplate \
--addons drizzle-orm-postgresql openapinpx create-awesome-node-app my-app \
--template https://github.com/Create-Node-App/cna-templates/tree/main/templates/react-vite-starter \
--addons https://github.com/Create-Node-App/cna-templates/tree/main/extensions/react-querynpx create-awesome-node-app layered-app \
--template react-vite-boilerplate \
--addons tailwind-css \
--extend https://github.com/Create-Node-App/cna-templates/tree/main/extensions/react-hook-formnpx create-awesome-node-app debug-app \
--template react-vite-boilerplate \
--verboseThe live catalog changes over time. Use the website or CLI listing commands for the current source of truth.
npx create-awesome-node-app --list-templates
npx create-awesome-node-app --template react-vite-boilerplate --list-addonsCommon template slugs:
| Slug | Description |
|---|---|
react-vite-boilerplate |
React + Vite + TypeScript starter. |
nextjs-starter |
Production-ready Next.js starter. |
nextjs-saas-ai-starter |
Multi-tenant SaaS starter with AI, Auth.js, Drizzle, PostgreSQL, Tailwind, shadcn/ui, RBAC, and i18n. |
nestjs-boilerplate |
Scalable NestJS backend. |
hono-starter |
Lightweight Hono API starter. |
astro-starter |
Astro site starter for content-focused apps. |
remix-starter |
React Router v7 / Remix-style full-stack starter. |
turborepo-boilerplate |
Monorepo with Turborepo and Changesets. |
web-extension-react-boilerplate |
React WebExtension with Vite. |
webdriverio-boilerplate |
WebdriverIO E2E testing setup. |
Common addon slugs:
| Category | Examples |
|---|---|
| UI | tailwind-css, material-ui, shadcn-ui, nextjs-shadcn |
| State and data | zustand, jotai, tanstack-react-query, apollo-client |
| Backend and DB | drizzle-orm-postgresql, drizzle-orm-sqlite, mongoose-orm-mongodb |
| Testing | react-playwright, vitest-react-testing-library, jest-react-testing-library |
| Tooling | github-setup, husky-lint-staged, development-container, storybook |
Packages are published from this monorepo. Before publishing, make sure package-level READMEs, changelogs, builds, tests, and package metadata are aligned.
Useful package docs:
packages/create-awesome-node-app/README.mdpackages/create-node-app-core/README.mdpackages/README.mdpackages/create-awesome-node-app/CHANGELOG.md
Contributions are welcome across docs, CLI behavior, tests, package configuration, shared configs, and developer experience.
Good first steps:
- Read CONTRIBUTING.md.
- Check open issues.
- Use Troubleshooting when local generation fails.
- Open template or addon changes in
Create-Node-App/cna-templates.
When opening a PR, include what changed, how you validated it, and whether docs/package metadata were updated.
MIT © Create Node App Contributors
create-awesome-node-app.vercel.app
Build starters quickly. Understand the repo quickly. Contribute confidently.