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. Extensions

Extensions

Extensions are modular add-ons you apply on top of a template to layer in additional features — Docker packaging, Postgres, observability, auth, CI, 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. fastapi-backend, django-backend, cli-app), so the CLI only shows you relevant options for your chosen template.

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

Extension categories

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

Containers
Docker images and Compose stacks for local and production runs.
  • · python-docker
Database
PostgreSQL services, ORM helpers, and migration scaffolding.
  • · python-postgres
  • · python-sqlalchemy
  • · python-redis
Observability
Error tracking and production diagnostics.
  • · python-sentry
Security
Authentication and authorization skeletons.
  • · python-auth-jwt
CI & GitHub
GitHub Actions, lint gates, and repository automation.
  • · github-setup
Developer Experience
Editor integrations and remote development environments.
  • · python-devcontainer
API & Services
Backend-focused add-ons for FastAPI and similar templates.
  • · python-sqlalchemy
  • · python-redis
  • · python-auth-jwt
Tooling
Cross-cutting workflow improvements for Python projects.
  • · github-setup
  • · python-devcontainer
Browse all extensions

How extensions work

When the CLI applies an extension it performs a deep merge of the extension's files and pyproject.toml 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 — extension dependency lists are merged into the project's pyproject.toml (runtime and dev groups).
  3. Scripts — any task scripts or Makefile targets defined by the extension are merged with existing project tooling.
  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 cpa-templates repository:

extensions/
└── your-extension-name/
    ├── files/            # Files merged into the project tree
    ├── pyproject/        # Optional dependency fragments for merge
    ├── extension.json    # Extension metadata and compatibility
    └── README.md

Listing available extensions

uvx create-awesome-python-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