diff --git a/.cspell.json b/.cspell.json index 0291cd7..97f66fc 100644 --- a/.cspell.json +++ b/.cspell.json @@ -3,9 +3,12 @@ "language": "en", "words": [ "addons", + "addopts", "AGENTS", "alstr", "animatedgradient", + "asyncio", + "asyncpg", "Behaviour", "bunx", "celery", @@ -29,6 +32,7 @@ "dangerfile", "deployables", "django", + "docstrings", "dompurify", "dotenv", "Elipssis", @@ -38,8 +42,10 @@ "extraida", "extraída", "fastapi", + "filterwarnings", "grype", "hookform", + "httpx", "interactiva", "jeremias", "jscoverage", @@ -65,12 +71,14 @@ "pgvector", "picomatch", "pids", + "pipx", "PKGBUILD", "preconfigured", "pydantic", + "pyenv", "pygobject", - "PyPI", "pypi", + "PyPI", "pyproject", "pyright", "pytest", @@ -90,11 +98,12 @@ "Supabase", "syft", "tailwindcss", + "testpaths", "transpiling", "trivy", "trufflehog", - "Turborepo", "turborepo", + "Turborepo", "typer", "ulises", "ulisesjeremias", @@ -104,6 +113,8 @@ "uvx", "vaul", "vercel", + "viewsets", + "virtualenv", "vite", "vitest", "vlang", diff --git a/src/app/docs/advanced/usage/page.tsx b/src/app/docs/advanced/usage/page.tsx index 1893011..24faca4 100644 --- a/src/app/docs/advanced/usage/page.tsx +++ b/src/app/docs/advanced/usage/page.tsx @@ -7,8 +7,8 @@ import { Button } from '@/components/ui/button'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; export const metadata = { - title: 'Advanced Usage | Create Awesome Node App Documentation', - description: 'Advanced usage guide for create-awesome-node-app', + title: 'Advanced Usage | Create Awesome Python App Documentation', + description: 'Advanced usage guide for create-awesome-python-app', }; export default function AdvancedUsagePage() { @@ -18,85 +18,73 @@ export default function AdvancedUsagePage() {
- Advanced techniques and configurations for create-awesome-node-app + Advanced techniques and configurations for create-awesome-python-app
- create-awesome-node-app supports multiple package managers. You can choose the one that best fits your
- workflow:
+ Every CPA template is uv-first: dependencies live in pyproject.toml, the lockfile is{' '}
+ uv.lock, and day-to-day commands go through uv run.
- {`# Create a new project with npm
-npx create-awesome-node-app my-app
+ {`# Create a project (uv sync runs automatically unless --no-install)
+uvx create-awesome-python-app@latest my-app --template fastapi-starter
-# Specify package manager explicitly
-npx create-awesome-node-app my-app --use-npm
-
-# Install dependencies
+# Install or refresh dependencies later
cd my-app
-npm install
-
-# Run development server
-npm run dev`}
+uv sync`}
- {`# Create a new project with Yarn
-yarn create awesome-node-app my-app
-
-# Specify package manager explicitly
-npx create-awesome-node-app my-app --use-yarn
-
-# Install dependencies
+ {`# Run the dev server (FastAPI example)
cd my-app
-yarn
+uv run uvicorn app.main:app --reload
+
+# Run tests
+uv run pytest
-# Run development server
-yarn dev`}
+# Run lint and type checks
+uv run ruff check .
+uv run mypy .`}
- {`# Create a new project with pnpm
-pnpm create awesome-node-app my-app
+ {`# Add a runtime dependency
+uv add httpx
-# Specify package manager explicitly
-npx create-awesome-node-app my-app --use-pnpm
+# Add a dev dependency
+uv add --dev pytest-cov
-# Install dependencies
-cd my-app
-pnpm install
-
-# Run development server
-pnpm dev`}
+# Remove a dependency
+uv remove unused-package`}
--use-yarn or --use-pnpm flag.
+ Use --no-install when scaffolding if you want to review pyproject.toml before
+ running uv sync yourself.
- npx create-awesome-node-app my-app --addons github-setup
+ uvx create-awesome-python-app@latest my-app --template fastapi-starter --addons github-setup
- The Docker Compose Setup extension adds Docker environments for development and production.
+ The python-docker extension adds a Dockerfile and Compose files for local and production
+ container runs.
- npx create-awesome-node-app my-app --addons docker-compose-setup
+ uvx create-awesome-python-app@latest my-app --template fastapi-starter --addons python-docker
Here's a typical deployment workflow for a create-awesome-node-app project:
+Here's a typical deployment workflow for a create-awesome-python-app project:
create-awesome-node-app offers a Turborepo Boilerplate template for monorepo setups:
+
+ create-awesome-python-app offers the uv-workspace-starter template for Python monorepos with a
+ single lockfile and shared tooling:
+
- {`# Create a new monorepo project
-npx create-awesome-node-app my-monorepo --template turborepo-boilerplate
+ {`# Create a new uv workspace monorepo
+uvx create-awesome-python-app@latest my-monorepo --template uv-workspace-starter
# Navigate to the project
cd my-monorepo
-# Run all packages in development mode
-npm run dev
+# Sync all workspace members
+uv sync
+
+# Run a member app (example)
+uv run --package apps-api uvicorn app.main:app --reload
-# Build all packages
-npm run build`}
+# Run tests across the workspace
+uv run pytest`}
The Turborepo Boilerplate template includes:
+The uv workspace starter includes:
pyproject.toml toolingpackages/ libraries and apps/ deployablesnpx create-awesome-node-app my-app --no-install
+ uvx create-awesome-python-app my-app --no-install
cd my-app && npm install
+ cd my-app && uv sync
npx create-awesome-node-app --list-templates
+ uvx create-awesome-python-app --list-templates
npx create-awesome-node-app --list-addons
+ uvx create-awesome-python-app --list-addons
npx create-awesome-node-app my-app --interactive
+ uvx create-awesome-python-app my-app --interactive
create-awesome-node-app offers a variety of templates and extensions. Here's how to list them:
+create-awesome-python-app offers a variety of templates and extensions. Here's how to list them:
{`# List all available templates
-npx create-awesome-node-app --list-templates
+uvx create-awesome-python-app --list-templates
# List all available extensions
-npx create-awesome-node-app --list-addons`}
+uvx create-awesome-python-app --list-addons`}
The interactive mode provides a guided experience for creating projects:
{`npx create-awesome-node-app my-app --interactive`}
+ {`uvx create-awesome-python-app my-app --interactive`}
In interactive mode, you'll be prompted to:
diff --git a/src/app/docs/agents-md/page.tsx b/src/app/docs/agents-md/page.tsx index 4e22454..bacb1a4 100644 --- a/src/app/docs/agents-md/page.tsx +++ b/src/app/docs/agents-md/page.tsx @@ -6,7 +6,7 @@ import { Button } from '@/components/ui/button'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; export const metadata = { - title: 'AGENTS.md | Create Awesome Node App', + title: 'AGENTS.md | Create Awesome Python App', description: 'Guide to the generated AGENTS.md contract for AI assistants.', }; @@ -80,10 +80,10 @@ export default function AgentsMdPage() {pnpm test:unit) if not obvious
+ Include CI scripts or task runners (e.g. uv run pytest, uv run ruff check .)
+ if not obvious
Learn how to contribute templates and extensions to the project
@@ -24,7 +24,7 @@ export default function ContributingPage() {The create-awesome-node-app project welcomes contributions from the community. You can contribute by:
+The create-awesome-python-app project welcomes contributions from the community. You can contribute by:
- Templates are the foundation of create-awesome-node-app. They provide the initial structure and + Templates are the foundation of create-awesome-python-app. They provide the initial structure and configuration for new projects. This guide will walk you through the process of creating and contributing a new template.
@@ -76,15 +76,15 @@ graph TD
{`templates/
└── your-template-name/
- ├── public/ # Static assets
- ├── src/ # Source code
- │ ├── components/ # React components (for frontend templates)
- │ ├── lib/ # Utility functions and libraries
- │ └── styles/ # CSS and styling
- ├── .gitignore # Git ignore file
- ├── package.json # Package dependencies and scripts
+ ├── src/ # Application source (layout varies by template)
+ │ ├── app/ # FastAPI/Django modules
+ │ └── ...
+ ├── tests/ # pytest suite
+ ├── .gitignore
+ ├── pyproject.toml # uv project metadata, scripts, and dependencies
+ ├── uv.lock # Lockfile (generated after uv sync)
├── README.md # Template documentation
- └── tsconfig.json # TypeScript configuration (if applicable)`}
+ └── AGENTS.md # AI assistant contract`}
- Once your template is ready, you can submit it for inclusion in the create-awesome-node-app project: + Once your template is ready, you can submit it for inclusion in the create-awesome-python-app project:
{`extensions/
└── your-extension-name/
- ├── files/ # Files to be added to the template
- │ ├── src/ # Source files to be added
- │ └── ... # Other files
- ├── dependencies.json # Dependencies to be added to package.json
- ├── scripts.json # Scripts to be added to package.json
+ ├── files/ # Files to be added to or merged into the template
+ ├── pyproject/ # Optional dependency fragments for pyproject.toml merge
+ ├── extension.json # Metadata, compatibility, and merge rules
└── README.md # Extension documentation`}
dependencies.json file listing any npm
- packages your extension requires.
+ Define dependencies: Declare Python packages your extension adds in a{' '}
+ pyproject/ fragment or equivalent merge file consumed by the CLI.
package.json,
- create a scripts.json file.
+ Add scripts or tasks: If your extension needs Makefile targets or documented{' '}
+ uv run commands, include them in the extension README and any task runner config.
- {`// Example dependencies.json
-{
- "dependencies": {
- "axios": "^1.3.4",
- "react-query": "^3.39.3"
- },
- "devDependencies": {
- "@types/axios": "^0.14.0"
- }
-}
-
-// Example scripts.json
-{
- "scripts": {
- "api:generate": "openapi-generator-cli generate -i api-spec.yaml -g typescript-axios -o src/api"
- }
-}`}
+ {`# Example pyproject dependency fragment (conceptual)
+[project]
+dependencies = [
+ "httpx>=0.27",
+ "sqlalchemy>=2.0",
+]
+
+[dependency-groups]
+dev = [
+ "pytest-cov>=5.0",
+]`}
{`// Example of specifying multiple compatible template types
-"type": ["react", "nextjs", "webextension-react"]`}
+"type": ["fastapi-backend", "django-backend", "cli-app"]`}
uv run commands and Makefile targets,
- examples: ['Axios', 'Ky', 'OpenAPI Generator', 'GraphQL Codegen'],
+ examples: ['python-sqlalchemy', 'python-redis', 'python-auth-jwt'],
},
{
- name: 'Cross Platform',
- description: 'Extensions targeting multiple platforms simultaneously.',
- icon:
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.
+ fastapi-backend, django-backend, cli-app), 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
+ uvx create-awesome-python-app@latest my-app --template fastapi-starter --addons python-docker
+ python-postgres github-setup
- When the CLI applies an extension it performs a deep merge of the extension's files and{' '}
- package.json fields into the scaffolded project:
+ When the CLI applies an extension it performs a deep merge of the extension's files and{' '}
+ pyproject.toml fields into the scaffolded project:
.template are processed as EJS templates before being written.
package/dependencies.js and{' '}
- package/devDependencies.js entries are merged into the project's package.json.
+ Dependencies — extension dependency lists are merged into the project's{' '}
+ pyproject.toml (runtime and dev groups).
scripts defined by the extension are merged with existing
- scripts.
+ Scripts — any task scripts or Makefile targets defined by the extension are merged with
+ existing project tooling.
incompatibleWith slugs so the CLI
@@ -219,12 +180,12 @@ export default function DocsExtensionsPage() {
Extensions live in the extensions/ directory of the{' '}
- cna-templates
+ cpa-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
+ ├── files/ # Files merged into the project tree
+ ├── pyproject/ # Optional dependency fragments for merge
+ ├── extension.json # Extension metadata and compatibility
└── README.md`}
@@ -246,7 +205,7 @@ export default function DocsExtensionsPage() {
-npx create-awesome-node-app --list-addons+uvx create-awesome-python-app --list-addons
diff --git a/src/app/docs/installation/page.tsx b/src/app/docs/installation/page.tsx
index a3c918a..4c9672c 100644
--- a/src/app/docs/installation/page.tsx
+++ b/src/app/docs/installation/page.tsx
@@ -9,12 +9,14 @@ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/com
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';
export const metadata: Metadata = {
- title: 'Installation | Create Awesome Node App Documentation',
- description: 'Install create-awesome-node-app via npm, Homebrew, AUR, or Docker. Get up and running in seconds.',
+ title: 'Installation | Create Awesome Python App Documentation',
+ description:
+ 'Install create-awesome-python-app via uvx/PyPI, Homebrew, AUR, or Docker. Get up and running in seconds.',
alternates: { canonical: '/docs/installation' },
openGraph: {
- title: 'Installation | Create Awesome Node App Documentation',
- description: 'Install create-awesome-node-app via npm, Homebrew, AUR, or Docker. Get up and running in seconds.',
+ title: 'Installation | Create Awesome Python App Documentation',
+ description:
+ 'Install create-awesome-python-app via uvx/PyPI, Homebrew, AUR, or Docker. Get up and running in seconds.',
url: '/docs/installation',
type: 'article',
},
@@ -22,8 +24,8 @@ export const metadata: Metadata = {
const methods = [
{
- id: 'npm',
- label: 'npm / npx',
+ id: 'uv',
+ label: 'uv / PyPI',
icon:
- Get create-awesome-node-app running in seconds. Choose the install method that fits your
+ Get create-awesome-python-app running in seconds. Choose the install method that fits your
workflow.
npm create or npx — no global install needed. Node.js
- 22+ must be installed.
+ The fastest way is uvx create-awesome-python-app@latest — no global install needed. Python
+ 3.12+ is required for generated projects; uv installs the CLI on the fly.
Run without installing (recommended for one-off use):
+Run without installing (recommended):
- Shorthand via npm create:
-
Pin a version:
Install globally (optional):
+Install with pipx (optional):
- After global install you can run create-awesome-node-app my-app directly.
+ After install you can run create-awesome-python-app my-app directly.
Alternative package managers:
-yarn create awesome-node-app my-app-
pnpm create awesome-node-app my-app-
bunx create-awesome-node-app my-app-
Install with pip into a virtualenv (optional):
+Node.js 22 LTS or later
+Python 3.12 or later
- Check with node --version. Install via{' '}
+ Check with python --version. Install via{' '}
- fnm
+ uv python install
,{' '}
- Volta
+ pyenv
, or{' '}
- nodejs.org
+ python.org
.
npm 11+, yarn, pnpm, or bun
+uv (recommended)
- npm 11 ships with Node 22. Check with npm --version.
+ Install from{' '}
+
+ docs.astral.sh/uv
+
+ . Check with uv --version.
1. Add the tap:
2. Install:
Update to latest version:
Using yay:
Using paru:
Manual build from PKGBUILD:
{`git clone https://github.com/Create-Node-App/aur-package.git
+ {`git clone https://github.com/Create-Python-App/aur-package.git
cd aur-package
makepkg -si`}
nodejs and npm packages from the official Arch repos).
+ The AUR package installs from PyPI. Python 3.12+ must be available (via the official Arch{' '}
+ python package or equivalent).
{`docker run --rm -it \\
-v "\${PWD}:/app" -w /app \\
- ulisesjeremias/create-awesome-node-app:latest \\
- my-app --template react-vite-boilerplate`}
+ ulisesjeremias/create-awesome-python-app:latest \\
+ my-app --template fastapi-starter --no-interactive`}
{`docker run --rm -it \\
-v "\${PWD}:/app" -w /app \\
- ulisesjeremias/create-awesome-node-app:0.12.0 \\
- my-app --template nestjs-boilerplate --addons drizzle-orm-postgresql`}
+ ulisesjeremias/create-awesome-python-app:0.2.0 \\
+ my-app --template fastapi-starter --addons python-docker github-setup --no-interactive`}
node user. Mount your working directory with{' '}
- -v {'"${PWD}:/app"'} and set -w /app so the scaffolded project appears
- in your current folder.
+ Mount your working directory with -v {'"${PWD}:/app"'} and set -w /app{' '}
+ so the scaffolded project appears in your current folder.
After installing, confirm the CLI is available and shows the correct version:
Or list all available templates to confirm the CLI can reach the catalog:
{method}
@@ -399,15 +392,14 @@ makepkg -si`} ))}
- When using npx without a global install, always add @latest to ensure you get the
- newest version rather than a cached one.
+ When using uvx without a global install, always add @latest (or a pinned version)
+ to ensure you get the release you expect rather than a cached one.
Comprehensive guide to using create-awesome-node-app
+Comprehensive guide to using create-awesome-python-app
- create-awesome-node-app is a powerful command-line tool designed to streamline the process of
- setting up modern Node.js applications. It provides a collection of carefully crafted templates and
+ create-awesome-python-app is a powerful command-line tool designed to streamline the process of
+ setting up modern Python applications. It provides a collection of carefully crafted templates and
extensions that help developers quickly bootstrap projects with best practices and optimal configurations.
- Using create-awesome-node-app is straightforward. You can create a new project with a single
+ Using create-awesome-python-app is straightforward. You can create a new project with a single
command:
-npx create-awesome-node-app my-app+uvx create-awesome-python-app@latest my-app
-yarn create awesome-node-app my-app+pipx run create-awesome-python-app my-app
-pnpm create awesome-node-app my-app+brew install create-awesome-python-app{'\n'}create-awesome-python-app my-app
Before using create-awesome-node-app, ensure you have the following installed:
+Before using create-awesome-python-app, ensure you have the following installed:
-V, --version
+ --version
-i, --info
+ -i, --info
+ -t, --template <template>
fastapi-starter)--no-install
+ --addons [extensions...]
-t, --template <template>
+ --extend <extension>
--addons [extensions...]
+ --set <key=value>
--use-yarn
+ --no-install
uv sync--use-pnpm
+ -f, --force
--interactive
+ --interactive / --no-interactive
--list-templates
@@ -232,7 +242,43 @@ export default function DocsPage() {
--list-addons
--offline
+ --no-cache / --cache-dir
+ --pin / --refresh / --strict-version
+ --keep-on-failure
+ --install-completion / --show-completion
+ cache
+ Create a project with interactive mode:
-npx create-awesome-node-app my-app --interactive+uvx create-awesome-python-app my-app --interactive
Create a project with a specific template:
-npx create-awesome-node-app my-app --template react-vite-boilerplate+uvx create-awesome-python-app@latest my-app --template fastapi-starter
- npx create-awesome-node-app my-app --template react-vite-boilerplate --addons material-ui
+ uvx create-awesome-python-app@latest my-app --template fastapi-starter --addons python-docker
github-setup
@@ -280,7 +326,7 @@ export default function DocsPage() {
List all available templates:
-npx create-awesome-node-app --list-templates+uvx create-awesome-python-app --list-templates
List all available extensions:
-npx create-awesome-node-app --list-addons+uvx create-awesome-python-app --list-addons
create-awesome-node-app offers a variety of templates for different types of applications:
+create-awesome-python-app offers a variety of templates for different types of applications:
10 production-ready templates
+5 production-ready templates
- Frontend, backend, fullstack, monorepo, testing, and web extension starters. + FastAPI, Django API, CLI, Celery worker, and uv workspace monorepo starters.
Different templates have specific customization options. Here are some examples:
- -Different CPA templates have distinct extension points:
+ +The React Vite template provides several customization options:
+src/App.tsx or create a dedicated router configuration.
- python-sqlalchemy or python-auth-jwt when needed.
Settings class for new env vars.
python-sentry during scaffold or wire Sentry
+ manually in lifespan hooks.
- {`// Example of customizing React Router in App.tsx
-import { BrowserRouter, Routes, Route } from 'react-router-dom'
-import Home from './pages/Home'
-import About from './pages/About'
-import Contact from './pages/Contact'
-import NotFound from './pages/NotFound'
-
-function App() {
- return (
-
-
- } />
- } />
- } />
- } />
-
-
- )
-}`}
+ {`# app/main.py (simplified)
+from fastapi import FastAPI
+from app.api.routes import health, users
+
+app = FastAPI(title="my-app")
+app.include_router(health.router, prefix="/health", tags=["health"])
+app.include_router(users.router, prefix="/users", tags=["users"])`}
The Next.js template offers these customization options:
+app directory.
+ Apps: Add Django apps under the project package; register in{' '}
+ INSTALLED_APPS.
app/api directory.
+ DRF: Define serializers and viewsets; keep URL routing in{' '}
+ urls.py.
python-postgres for local Compose services.
pyproject.toml — update
+ the target if you rename modules.
+ CliRunner in pytest for command coverage.
- {`// Example of creating an API route in app/api/hello/route.ts
-import { NextResponse } from 'next/server'
+ {`import typer
-export async function GET() {
- return NextResponse.json({ message: 'Hello World!' })
-}
+app = typer.Typer()
-// Example of creating a new page in app/about/page.tsx
-export default function AboutPage() {
- return (
-
- About Us
- This is the about page.
-
- )
-}`}
+@app.command()
+def greet(name: str) -> None:
+ typer.echo(f"Hello, {name}!")`}
The NestJS template provides these customization options:
+packages/ and apps under{' '}
+ apps/; declare workspace members in root pyproject.toml.
uv run --package <member> ... to target a specific
+ app or library.
- {`// Example of creating a new module
-import { Module } from '@nestjs/common';
-import { UsersController } from './users.controller';
-import { UsersService } from './users.service';
-
-@Module({
- controllers: [UsersController],
- providers: [UsersService],
- exports: [UsersService],
-})
-export class UsersModule {}`}
-
- For more advanced customization needs, you can modify the core functionality of the template:
+For deeper changes, adjust runtime configuration and deployment artifacts:
You can customize the build process by modifying the build configuration files:
- -vite.config.ts to customize the build process.
- next.config.js to adjust Next.js behavior.
- nest-cli.json and tsconfig.build.json for
- build customization.
- Customize your application's behavior using environment variables:
+Use .env locally (never commit secrets) and typed settings in code:
- {`# .env file example
-API_URL=https://api.example.com
-DEBUG=true
-NODE_ENV=development
-
-# For client-side variables in Next.js
-NEXT_PUBLIC_SITE_URL=https://example.com`}
+ {`# .env.example
+APP_ENV=development
+DATABASE_URL=postgresql+asyncpg://user:pass@localhost:5432/app
+SENTRY_DSN=`}
Access environment variables in your code:
-
- {`// In Node.js (server-side)
-const apiUrl = process.env.API_URL
-
-// In React (client-side, Vite)
-const siteUrl = import.meta.env.VITE_SITE_URL
+ {`from pydantic_settings import BaseSettings, SettingsConfigDict
-// In Next.js (client-side)
-const siteUrl = process.env.NEXT_PUBLIC_SITE_URL`}
+class Settings(BaseSettings):
+ model_config = SettingsConfigDict(env_file=".env", extra="ignore")
+ app_env: str = "development"
+ database_url: str`}
+ When you scaffold with python-docker, customize Dockerfile,{' '}
+ compose.yml, and health checks for your deployment target. Rebuild with{' '}
+ docker compose up --build after changes.
+
- Project templates are the starting point for every create-awesome-node-app project. Each
+ Project templates are the starting point for every create-awesome-python-app project. Each
template is a complete, production-ready project skeleton for a specific technology stack.
A template provides the initial directory structure, configuration files, and tooling for a new project.
- When you run create-awesome-node-app, you pick a template and optionally layer{' '}
+ When you run create-awesome-python-app, you pick a template and optionally layer{' '}
extensions
{' '}
@@ -60,7 +55,7 @@ export default async function DocsTemplatesPage() {
-npx create-awesome-node-app my-app --template react-vite-boilerplate+uvx create-awesome-python-app@latest my-app --template fastapi-starter
The following templates are maintained in the{' '} - cna-templates + cpa-templates {' '} repository. There are currently {templates.length} templates available.
@@ -132,7 +127,7 @@ export default async function DocsTemplatesPage() {-npx create-awesome-node-app my-app --interactive+uvx create-awesome-python-app my-app --interactive
- npx create-awesome-node-app my-app --template react-vite-boilerplate --addons react-zustand
- react-testing-library-with-vitest
+ uvx create-awesome-python-app@latest my-app --template fastapi-starter --addons python-docker
+ python-postgres
-npx create-awesome-node-app --list-templates+uvx create-awesome-python-app --list-templates
- Every template lives in the templates/ directory of the cna-templates repository and follows
+ Every template lives in the templates/ directory of the cpa-templates repository and follows
this layout:
{`templates/
└── your-template-name/
- ├── src/ # Source code
- ├── public/ # Static assets (frontend templates)
+ ├── src/ # Application source (or app/ for Django)
+ ├── tests/ # pytest suite
├── .gitignore
- ├── package.json
+ ├── pyproject.toml # uv project metadata and dependencies
+ ├── uv.lock # Lockfile (generated)
├── README.md
- ├── AGENTS.md # AI assistant contract
- └── tsconfig.json`}
+ └── AGENTS.md # AI assistant contract`}