|
1 | | -# Rob's Awesome Python Template |
| 1 | +# 🚀 Rob's Awesome Python Template |
2 | 2 |
|
3 | | -Rob's Awesome Python Template is extremely customizable- it can work for the smallest library to the largest application. |
| 3 | +**The most comprehensive Python project template that scales from simple libraries to enterprise applications** |
4 | 4 |
|
5 | | -- [Rob's Awesome Python Template](#robs-awesome-python-template) |
6 | | - - [Usage](#usage) |
7 | | - - [Core Functionality](#core-functionality) |
8 | | - - [Optional Functionality](#optional-libraries) |
9 | | - - [FastAPI](#fastapi) |
10 | | - - [Celery](#celery) |
11 | | - - [QuasiQueue](#quasiqueue) |
12 | | - - [Typer and Click](#typer-and-click) |
13 | | - - [SQLAlchemy and Alembic](#sqlalchemy-and-alembic) |
14 | | - - [Paracelsus](#paracelsus) |
15 | | - - [Docker](#docker) |
16 | | - - [Github Actions](#github-actions) |
17 | | - - [Agentic Instructions](#agentic-instructions) |
18 | | - - [Examples](#examples) |
| 5 | +Transform any Python idea into a production-ready project in minutes. This CookieCutter template provides everything you need to build, test, deploy, and maintain modern Python applications with industry best practices baked in. |
19 | 6 |
|
| 7 | +## ✨ Why Choose This Template? |
20 | 8 |
|
21 | | -## Usage |
| 9 | +- **Zero Configuration Hassle**: Get a fully configured development environment instantly |
| 10 | +- **Production Ready**: Battle-tested tools and patterns used in real-world applications |
| 11 | +- **Incredibly Flexible**: Mix and match features to create exactly what you need |
| 12 | +- **Modern Standards**: Uses the latest Python tooling and best practices |
| 13 | +- **Enterprise Grade**: Scales from weekend projects to mission-critical applications |
22 | 14 |
|
23 | | -1. Install `cookiecutter`. |
24 | | -2. Install `pyenv` if you haven't already. |
25 | | -3. Run the cookiecutter command. |
| 15 | +## 🎯 Quick Start |
26 | 16 |
|
27 | 17 | ```bash |
| 18 | +# Install cookiecutter if you haven't already |
| 19 | +pip install cookiecutter |
| 20 | + |
| 21 | +# Create your project |
28 | 22 | cookiecutter gh:tedivm/robs_awesome_python_template |
29 | 23 | ``` |
30 | 24 |
|
31 | | -The rest of the process is interactive- you'll be asked for a project name and about which features you want enabled, after which the project will be setup. |
| 25 | +Answer a few questions about your project, and you'll have a complete Python application with everything configured and ready to go! |
| 26 | + |
| 27 | +## 🏗️ Core Features (Always Included) |
| 28 | + |
| 29 | +Every project created with this template includes these essential components: |
| 30 | + |
| 31 | +**Development Tools** |
| 32 | + |
| 33 | +- **Makefile automation**: One-command setup, testing, and deployment |
| 34 | +- **Modern pyproject.toml**: No legacy setup.py files |
| 35 | +- **Virtual environment management**: Automatic venv setup with pyenv integration |
| 36 | +- **Pre-commit hooks**: Catch issues before they reach your repository |
| 37 | + |
| 38 | +**Code Quality** |
| 39 | + |
| 40 | +- **Ruff**: Lightning-fast formatting and linting |
| 41 | +- **mypy**: Static type checking for safer code |
| 42 | +- **pytest**: Comprehensive testing framework with async support |
| 43 | +- **Coverage reporting**: Track your test coverage (even with multiprocess applications) |
| 44 | + |
| 45 | +**Configuration & Settings** |
| 46 | + |
| 47 | +- **Pydantic Settings**: Type-safe configuration management |
| 48 | +- **Environment-based config**: Easy deployment across different environments |
| 49 | +- **Automatic validation**: Catch configuration errors early |
| 50 | + |
| 51 | +**Publishing & Distribution** |
| 52 | + |
| 53 | +- **setuptools-scm**: Automatic versioning from git tags |
| 54 | +- **PyPI publishing**: One-command package publishing |
| 55 | +- **Multi-architecture support**: Works on AMD64 and ARM64 |
| 56 | + |
| 57 | +## 🧩 Optional Integrations |
| 58 | + |
| 59 | +Pick and choose the features you need. Unused components are completely removed from your project. |
| 60 | + |
| 61 | +### 🌐 Web Applications |
| 62 | + |
| 63 | +**FastAPI Integration** |
| 64 | + |
| 65 | +- Complete REST API setup with automatic documentation |
| 66 | +- Static file serving |
| 67 | +- Async request handling |
| 68 | +- OpenAPI/Swagger UI included |
| 69 | +- Production-ready ASGI configuration |
| 70 | + |
| 71 | +### 📋 Task Processing |
| 72 | + |
| 73 | +**Celery Integration** |
| 74 | + |
| 75 | +- Distributed task queue setup |
| 76 | +- Redis broker configuration |
| 77 | +- Worker and scheduler containers |
| 78 | +- Monitoring and management tools |
| 79 | + |
| 80 | +**QuasiQueue Integration** |
32 | 81 |
|
33 | | -## Core Functionality |
| 82 | +- High-performance multiprocessing |
| 83 | +- Simple async task processing |
| 84 | +- Perfect for CPU-intensive workloads |
34 | 85 |
|
35 | | -- Development Management using [Makefiles](https://www.gnu.org/software/make/manual/html_node/Introduction.html). |
36 | | -- Configuration Management with [Pydantic Settings]([https://docs.pydantic.dev/usage/settings/](https://docs.pydantic.dev/latest/concepts/pydantic_settings/)). |
37 | | -- PyPI Publishing from Github Tags using [setuptools-scm](https://pypi.org/project/setuptools-scm/). |
38 | | -- Formatting and Linting with [Ruff](https://docs.astral.sh/ruff/). |
39 | | -- Typing with [mypy](https://mypy.readthedocs.io/en/stable/). |
40 | | -- Lockfiles (requirements.txt) with [uv](https://pypi.org/project/uv/). |
41 | | -- Testing with [pytest](https://docs.pytest.org/en/7.2.x/). |
42 | | -- CI/CD using [Github Actions](https://docs.github.com/en/actions). |
43 | | -- Precommit Hooks using the [precommit framework](https://pre-commit.com/). |
44 | | -- Multiple license options. |
45 | | -- Modern `pyproject.toml` without any legacy files. |
| 86 | +### 💾 Database & ORM |
46 | 87 |
|
47 | | -## Optional Libraries |
| 88 | +**SQLAlchemy + Alembic** |
48 | 89 |
|
49 | | -This template can also configure and setup a variety of optional services. Each optional service adds its own dependencies, configuration, handlers, and everything else needed to jump right into development. |
| 90 | +- Async database operations |
| 91 | +- Automatic model discovery |
| 92 | +- Database migration management |
| 93 | +- Support for PostgreSQL, SQLite, and more |
| 94 | +- Connection pooling and optimization |
50 | 95 |
|
51 | | -Features that are not selected get completely cleaned up and will not pollute the newly created project. |
| 96 | +**Paracelsus Integration** |
52 | 97 |
|
53 | | -### FastAPI |
| 98 | +- Automatic database schema diagrams |
| 99 | +- Documentation generation |
| 100 | +- Visual database relationships |
54 | 101 |
|
55 | | -[FastAPI](https://fastapi.tiangolo.com/) is one of the easiest ways to develop REST Based APIs. When enabled a "Hello World" application will be setup. |
| 102 | +### 🖥️ Command Line Interface |
56 | 103 |
|
57 | | -### Celery |
| 104 | +**Typer + Click** |
58 | 105 |
|
59 | | -[Celery](https://docs.celeryq.dev/en/stable/getting-started/introduction.html) is the standard for Queue Management systems with Python. |
| 106 | +- Beautiful CLI applications |
| 107 | +- Automatic help generation |
| 108 | +- Type-safe command definitions |
| 109 | +- Async command support |
| 110 | +- Auto-completion support |
60 | 111 |
|
61 | | -### QuasiQueue |
| 112 | +### 🎨 Templating |
62 | 113 |
|
63 | | -[QuasiQueue](https://github.com/tedivm/quasiqueue) is a high performance multiprocessing library that is also very simple to use. |
| 114 | +**Jinja2 Templates** |
64 | 115 |
|
65 | | -### Typer and Click |
| 116 | +- Server-side rendering |
| 117 | +- Template inheritance |
| 118 | +- Custom filters and functions |
66 | 119 |
|
67 | | -[Typer](https://typer.tiangolo.com/typer-cli/), which is built on top of the [Click Framework](https://click.palletsprojects.com), is one of the easiest ways to build command line applications. When enabled this template will create an initial CLI handler and register it with python for easy installation. |
| 120 | +### 🐳 Containerization |
68 | 121 |
|
69 | | -### SQLAlchemy and Alembic |
| 122 | +**Docker Setup** |
70 | 123 |
|
71 | | -[SQLAlchemy](https://www.sqlalchemy.org/) is one of the most used SQL ORM frameworks in python. It is regularly paired with [Alembic](https://alembic.sqlalchemy.org/en/latest/) to handle database migrations. |
| 124 | +- Multi-service Docker Compose configuration |
| 125 | +- Optimized multi-stage builds |
| 126 | +- Development and production configurations |
| 127 | +- Health checks and resource limits |
| 128 | +- Multi-architecture image support |
72 | 129 |
|
73 | | -This template configures SQLAlchemy and Alembic to work together using a unified configuration. Alembic will automatically discover all models in the `models` directory. |
| 130 | +### ⚙️ CI/CD Pipeline |
74 | 131 |
|
75 | | -Projects with this template will have access to the Async SQLAlchemy engine. |
| 132 | +**Comprehensive GitHub Actions** |
76 | 133 |
|
77 | | -### Paracelsus |
| 134 | +- Automated testing across Python versions |
| 135 | +- Code formatting and linting |
| 136 | +- Type checking with mypy |
| 137 | +- Security scanning |
| 138 | +- Automated PyPI publishing |
| 139 | +- Container image building and publishing |
| 140 | +- Dependency updates with lockfile management |
| 141 | +- Documentation generation and deployment |
78 | 142 |
|
79 | | -[Paracelsus](https://github.com/tedivm/paracelsus) is a library that automatically generates diagrams of SQLAlchemy database schemas and injects them into documentation. |
| 143 | +### 🤖 AI Development Support |
80 | 144 |
|
81 | | -### Docker |
| 145 | +**Agentic Instructions** |
82 | 146 |
|
83 | | -Docker Images are the standard for distributing and running applications. The Docker extensions to this project create containers for the other services that are enabled, such as FastAPI and Celery. |
| 147 | +- Pre-configured AGENTS.md with project-specific guidelines |
| 148 | +- Best practices for AI coding assistants |
| 149 | +- Context-aware development workflows |
84 | 150 |
|
85 | | -The images made by this template come from the [Multi-Py](https://github.com/multi-py/) project and support both AMD and ARM architectures. |
| 151 | +## 📚 Comprehensive Documentation |
86 | 152 |
|
87 | | -### Github Actions |
| 153 | +Every generated project includes extensive documentation: |
88 | 154 |
|
89 | | -Github Action Workflows are optionally created for a variety of tasks- |
| 155 | +- **API Documentation**: Auto-generated from code |
| 156 | +- **Development Guides**: Database, caching, CLI, Docker setups |
| 157 | +- **Deployment Instructions**: Production deployment strategies |
90 | 158 |
|
91 | | -- Formatting Python, JSON, YAML, and TOML |
92 | | -- Testing |
93 | | -- Typing |
94 | | -- Publishing Packages to PyPI |
95 | | -- Pushing Images to GHCR |
96 | | -- Updating Dependency (requirements.txt) Files |
97 | | -- Updating Documentation |
| 159 | +## 🎛️ Smart Configuration |
98 | 160 |
|
99 | | -### Agentic Instructions |
| 161 | +The template intelligently configures itself based on your choices: |
100 | 162 |
|
101 | | -A predefined AGENTS.md file enables project specific instructions and best practices for coding agents such as Github Copilot, Cursor, and Windsurf. |
| 163 | +- **Dependency management**: Only includes what you need |
| 164 | +- **Docker services**: Automatically sets up required containers |
| 165 | +- **Database connections**: Configures based on selected databases |
| 166 | +- **CI/CD workflows**: Enables relevant automation pipelines |
| 167 | +- **Settings management**: Creates environment-specific configurations |
102 | 168 |
|
103 | | -## Examples |
| 169 | +## 🎨 Multiple License Options |
104 | 170 |
|
105 | | -Project examples are available in the [example repository](https://github.com/tedivm/robs_awesome_python_template_examples). |
| 171 | +Choose the license that fits your project: |
106 | 172 |
|
107 | | -- [Basic Library](https://github.com/tedivm/robs_awesome_python_template_examples/tree/main/library)- enables basic library features without the full scale applications. |
108 | | -- [All Options Enabled](https://github.com/tedivm/robs_awesome_python_template_examples/tree/main/full)- includes every option and service. |
109 | | -- [All Options Disabled](https://github.com/tedivm/robs_awesome_python_template_examples/tree/main/bare)- disabled every optional service for an extremely basic scaffold. |
| 173 | +- **MIT License**: Permissive, business-friendly |
| 174 | +- **BSD License**: Simple and permissive |
| 175 | +- **Apache Software License 2.0**: Patent protection included |
| 176 | +- **GNU General Public License v3**: Copyleft for open source |
| 177 | +- **All Rights Reserved**: Proprietary projects |
| 178 | + |
| 179 | +## 📦 Project Examples |
| 180 | + |
| 181 | +See the template in action with complete example projects: |
| 182 | + |
| 183 | +**[📖 Library Example](https://github.com/tedivm/robs_awesome_python_template_examples/tree/main/library)** |
| 184 | + |
| 185 | +- Minimal setup for Python packages |
| 186 | +- PyPI publishing ready |
| 187 | +- Documentation and testing included |
| 188 | + |
| 189 | +**[🚀 Full Application](https://github.com/tedivm/robs_awesome_python_template_examples/tree/main/full)** |
| 190 | + |
| 191 | +- Every feature enabled |
| 192 | +- Complete web application with API, database, and task processing |
| 193 | +- Production deployment ready |
| 194 | + |
| 195 | +**[⚡ Minimal Setup](https://github.com/tedivm/robs_awesome_python_template_examples/tree/main/bare)** |
| 196 | + |
| 197 | +- Bare minimum configuration |
| 198 | +- Perfect starting point for simple projects |
| 199 | + |
| 200 | +## 🔧 Advanced Features |
| 201 | + |
| 202 | +**Intelligent Cleanup** |
| 203 | + |
| 204 | +- Unused files and configurations are automatically removed |
| 205 | +- No bloat or unnecessary dependencies |
| 206 | +- Clean, focused project structure |
| 207 | + |
| 208 | +**Development Workflow** |
| 209 | + |
| 210 | +- One-command environment setup |
| 211 | +- Automated testing and formatting |
| 212 | +- Integrated debugging support |
| 213 | +- Hot-reload for web applications |
| 214 | + |
| 215 | +**Production Ready** |
| 216 | + |
| 217 | +- Environment-based configuration |
| 218 | +- Health checks and monitoring |
| 219 | +- Optimized Docker containers |
| 220 | + |
| 221 | +## 🚀 Get Started Today |
| 222 | + |
| 223 | +```bash |
| 224 | +cookiecutter gh:tedivm/robs_awesome_python_template |
| 225 | +``` |
110 | 226 |
|
111 | | -These are just some options, as features can be mixed and matched to create numerous permutations. |
| 227 | +Your next Python project is just one command away! |
0 commit comments