Skip to main content

⚒ AppGenerator CLI

CI PyPI version pytest Python GitHub issues GitHub license PyPI Downloads

Scaffold production-ready Python projects in seconds — powered by uv.

CI runs uv run pytest tests/ -v --tb=short on Python 3.10, 3.11, and 3.12.

$ app-generator-cli create fastapi my_api
$ app-generator-cli create fastapi-with-frontend my_web_app --docker
$ app-generator-cli create ai my_ai_app --docker --postgres

Installation

pip install app-generator-cli
# or, with uv (recommended):
uv tool install app-generator-cli

Verify:

app-generator-cli --version

Commands

app-generator-cli create fastapi <name>

Scaffold a FastAPI backend.

Flag Description
--docker Add Dockerfile + docker-compose.yml
--postgres Use PostgreSQL (asyncpg) instead of SQLite
--redis Add Redis client (redis)
--output PATH Create the project in a custom directory

Example:

app-generator-cli create fastapi my_api --docker --postgres --redis
cd my_api
cp .env.example .env
uv run uvicorn app.main:app --reload

app-generator-cli create fastapi-with-frontend <name>

Scaffold a FastAPI + Jinja2 frontend project.

Flag Description
--docker Add Dockerfile + docker-compose.yml
--postgres Use PostgreSQL (asyncpg) instead of SQLite
--redis Add Redis client (redis)
--output PATH Create the project in a custom directory

Example:

app-generator-cli create fastapi-with-frontend my_web_app --docker
cd my_web_app
cp .env.example .env
uv run uvicorn app.main:app --reload
# open http://localhost:8000/ and http://localhost:8000/docs

app-generator-cli create ai <name>

Scaffold a LangChain / LangGraph AI application.

Flag Description
--docker Add Dockerfile + docker-compose.yml
--postgres Add pgvector PostgreSQL support
--redis Add Redis semantic cache
--output PATH Create the project in a custom directory

Example:

app-generator-cli create ai my_assistant --docker
cd my_assistant
cp .env.example .env   # add your OPENAI_API_KEY
uv run python main.py

app-generator-cli create model --project-path <path>

Interactively create a model inside an existing generated project.

Prompt/Flag Description
--project-path, -p Existing project root to update
--template Optional explicit template (fastapi, fastapi-with-frontend, ai)
Model name Output file/class name (written to app/models/)
Field prompts Add field name, type, required/nullable, and optional max_length

Examples:

# SQLModel model in an existing FastAPI project
app-generator-cli create model --project-path ./my_api

# Pydantic model in an existing AI project
app-generator-cli create model --project-path ./my_assistant --template ai

Generated Project Structure

FastAPI

my_api/
├── app/
│   ├── main.py          # Application factory
│   ├── config.py        # Pydantic Settings
│   ├── dependencies.py  # FastAPI deps (DB session, etc.)
│   ├── api/v1/
│   │   └── health.py    # Health-check endpoint
│   ├── models/
│   │   └── base.py      # SQLModel base with timestamps
│   └── db/
│       └── session.py   # Async session factory
├── tests/
│   ├── conftest.py      # Async test client + DB fixtures
│   └── test_health.py
├── .env.example
├── .gitignore
├── pyproject.toml
├── Dockerfile           # (--docker)
└── docker-compose.yml   # (--docker)

AI (LangChain / LangGraph)

my_assistant/
├── main.py              # Interactive REPL
├── app/
│   ├── config.py        # Pydantic Settings
│   ├── agents/
│   │   └── assistant.py # LangGraph ReAct agent
│   ├── chains/
│   │   └── rag.py       # RAG chain example
│   └── tools/
│       ├── registry.py  # Tool registry
│       └── search.py    # Web search tool stub
├── tests/
│   └── test_agent.py
├── .env.example
├── .gitignore
├── pyproject.toml
├── Dockerfile           # (--docker)
└── docker-compose.yml   # (--docker)

FastAPI + Jinja Frontend

my_web_app/
├── app/
│   ├── main.py                    # App + homepage route
│   ├── templates/
│   │   ├── base.html              # Base layout
│   │   ├── index.html             # Homepage
│   │   └── partials/
│   │       ├── header.html        # Shared header
│   │       └── footer.html        # Shared footer
│   ├── api/v1/
│   │   └── health.py
│   └── ...                        # config/db/models/dependencies
├── tests/
│   ├── test_health.py
│   └── test_frontend.py
├── .env.example
├── pyproject.toml
├── Dockerfile                     # (--docker)
└── docker-compose.yml             # (--docker)

Packaging & Publishing to PyPI

1. Build

# Install build tools
pip install build twine

# Build wheel + sdist
python -m build
# Outputs: dist/app-generator-cli-0.1.0-py3-none-any.whl
#          dist/app-generator-cli-0.1.0.tar.gz

2. Test on TestPyPI

twine upload --repository testpypi dist/*
pip install --index-url https://test.pypi.org/simple/ app-generator-cli

3. Publish to PyPI

twine upload dist/*

Or with uv:

uv build
uv publish

Development Setup

git clone https://github.com/yourname/app-generator-cli
cd app-generator-cli

uv venv
uv sync --dev

# Run locally
uv run app-generator-cli --help

# Tests
uv run pytest

# Lint
uv run ruff check .
uv run ruff format .

Requirements

  • Python ≥ 3.10
  • uv installed on the system (for generated project env management)

License

MIT

Metadata

Release files for app-generator-cli 1.0.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for app-generator-cli 1.0.6
File Size Uploaded
app_generator_cli-1.0.6.tar.gz 26.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for app-generator-cli 1.0.6
File Interpreter ABI Platform
app_generator_cli-1.0.6-py3-none-any.whl Python 3 none any Details

Total release size: 76.9 kB

Release files / app_generator_cli-1.0.6.tar.gz

Download URL app_generator_cli-1.0.6.tar.gz
Size 26.7 kB
Tags Source
SHA-256 checksum
How to use checksums
677b91f3d00138e8c033a12e6c957f301fe8ff11a766fbe75252441fdbba58bf
BLAKE2b-256 checksum
How to use checksums
d24a20d118727a7e299faa4f8d7035fa7678a8dd1b6173844156b31fe2fa52da
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / app_generator_cli-1.0.6-py3-none-any.whl

Download URL app_generator_cli-1.0.6-py3-none-any.whl
Size 50.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bddb8982bef4bbfa62d9eeb23c14289eaae6e47afcfdac3dbbf54ab562532a1d
BLAKE2b-256 checksum
How to use checksums
2575cd36df20c0ecc21f46a0ffb433815b49e4b74ddbd9b4cc784cb8a2654b5e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

1.0.6 This release

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page