Skip to main content

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

jyinit-0.0.5.tar.gz (39.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jyinit-0.0.5-py3-none-any.whl (37.5 kB view details)

Uploaded Python 3

File details

Details for the file jyinit-0.0.5.tar.gz.

File metadata

  • Download URL: jyinit-0.0.5.tar.gz
  • Upload date:
  • Size: 39.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for jyinit-0.0.5.tar.gz
Algorithm Hash digest
SHA256 8bd0710683f40529a9955395fe4e34db139e8e842a694dbe08273afc6b593e44
MD5 88604b5044d5c2f8ae614a94f0558f4d
BLAKE2b-256 80bcbbefd623de4122dc29cf0192ddcc25daa5c3df659cda5204b8faf3e022e1

See more details on using hashes here.

File details

Details for the file jyinit-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: jyinit-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 37.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for jyinit-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 87505aa3f766461f438bb77b41997fa5f44b30720fc9510f499943b851cae479
MD5 870f5970a36eb039f287b926dce7ea47
BLAKE2b-256 8a756f4c3c613a0b66139eebb9691e1a90b037d40f227d2b9e8b577e1bbe6af6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page