create-python-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
5 templates·8 extensions·9 categories·MIT licensed·uv-first
create-python-app

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

© 2026 Create Awesome Python App.

Resources

TemplatesExtensionsDocumentationContributing GuideChangelog

Community

GitHub OrganizationPyPI PackageReport an issueRequest a feature

Ecosystem

PythonbetaNode.jssiblingV languagesoon

Documentation

Back to home

Getting Started

IntroductionInstallationAGENTS.mdNEW

Templates

OverviewCustomization

Extensions

Overview

Contributing & Reference

ContributingAdvanced Usage
View on GitHub
  1. Docs
  2. Templates

Templates

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.

What is a template?

A template provides the initial directory structure, configuration files, and tooling for a new project. When you run create-awesome-python-app, you pick a template and optionally layer extensions on top of it to add functionality like state management, testing, or UI libraries.

uvx create-awesome-python-app@latest my-app --template fastapi-starter

Each template ships with an AGENTS.md file that scopes how AI coding assistants interact with the generated repository. Learn more about AGENTS.md →

Available templates

The following templates are maintained in the cpa-templates repository. There are currently 5 templates available.

FastAPI Starter
Production-ready FastAPI API with uv, Ruff, pytest, mypy, pyright, and pydantic-settings

type: fastapi-backend

View template
CLI Starter
Typer CLI with uv, Ruff, pytest, and a console script entry point

type: cli-app

View template
Celery Worker
Celery worker with Redis defaults, pydantic-settings, and eager-mode tests

type: celery-worker

View template
Django API
Django + DRF API starter with uv, Ruff, pytest-django, and health probes

type: django-backend

View template
uv Workspace Starter
Python monorepo using uv workspaces: shared packages/ libraries and apps/ deployables with one lockfile, Ruff, Pyright, and pytest

type: uv-workspace

View template
Browse all templates

Using templates

Interactive mode

Run without arguments and the CLI will prompt you to pick a template and extensions:

uvx create-awesome-python-app my-app --interactive

Non-interactive mode

Pass --template (and optionally --addons) to skip prompts:

uvx create-awesome-python-app@latest my-app --template fastapi-starter --addons python-docker python-postgres

List all templates

uvx create-awesome-python-app --list-templates

Template structure

Every template lives in the templates/ directory of the cpa-templates repository and follows this layout:

templates/
└── your-template-name/
    ├── src/              # Application source (or app/ for Django)
    ├── tests/            # pytest suite
    ├── .gitignore
    ├── pyproject.toml    # uv project metadata and dependencies
    ├── uv.lock           # Lockfile (generated)
    ├── README.md
    └── AGENTS.md         # AI assistant contract

Template files can use EJS-style template tags (<%= variable %>) to inject values collected during project creation (e.g. project name, src directory).

Back to DocumentationTemplate Customization