CLI tool to scaffold production-ready FastAPI projects with clean architecture and built-in logging
Project description
PolePosition
A CLI tool to quickly scaffold production-ready FastAPI projects.
Create a clean, structured API project in seconds with built-in logging, configuration, and testing.
Create a new project:
poleposition startproject myapp --install
Example output
$ poleposition startproject myapp --install
Created project: myapp
Installing project dependencies with uv...
Resolved 47 packages in 40ms
Installed 47 packages in 52ms
Project ready.
Next steps:
cd myapp
uv run fastapi dev src/myapp/main.py
Why PolePosition?
Starting a FastAPI project should be fast, clean, and predictable.
PolePosition provides:
- A scalable project structure
- Environment-based configuration
- Built-in logging
- Testing setup
- A ready-to-run FastAPI application
No boilerplate. No setup friction.
Why not just FastAPI?
FastAPI is excellent, but starting a new project often involves:
- Recreating the same structure
- Setting up logging and configuration
- Organizing modules manually
PolePosition removes that overhead by providing a clean, production-ready starting point out of the box.
Installation
uv tool install poleposition
or
pip install poleposition
Quick example
poleposition startproject myapp --install
cd myapp
uv run fastapi dev src/myapp/main.py
Open your API documentation:
http://127.0.0.1:8000/docs
Quickstart
One-command setup (recommended)
poleposition startproject myapp --install
cd myapp
uv run fastapi dev src/myapp/main.py
Manual setup
poleposition startproject myapp
cd myapp
cp .env.example .env
uv sync
uv run fastapi dev src/myapp/main.py
CLI
poleposition startproject <name> [--install]
poleposition version
Project Structure
myapp/
├─ pyproject.toml
├─ .env.example
├─ src/
│ └─ myapp/
│ ├─ main.py
│ ├─ app.py
│ ├─ api/
│ │ └─ routes/
│ │ └─ status.py
│ └─ core/
│ ├─ config.py
│ └─ logging.py
└─ tests/
Status Endpoint
Check if your service is running:
GET /api/v1/status
{
"status": "ok",
"service": "myapp",
"environment": "development",
"version": "0.1.0"
}
Philosophy
PolePosition is built around a few principles:
- Minimal — no unnecessary abstractions
- Opinionated — sensible defaults
- Extensible — easy to grow into larger systems
The CLI is intentionally lightweight and avoids heavy templating engines.
Roadmap
- Project name validation
-
poleposition add module - JSON logging support
- Docker support
- Production-ready presets
Contributing
Contributions are welcome. Feel free to open an issue or submit a pull request.
License
MIT
Full license: https://github.com/erenertem/poleposition/blob/main/LICENSE
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
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 poleposition-0.0.7-py3-none-any.whl.
File metadata
- Download URL: poleposition-0.0.7-py3-none-any.whl
- Upload date:
- Size: 13.6 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":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7cf50193a7ac80bae35381a11bc10a209b5e830015f5226ca9aad43ed91b893d
|
|
| MD5 |
314c462096c1b2028079b30ee24015b9
|
|
| BLAKE2b-256 |
7b55763e99235c11f72d8a23c966a59528a185572ce3ba47b4f178521f2d8fc3
|