Modern Python project bootstrapper with 2025's best toolchain
Project description
⚡ quickforge
Modern Python project bootstrapper with 2025's best toolchain.
Zero Config • Modern Tools • One Command
✨ What quickforge Does
One command creates a complete 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.1.tar.gz.
File metadata
- Download URL: quickforge-0.1.1.tar.gz
- Upload date:
- Size: 735.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
428fd597854ac0bb7d1886dbe967e8a7a103722a557191904feac7bfaaa511b4
|
|
| MD5 |
1f8f93b5c1ce0293a2cc28e76337ff5c
|
|
| BLAKE2b-256 |
1cddd9bd520ab65f5873f89e355144d0dd8b0c8005d8d45aecfce3bc86fef47b
|
Provenance
The following attestation bundles were made for quickforge-0.1.1.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.1.tar.gz -
Subject digest:
428fd597854ac0bb7d1886dbe967e8a7a103722a557191904feac7bfaaa511b4 - Sigstore transparency entry: 1659271378
- Sigstore integration time:
-
Permalink:
Technical-1/pythonforge@08078bf4cbe789968fc4247e2394feae9ee99c3e -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/Technical-1
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@08078bf4cbe789968fc4247e2394feae9ee99c3e -
Trigger Event:
release
-
Statement type:
File details
Details for the file quickforge-0.1.1-py3-none-any.whl.
File metadata
- Download URL: quickforge-0.1.1-py3-none-any.whl
- Upload date:
- Size: 85.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7c8693423c31f40e956862224e9f131fb4c6055b6f8af7e1e67cac8c21db0846
|
|
| MD5 |
c4c5b6f6f210481affe9ed56f0642c86
|
|
| BLAKE2b-256 |
03e354c1962bbf3fae5ba5527f65c9d0b2699c45fcbef83e411c350a138a350e
|
Provenance
The following attestation bundles were made for quickforge-0.1.1-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.1-py3-none-any.whl -
Subject digest:
7c8693423c31f40e956862224e9f131fb4c6055b6f8af7e1e67cac8c21db0846 - Sigstore transparency entry: 1659271427
- Sigstore integration time:
-
Permalink:
Technical-1/pythonforge@08078bf4cbe789968fc4247e2394feae9ee99c3e -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/Technical-1
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@08078bf4cbe789968fc4247e2394feae9ee99c3e -
Trigger Event:
release
-
Statement type: