Skip to main content

An opinionated Python project initializer that sets up a new project with sensible defaults.

Project description

🚀 PIni — Project Initializer

PIni stands for Project Initializer — a blazing-fast CLI tool to scaffold new projects in your favorite frameworks with zero setup fuss.

Whether you're starting a new FastAPI, Django, DRF, Next.js, or plain Python project, PIni gets you a clean, standardized, production-ready starter in seconds.


⚙️ Features

  • ✅ Scaffolds common frameworks (FastAPI, Django, DRF, Next.js, Python)
  • 🔧 Pre-configured linters, formatters, and pre-commit hooks
  • 🧼 Opinionated defaults for code style, project structure, and .gitignore
  • 📝 Auto-generates README and adds author info
  • 🔒 Git initialized + first commit (so Commitizen doesn’t blow up)
  • ✨ Commitizen + semantic commits ready out-of-the-box

📦 Supported Frameworks

Framework Stack Extras
FastAPI Python uv, black, flake8, isort, pre-commit
Django Python uv, black, flake8, isort, pre-commit
DRF Python uv, black, flake8, isort, pre-commit
Next.js Node/TS Tailwind, Prettier, ESLint, Pre-commit, Commitizen
Python (bare) Python Linter config, Git, pyproject.toml, etc.
Python (CV) Python TODO

🚀 Usage & Installation

# Run the CLI
python cli.py

# Follow the prompts:
# - Choose framework
# - Enter project name
# - Enter author/email
# - Git init? Yes/No

🧰 Templates

All configs live under the /templates directory:

  • .gitignore
  • .pre-commit-config.yaml
  • README.md.tmpl
  • prettierrc, prettierignore
  • ISSUE_TEMPLATES
  • More to come (maybe)

🛣️ Roadmap

  • Add testing frameworks (pytest, vitest)
  • Add optional Dockerfile defaults
  • Improve Commitizen integration in JS flows
  • CLI flags for silent mode / auto init
  • Add more frameworks
  • Add Dockerized database initialization (MySQL, PostgreSQL, Supabase)

💡 Why?

I got tired of rewriting the same setup boilerplate for every new idea? PIni exists so you can stop configuring and start building without compromising on code quality and commits. No need to create the same custom components for frontend, just import them into the templates directory and it will auto-replicate.

In other words, this project is aimed at doing things in the best and laziest way possible.


🤝 Contributing

PRs welcome — just follow the code style and keep templates clean.


📜 License

MIT — do whatever you want, just don't make it worse 😄

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

pini-0.2.0.tar.gz (11.9 kB view details)

Uploaded Source

Built Distribution

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

pini-0.2.0-py3-none-any.whl (18.2 kB view details)

Uploaded Python 3

File details

Details for the file pini-0.2.0.tar.gz.

File metadata

  • Download URL: pini-0.2.0.tar.gz
  • Upload date:
  • Size: 11.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.3

File hashes

Hashes for pini-0.2.0.tar.gz
Algorithm Hash digest
SHA256 c699259b1d2f06c86dd8dc86dacb7d1f009a098d0e06f35a9f0e4d2c2b7629be
MD5 bc7cce519c87ba9c45dc9056374d1ea7
BLAKE2b-256 1fca2ce8d39ed459ec917f4702000a41d64c8a49e6e25783838c6f533a98ad4b

See more details on using hashes here.

File details

Details for the file pini-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: pini-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 18.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.3

File hashes

Hashes for pini-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9038fecc61293156eda9ceb16876d3b44d4a8aece766e06e031dfe91c4d80b8d
MD5 1f33bf9ec0df543ce195d50be79d587e
BLAKE2b-256 a68fa5ac05c72425aa247bc15906f6e5c8fa113128bff4d2f5548ef1ecd9b7bc

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