create-node-appone command · any stack
TemplatesExtensionsDocs
Get started
No results found.
Navigation
Home
Docs
Templates
Extensions
Docs
Docs — Introduction
Docs — Installation
Docs — AGENTS.md
Docs — Templates
Docs — Template Customization
Docs — Extensions
Docs — Contributing
Docs — Advanced Usage
System
Enable Performance Mode
Press Esc to close
Ctrl+K
10 templates·51 extensions·12 categories·MIT licensed·TypeScript-first
create-node-app

One command. Any stack. Compose templates and extensions into production-ready Node.js apps.

© 2026 Create Awesome Node App.

Resources

TemplatesExtensionsDocumentationContributing GuideChangelog

Community

Discord CommunityGitHub Organizationnpm PackageReport an issueRequest a feature

Ecosystem

Node.jslivePythonbetaV languagelive

Documentation

Back to home

Getting Started

IntroductionInstallationAGENTS.mdNEW

Templates

OverviewCustomization

Extensions

Overview

Contributing & Reference

ContributingAdvanced Usage
View on GitHub
  1. Docs
  2. Extensions

Extensions

Extensions are modular add-ons you apply on top of a template to layer in additional features — UI libraries, state management, testing setups, and more.

What is an extension?

An extension is a self-contained package that adds files, dependencies, and scripts to a scaffolded project. Extensions are composable: you can apply multiple compatible extensions in a single command and they are merged intelligently.

Each extension declares which template types it is compatible with (e.g. react, nestjs-backend), so the CLI only shows you relevant options for your chosen template.

npx create-awesome-node-app my-app --template react-vite-boilerplate --addons react-zustand react-tailwindcss react-testing-library-with-vitest

Extension categories

Extensions are organized into 12 categories covering the most common project needs.

UI
Component libraries and design systems.
  • · Material UI
  • · Tailwind CSS
  • · Shadcn/UI
  • · Semantic UI
  • · Mantine
State Management
Client-side state solutions.
  • · Zustand
  • · Redux Toolkit
  • · Recoil
  • · Jotai
Testing
Unit, integration, and end-to-end testing setups.
  • · Vitest + Testing Library
  • · Jest + Testing Library
  • · Playwright
Database
ORM, database adapters, and data persistence utilities.
  • · Drizzle + PostgreSQL
  • · Drizzle + SQLite
  • · Mongoose
  • · Prisma
Data Fetching
API and data synchronization layers.
  • · React Query
  • · Apollo Client
  • · SWR
  • · tRPC
Auth
Authentication and authorization integrations.
  • · NextAuth.js
  • · Clerk
  • · Auth0
  • · Supabase Auth
Tooling
Developer experience and workflow extensions.
  • · Storybook
  • · GitHub Setup
  • · Million.js
  • · Electron
Deployment
Hosting, CI/CD, and infrastructure configurations.
  • · Vercel
  • · Docker
  • · GitHub Actions
  • · Serverless
Monitoring
Error tracking, logging, and observability.
  • · Sentry
  • · OpenTelemetry
  • · Datadog
  • · LogRocket
Localization
Internationalization and translation tooling.
  • · i18next
  • · react-intl
  • · next-intl
  • · Lingui
API
API clients, code generation, and integration utilities.
  • · Axios
  • · Ky
  • · OpenAPI Generator
  • · GraphQL Codegen
Cross Platform
Extensions targeting multiple platforms simultaneously.
  • · Electron
  • · Tauri
  • · Capacitor
  • · React Native Web
Browse all extensions

How extensions work

When the CLI applies an extension it performs a deep merge of the extension's files and package.json fields into the scaffolded project:

  1. Files — source files from the extension are copied or appended to the project. Filenames ending in .template are processed as EJS templates before being written.
  2. Dependencies — package/dependencies.js and package/devDependencies.js entries are merged into the project's package.json.
  3. Scripts — any scripts defined by the extension are merged with existing scripts.
  4. Incompatibilities — extensions declare incompatibleWith slugs so the CLI prevents conflicting combinations (e.g. two different test runners).

Extension file structure

Extensions live in the extensions/ directory of the cna-templates repository:

extensions/
└── your-extension-name/
    ├── [src]/            # Source files merged into the project's src/
    ├── package/
    │   ├── dependencies.js       # Runtime deps to add
    │   └── devDependencies.js    # Dev deps to add
    ├── package.json      # Extension metadata
    └── README.md

Listing available extensions

npx create-awesome-node-app --list-addons

Or browse the full catalogue on the Extensions page, where you can filter by template type and category.

Back to DocumentationContributing extensions