Modern Python project bootstrapper with 2025's best toolchain
Project description
โก quickforge
Modern Python project bootstrapper with 2025's best toolchain.
๐ Zero Config โข โก Blazing Fast โข ๐ง Modern Tools โข ๐ฏ Production Ready
Installation โข Quick Start โข Project Types โข Commands
โจ What quickforge Does
One command creates a complete, production-ready Python project with modern tooling:
quickforge new myproject
That's it! Your project is ready with all the best practices built in.
โก Modern Toolchain
- uv - Blazing fast package manager (10-100x faster than pip)
- ruff - Linting & formatting (replaces black, isort, flake8)
- basedpyright - Strict type checking
- pytest - Testing with coverage
- pre-commit - Automated code quality
๐ฆ Everything Configured
- โ Proper package structure (src layout)
- โ
pyproject.tomlwith all tools configured - โ Pre-commit hooks ready to go
- โ GitHub Actions CI/CD
- โ VS Code settings optimized
- โ Type checking enabled from day one
- โ Test skeleton with pytest + coverage
๐ Migration Tools
- Upgrade legacy projects to modern tooling
- Migrate from Poetry, pip, pipenv, or setuptools
- Convert black/isort/flake8/mypy to ruff/basedpyright
๐ฆ Installation
# Using uv (recommended)
uv tool install quickforge
# Using pip
pip install quickforge
# Using pipx
pipx install quickforge
๐ Quick Start
Interactive Mode (Default)
quickforge new myproject
Prompts you for project type, Python version, license, author info, and features.
Non-Interactive Mode
# Quick library with defaults
quickforge new mylib --type library --yes
# CLI with strict type checking
quickforge new mycli --type cli --strict
# FastAPI project
quickforge new myapi --type api --yes
# Specify everything
quickforge new myproject \
--type library \
--python 3.12 \
--license MIT \
--author "Jane Doe" \
--email "jane@example.com"
After Creating a Project
cd myproject
uv sync # Install dependencies
uv run pytest # Run tests
uv run ruff check . # Lint code
uv run ruff format . # Format code
uv run basedpyright # Type check
uv run pre-commit install # Setup git hooks
๐ Project Types
| Type | Description | Use Case |
|---|---|---|
| library | PyPI-publishable package | Reusable code, open source packages |
| cli | Command-line tool with Typer | Terminal applications, dev tools |
| api | FastAPI web service | REST APIs, microservices |
| app | Standalone application | Scripts that need structure |
| script | Single-file with inline deps | Quick automation, one-off tasks |
๐ Generated Structure
myproject/
โโโ src/
โ โโโ myproject/
โ โโโ __init__.py
โ โโโ py.typed # PEP 561 marker
โ โโโ main.py # or cli.py for CLI projects
โโโ tests/
โ โโโ __init__.py
โ โโโ test_main.py
โโโ .github/
โ โโโ workflows/
โ โโโ ci.yml # GitHub Actions
โโโ .vscode/
โ โโโ settings.json
โ โโโ extensions.json
โโโ pyproject.toml # All configuration
โโโ .pre-commit-config.yaml
โโโ .gitignore
โโโ README.md
โโโ LICENSE
๐ ๏ธ Commands
quickforge new
Create a new project:
quickforge new myproject [OPTIONS]
| Option | Short | Description |
|---|---|---|
--type |
-t |
Project type: library, app, cli, api, script |
--python |
-p |
Python version: 3.11, 3.12, 3.13 |
--license |
-l |
License: MIT, Apache-2.0, GPL-3.0-only, BSD-3-Clause |
--author |
-a |
Author name |
--email |
-e |
Author email |
--output |
-o |
Output directory |
--strict |
Enable strict type checking | |
--yes |
-y |
Skip prompts, use defaults |
--no-git |
Skip git initialization | |
--no-github-actions |
Skip GitHub Actions | |
--no-pre-commit |
Skip pre-commit config | |
--no-vscode |
Skip VS Code settings | |
--with-docker |
Include Docker configuration | |
--with-docs |
Include MkDocs documentation |
quickforge audit
Analyze existing projects for modernization opportunities:
quickforge audit ./my-project
Shows detected tooling, project health score, and recommendations.
quickforge upgrade
Migrate from legacy tooling to modern stack:
quickforge upgrade . # Auto-detect and upgrade
quickforge upgrade . --from poetry # Specify source tool
quickforge upgrade . --dry-run # Preview changes
| Migration | From | To |
|---|---|---|
| Package Manager | Poetry, pip, pipenv, setuptools | uv |
| Formatter | black | ruff format |
| Import Sorting | isort | ruff (I rules) |
| Linter | flake8 | ruff lint |
| Type Checker | mypy | basedpyright |
quickforge add
Add features to existing projects:
quickforge add github-actions # CI/CD workflow
quickforge add docker # Dockerfile + docker-compose.yml
quickforge add docs # MkDocs with Material theme
quickforge add pre-commit # Pre-commit hooks
quickforge add vscode # VS Code settings
quickforge add devcontainer # Dev container config
โก Why These Tools?
uv over pip/poetry/pipenv
| Metric | pip | poetry | uv |
|---|---|---|---|
| Install Speed | 1x | 2x | 10-100x |
| Written In | Python | Python | Rust |
| Lockfile | โ | โ | โ |
| Workspaces | โ | โ | โ |
ruff over black/isort/flake8
| Metric | black + isort + flake8 | ruff |
|---|---|---|
| Speed | 1x | 10-100x |
| Config Files | 3 | 1 |
| Rules | ~500 | 800+ |
| Auto-fix | Limited | Extensive |
basedpyright over mypy
| Metric | mypy | basedpyright |
|---|---|---|
| Speed | 1x | 3-5x |
| Error Messages | Basic | Detailed |
| VSCode Integration | Good | Excellent |
| Strictness | Configurable | Stricter defaults |
๐งช Development
# Clone and setup
git clone https://github.com/Technical-1/quickforge.git
cd quickforge
uv sync --extra dev
uv run pre-commit install
# Run tests
uv run pytest
# Run linters
uv run ruff check .
uv run ruff format .
uv run basedpyright
๐ก Philosophy
- Convention over configuration - Sensible defaults for 90% of projects
- Modern by default - 2025's best tools, not legacy compatibility
- Type-safe - Full type annotations from day one
- Fast - Rust-based tools for instant feedback
- Single source of truth - All config in pyproject.toml
๐ License
MIT License - see LICENSE for details.
Made by Jacob Kanfer
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 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 quickforge-0.1.0.tar.gz.
File metadata
- Download URL: quickforge-0.1.0.tar.gz
- Upload date:
- Size: 123.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c7d4dc478247264a7290834ddb246d2fb79f2905cd24db02bb6b462cd8c1b010
|
|
| MD5 |
662c040f98b56e6f492ce8025bcf7d9a
|
|
| BLAKE2b-256 |
1ccdeeddb64e4e0d4c278588cdfe4e827e1483a65a05f5ddf44c191c5d2763d5
|
Provenance
The following attestation bundles were made for quickforge-0.1.0.tar.gz:
Publisher:
publish.yml on Technical-1/pythonforge
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
quickforge-0.1.0.tar.gz -
Subject digest:
c7d4dc478247264a7290834ddb246d2fb79f2905cd24db02bb6b462cd8c1b010 - Sigstore transparency entry: 820494135
- Sigstore integration time:
-
Permalink:
Technical-1/pythonforge@b510cccbdd399d527363913980ba234ad5edad04 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/Technical-1
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@b510cccbdd399d527363913980ba234ad5edad04 -
Trigger Event:
release
-
Statement type:
File details
Details for the file quickforge-0.1.0-py3-none-any.whl.
File metadata
- Download URL: quickforge-0.1.0-py3-none-any.whl
- Upload date:
- Size: 68.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
419f0888c4e67b891a4d303a9a87d3b5d187c3ec7a0ae3395876da01bf62aa11
|
|
| MD5 |
95a9cc2963d4f94f23552e18315d3d75
|
|
| BLAKE2b-256 |
a9a5e73f307e8a0f998b8f8345a86bb260f21aa307a5a6850141e8ac2bac7166
|
Provenance
The following attestation bundles were made for quickforge-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on Technical-1/pythonforge
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
quickforge-0.1.0-py3-none-any.whl -
Subject digest:
419f0888c4e67b891a4d303a9a87d3b5d187c3ec7a0ae3395876da01bf62aa11 - Sigstore transparency entry: 820494139
- Sigstore integration time:
-
Permalink:
Technical-1/pythonforge@b510cccbdd399d527363913980ba234ad5edad04 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/Technical-1
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@b510cccbdd399d527363913980ba234ad5edad04 -
Trigger Event:
release
-
Statement type: