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
💡 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.
📦 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 (base) | Python | Linter config, Git, pyproject.toml, etc. |
| Python (CV) | Python | TODO |
🚀 Usage & Installation
uv tool install pini
pini configure
pini create
# Follow the prompts and enjoy!
🧰 Templates
All configs live under the /templates directory:
.gitignore.pre-commit-config.yamlREADME.md.tmplprettierrc,prettierignoreISSUE_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)
🤝 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
Release history Release notifications | RSS feed
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 pini-1.5.2.tar.gz.
File metadata
- Download URL: pini-1.5.2.tar.gz
- Upload date:
- Size: 17.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7b8b8b78e3a4bda3be577912354e010b2ccfde060bda434fc9a625c727548a3b
|
|
| MD5 |
67613b3a68e828551c6ba5c6c139087a
|
|
| BLAKE2b-256 |
90c322d338d45138c3e039bca07ee233aa1c70821fa3c7469651be0262cf49c6
|
File details
Details for the file pini-1.5.2-py3-none-any.whl.
File metadata
- Download URL: pini-1.5.2-py3-none-any.whl
- Upload date:
- Size: 24.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
70b7a5f2805c40eef6728d53b4154aaa5d591642fce835544abda2da96f58781
|
|
| MD5 |
6bc60b42348cb93f51dda3db1c4ee5c2
|
|
| BLAKE2b-256 |
d3df9e86cb9e7f59e1ba2db52e259ae2a2c2c56cb88a1a6f7fe030cecac34539
|