Snappyr is a modern Python project scaffolding tool that sets up professional Python projects with industry-standard tooling in seconds. Instead of manually configuring the same development environment repeatedly, Snappyr creates a complete, production-ready project structure with modern tools like uv, ruff, mypy, and pre-commit hooks.
Snappyr creates projects with professional development practices out of the box:
project_name/
βββ src/
β βββ main.py
β βββ __init__.py
βββ tests/
β βββ __init__.py
β βββ test_main.py
βββ scripts/
βββ docs/
βββ .github/
β βββ workflows/
β βββ ci.yml
βββ pyproject.toml # Modern Python packaging
βββ .pre-commit-config.yaml
βββ .gitignore
βββ .env
βββ LICENSE
βββ README.md
- Uses uv instead of pip/poetry for ultra-fast dependency management
- Automatic virtual environment creation and management
- Lock file generation for reproducible builds
- Ruff: Lightning-fast Python linter and formatter (replaces black, flake8, isort)
- Mypy: Comprehensive type checking with strict configuration
- Pre-commit hooks: Automated code quality checks on every commit
- Pytest with coverage reporting
- Pre-configured test structure
- GitHub Actions CI/CD workflow
- Modern
pyproject.tomlconfiguration - Support for multiple Python versions (3.11+)
- Configurable license types (MIT, Apache-2.0, GPL-3.0, BSD-3-Clause)
- Package mode for library development
pip install snappyruv tool install snappyr# Create a new project
snappyr my_awesome_project
# Or with options
snappyr my_project --python-version 3.12 --license Apache-2.0snappyr my_project \
--is_package \ # Set up as a Python package
--python-version 3.12 \ # Target Python version
--license MIT \ # Choose license type
--no-git \ # Skip Git initialization
--no-precommit # Skip pre-commit setup--is_package: Configure project as a Python package with proper structure--python-version: Target Python version (default: 3.11)--license: License type - MIT, Apache-2.0, GPL-3.0, BSD-3-Clause, None (default: MIT)--no-git: Skip Git repository initialization--no-precommit: Skip pre-commit hooks setup--version: Show version information
- pyproject.toml: Modern Python packaging with comprehensive tool configuration
- Ruff: Configured with sensible defaults for linting and formatting
- Mypy: Strict type checking configuration
- Pytest: Testing framework with coverage reporting
- Pre-commit: Automated quality checks including ruff, mypy, and security scanning
- Multi-Python version testing (3.11, 3.12)
- Automated linting, formatting, and type checking
- Test coverage reporting
- Codecov integration
- Comprehensive
.gitignorefor Python projects - License file with proper copyright notice
- Professional README template with badges
- Environment file template
cd your_project
# Install dependencies
uv sync
# Run the project
uv run python src/main.py
# Run tests
uv run pytest
# Code quality checks
uv run ruff check . # Lint code
uv run ruff format . # Format code
uv run mypy . # Type checking
# Set up pre-commit (if not skipped)
uv run pre-commit install
uv run pre-commit run --all-filesThe generated projects support a modern development workflow:
- Write code in
src/ - Write tests in
tests/ - Quality checks run automatically via pre-commit
- CI/CD runs on GitHub Actions
- Dependencies managed with uv
Snappyr requires these tools to be installed:
- Python 3.11+
- uv:
pip install uvorcurl -LsSf https://astral.sh/uv/install.sh | sh - git: For version control (optional but recommended)
| Feature | Snappyr | Cookiecutter | Poetry new |
|---|---|---|---|
| Modern tooling (uv, ruff) | β | β | β |
| Pre-commit hooks | β | Depends | β |
| CI/CD setup | β | Depends | β |
| Type checking setup | β | Depends | β |
| Zero configuration | β | β | β |
| Speed | β‘ | π | π |
Contributions are welcome! This project uses the same modern tooling it creates:
# Clone and set up development environment
git clone https://github.com/yash-srivastava19/snappyr
cd snappyr
uv sync --all-extras
# Run tests
uv run pytest
# Quality checks
uv run ruff check .
uv run mypy .MIT License - see LICENSE file for details.