A developer-friendly scaffolding CLI for FastAPI and LangChain/LangGraph projects
Project description
⚒ AppGenerator CLI
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
uvinstalled on the system (for generated project env management)
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file app_generator_cli-1.0.5.tar.gz.
File metadata
- Download URL: app_generator_cli-1.0.5.tar.gz
- Upload date:
- Size: 26.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1130ec05cc0474edcca6e2ac81431e17468ebaa7967e34f88647b31cadf69dbd
|
|
| MD5 |
4d5dd690be30ebd7fc1f919f3e5b46bc
|
|
| BLAKE2b-256 |
3a4f8a6ce324d40ce4ca46b61dd2e156a15aba395400d291060ea3d2703d496d
|
File details
Details for the file app_generator_cli-1.0.5-py3-none-any.whl.
File metadata
- Download URL: app_generator_cli-1.0.5-py3-none-any.whl
- Upload date:
- Size: 50.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
41c26baf572aa43aab87d4404ed0545d13ab3b6f8bf4045e79b7f0af4081783a
|
|
| MD5 |
4ab319b799ea7db8f2801271bf96aa3c
|
|
| BLAKE2b-256 |
0ce758183565c226cd02be8ccf99dad11316be8cb7a1159b5a3db4cdddfb1172
|