CLI tool that scaffolds Python projects with dev tooling pre-configured
Project description
DevStart
CLI tool that scaffolds Python projects with all dev tooling pre-configured.
Stop wasting time setting up ruff, mypy, pytest, Docker, CI, and pre-commit from scratch every time you start a new project. DevStart gives you a production-ready development environment in seconds.
Features
src/layout with hatch dynamic versioning (__version__as single source of truth)- Dev tooling out of the box: ruff (lint + format), mypy (strict), pytest, debugpy
- Docker & Docker Compose included by default
- GitHub Actions CI with pre-commit integration
- Devcontainer for consistent dev environments
- Pre-commit hooks: ruff, codespell, bandit, gitleaks, mypy, pytest
- PlantUML diagram templates for project documentation
- Makefile with
setup,lint,format,test,check, and more - Interactive or fully flag-driven project creation
Installation
uv tool install devstart
Or with pip:
pip install devstart
Quick Start
# Interactive — prompts for project details
devstart new myproject
# Non-interactive — use all defaults
devstart new myproject -y
# Scaffold into current directory
devstart new .
Usage
devstart new myproject \
--description "My awesome project" \
--author "Your Name" \
--python 3.14 \
--no-ci \
--no-devcontainer \
--no-precommit \
--no-docker \
--no-diagrams \
-y
| Flag | Default | Description |
|---|---|---|
[NAME] |
(prompted) | Project name (positional arg) |
--description / -d |
(prompted) | Project description |
--author / -a |
(prompted) | Author name |
--python |
3.14 |
Python version |
--no-ci |
false | Skip GitHub Actions CI |
--no-devcontainer |
false | Skip devcontainer setup |
--no-precommit |
false | Skip pre-commit hooks |
--docker/--no-docker |
true | Include Docker setup |
--diagrams/--no-diagrams |
true | Include PlantUML diagrams |
--continue/--no-continue |
true | Include Continue AI config |
--no-interactive / -y |
false | Use defaults, skip all prompts |
Generated Project Structure
myproject/
├── src/myproject/
│ ├── __init__.py
│ ├── __main__.py
│ └── main.py
├── tests/
│ ├── __init__.py
│ ├── conftest.py
│ └── test_main.py
├── docker/ # optional
│ ├── Dockerfile
│ └── docker-compose.yml
├── docs/ # optional
│ └── diagrams/
│ └── class_diagram.puml
├── .vscode/
│ ├── launch.json
│ └── settings.json
├── .github/workflows/ci.yml # optional
├── .devcontainer/ # optional
├── .pre-commit-config.yaml # optional
├── pyproject.toml
├── README.md
├── Makefile
├── .gitignore
├── .dockerignore # optional
└── .env
What You Get
Every generated project is immediately runnable:
cd myproject
make setup # installs uv, syncs deps, sets up git + pre-commit
make check # runs lint + format check + type check + tests
make test # runs pytest
make format # auto-formats with ruff
Contributing
git clone https://github.com/AymanKastali/DevStart.git
cd DevStart
make setup
make check
License
MIT
Project details
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 devstart-0.1.1.tar.gz.
File metadata
- Download URL: devstart-0.1.1.tar.gz
- Upload date:
- Size: 42.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fe146ba6634918b2e0a18b7e30b105a25ff3df201527532ad5bc30645e60d0f9
|
|
| MD5 |
fa14a3fe2f0fa049d8c3c79d74d55b1e
|
|
| BLAKE2b-256 |
6663609fc5add74976af4c332ea3a16872b7f9826b68e955b6e5a3e0ccb3e36d
|
Provenance
The following attestation bundles were made for devstart-0.1.1.tar.gz:
Publisher:
publish.yml on AymanKastali/DevStart
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
devstart-0.1.1.tar.gz -
Subject digest:
fe146ba6634918b2e0a18b7e30b105a25ff3df201527532ad5bc30645e60d0f9 - Sigstore transparency entry: 1080253280
- Sigstore integration time:
-
Permalink:
AymanKastali/DevStart@c0b12883ed64928527f2406be6d44b9df991143c -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/AymanKastali
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@c0b12883ed64928527f2406be6d44b9df991143c -
Trigger Event:
push
-
Statement type:
File details
Details for the file devstart-0.1.1-py3-none-any.whl.
File metadata
- Download URL: devstart-0.1.1-py3-none-any.whl
- Upload date:
- Size: 21.5 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 |
eabe51a7179e1e7ea89a0cd74eea312165cce945840da5be139ea1b951121653
|
|
| MD5 |
f05f4391d711a921f5937bde3fe8f51d
|
|
| BLAKE2b-256 |
ab0b5f725bac9dacf0ff9ab3d205afe6dea118e906f90fd345e87c40629f21e0
|
Provenance
The following attestation bundles were made for devstart-0.1.1-py3-none-any.whl:
Publisher:
publish.yml on AymanKastali/DevStart
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
devstart-0.1.1-py3-none-any.whl -
Subject digest:
eabe51a7179e1e7ea89a0cd74eea312165cce945840da5be139ea1b951121653 - Sigstore transparency entry: 1080253323
- Sigstore integration time:
-
Permalink:
AymanKastali/DevStart@c0b12883ed64928527f2406be6d44b9df991143c -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/AymanKastali
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@c0b12883ed64928527f2406be6d44b9df991143c -
Trigger Event:
push
-
Statement type: