jyinit - scaffold Python projects (CLI)
Project description
jyinit
๐ Extended Python Project Scaffolder โ create production-ready Python projects (apps, services, libraries, ML projects, etc.) with one command.
Includes templates, licenses, CI/CD workflows, Git setup, and interactive prompts.
โจ Features
- ๐ฆ Multiple templates: scaffold Flask, FastAPI, Django, Streamlit, ML, libraries, etc.
- โก Interactive mode (
--interactive): prompts you for missing options. - ๐ง Per-template GitHub Actions workflows (via
--ci). - ๐ Licenses included (MIT, Apache-2.0, GPL-3.0, โฆ).
- ๐ Git integration:
--gitโ initializes git repo(s) without remote.--gitrep [url]โ initializes repo(s) and optionally sets a remote + pushes initial commit.
- ๐งช Tests scaffold: creates a
tests/folder with__init__.py. - ๐ Virtual environments (
--venv) per subproject. - ๐ Dry-run mode (
--dry-run) โ preview everything before creating files.
๐ฅ Installation
pip install jyinit
Or clone locally for development:
git clone https://github.com/nj2216/jyinit.git
cd jyinit
pip install -e .
๐ Usage
Show help
jyinit --help
Interactive mode
Prompts for template, license, Python version, etc.
jyinit create myproj --interactive
Non-interactive example
Create a Flask app with CI, initialize git, and push to GitHub:
jyinit create myrepo --types flask --ci --gitrep https://github.com/you/myrepo.git
Multiple templates (monorepo style)
jyinit create combo --types streamlit mlops --venv --gitrep
List available templates and licenses
jyinit list-templates
โ๏ธ CLI Options
| Option | Description |
|---|---|
--type |
Legacy: single template scaffold |
--types |
One or more templates (library, flask, fastapi, django, โฆ) |
--dir |
Base directory for project |
--license |
Choose license (default: MIT) |
--author |
Author name (defaults to system user) |
--py |
Minimum Python version (default: 3.8) |
--git |
Initialize git (no remote) |
--gitrep [url] |
Init git + set optional remote & push |
--venv |
Create .venv per subproject |
--no-tests |
Skip creating tests/ folder |
--ci |
Add tailored GitHub Actions workflow |
--interactive |
Prompt for missing values |
--dry-run |
Preview without writing files |
๐ Example Generated Project Structure
For a Flask project:
myrepo/
โโโ README.md
โโโ LICENSE
โโโ requirements.txt
โโโ myrepo/
โ โโโ __init__.py
โโโ tests/
โ โโโ __init__.py
โโโ .github/
โโโ workflows/
โโโ python-package.yml
For a monorepo with streamlit + mlops, youโll get:
combo/
โโโ README.md
โโโ streamlit/
โ โโโ ...
โ โโโ tests/
โโโ mlops/
โ โโโ ...
โ โโโ tests/
๐ Development
Clone the repo and install dev dependencies:
pip install -r requirements-dev.txt
Run tests (if you scaffolded pytest):
pytest
๐ License
jyinit is licensed under the MIT License. See LICENSE for details.
๐ Acknowledgments
Inspired by Python project cookiecutters, but with interactive scaffolding, monorepo support, and built-in CI.
๐ค Contributing
Contributions are welcome! ๐
Please see our CONTRIBUTING.md for guidelines on how to report issues, propose changes, and submit pull requests.
๐งโ๐ป Code of Conduct
This project follows the Contributor Covenant Code of Conduct.
By participating, you are expected to uphold this code. Please report any unacceptable behavior to the maintainers.
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 jyinit-0.0.8.tar.gz.
File metadata
- Download URL: jyinit-0.0.8.tar.gz
- Upload date:
- Size: 39.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
54c7aa21b0fd273bd7e879c33c3eabd8e950596a204ee8391429404d0704c4ff
|
|
| MD5 |
d5a6e841b47085f3772652479365e45f
|
|
| BLAKE2b-256 |
2cd4d9cca30ee119d121b33c927bc1d19efd138f77ab1893ddd45867f533acb1
|
Provenance
The following attestation bundles were made for jyinit-0.0.8.tar.gz:
Publisher:
publish.yml on nj2216/jyinit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
jyinit-0.0.8.tar.gz -
Subject digest:
54c7aa21b0fd273bd7e879c33c3eabd8e950596a204ee8391429404d0704c4ff - Sigstore transparency entry: 504837234
- Sigstore integration time:
-
Permalink:
nj2216/jyinit@dfcad085ea759f098bc71e81415503b4e24eba93 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/nj2216
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@dfcad085ea759f098bc71e81415503b4e24eba93 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file jyinit-0.0.8-py3-none-any.whl.
File metadata
- Download URL: jyinit-0.0.8-py3-none-any.whl
- Upload date:
- Size: 37.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 |
d041bbee543f5877aba445fa3ff534130c94198bc36771b8cf1cce8709b2262f
|
|
| MD5 |
9d14b1efee903c7a67639a6a8c92123b
|
|
| BLAKE2b-256 |
ef53326f1b544449971693092d92ea55a4224838ba28818c1d8e42db2add8fc9
|
Provenance
The following attestation bundles were made for jyinit-0.0.8-py3-none-any.whl:
Publisher:
publish.yml on nj2216/jyinit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
jyinit-0.0.8-py3-none-any.whl -
Subject digest:
d041bbee543f5877aba445fa3ff534130c94198bc36771b8cf1cce8709b2262f - Sigstore transparency entry: 504837254
- Sigstore integration time:
-
Permalink:
nj2216/jyinit@dfcad085ea759f098bc71e81415503b4e24eba93 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/nj2216
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@dfcad085ea759f098bc71e81415503b4e24eba93 -
Trigger Event:
workflow_dispatch
-
Statement type: