djinit
A fast, interactive CLI to bootstrap a modern, production‑ready Django project in minutes — featuring split settings, DRF and JWT integration, OpenAPI docs, CORS, static file handling via WhiteNoise, Postgres‑friendly configuration, CI/CD templates, deployment helpers, and battle‑tested defaults that deliver a polished developer experience out of the box.
- ✨ Split settings:
settings/base.py,settings/development.py,settings/production.py - 🧱 Optional nested apps layout (e.g.,
apps/) - 🧩 App scaffolding: URLs, serializers, routes
- 🔗 Project URLs wired automatically
- 🧰 Utility files:
.gitignore,README.md,.env.sample,requirements.txt,pyproject.toml - 🚀 Deploy helpers:
Justfile,Procfile,runtime.txt - 🛠️ CI/CD: GitHub Actions and/or GitLab CI
- 🎨 Polished UX with
rich
Demo
Tip: If the GIF doesn't load, open docs/demo.gif or view it on the repository page.
Installation
Using pipx (recommended):
pipx install git+https://github.com/S4NKALP/djinit
Using pip (user space):
pip install --user git+https://github.com/S4NKALP/djinit
From source:
git clone https://github.com/S4NKALP/djinit
cd djinit
pip install -e .
Requirements: Python 3.13+
Quick start
Run the interactive setup:
djinit setup
# or
dj setup
Prompts include:
- Project directory
- Django project name (used by
django-admin startproject) - Apps layout (flat vs nested package like
apps/) - App names (comma‑separated)
- CI/CD choice (GitHub, GitLab, both, none)
- Database config preference (
DATABASE_URLvs individual params)
Commands
djinit setupordj setup— Launch the interactive project generatordjinit app <names>ordj app <names>— Create one or more Django apps in an existing project- Examples:
djinit app usersordj app usersdjinit app users,products,ordersordj app users,products,ordersdjinit app users products ordersordj app users products orders
- Examples:
djinit secret [--count N] [--length L]ordj secret [--count N] [--length L]— Print random DjangoSECRET_KEYvalues- Example:
djinit secret --count 5 --length 50
- Example:
What gets generated
- Django project and apps, then structure validation
- Settings package and split settings
- Base/development/production settings
- Utility files
- App files:
urls.py,serializers.py,routes.py - Project
urls.py(auto‑includes your apps) - Updated
wsgi.py,asgi.py,manage.py Justfile,Procfile,runtime.txt- CI/CD workflows (per your selection)
Output highlights
config/settings/→__init__.py,base.py,development.py,production.pyapps/<app>/→urls.py,serializers.py,routes.py- Project root →
.gitignore,README.md,.env.sample,requirements.txt,pyproject.toml,Justfile,Procfile,runtime.txt - CI/CD →
.github/workflows/and/or.gitlab-ci.yml
Note: If you choose a nested apps package (e.g., apps), imports and INSTALLED_APPS entries are configured accordingly.
Included packages (by default)
Generated requirements.txt includes:
- Django
- python-dotenv
- django-jazzmin
- djangorestframework
- djangorestframework-simplejwt
- drf-spectacular
- django-cors-headers
- whitenoise
- psycopg2-binary
- gunicorn
- dj-database-url (when you opt into
DATABASE_URL)
These give you a ready‑to‑use stack with DRF, JWT auth, OpenAPI schema generation, CORS, static files in production, and Postgres support.
Environment and database
- A
.env.sampleis generated to get you started. - If you opt into
DATABASE_URL,production.pyexpects an environment variable like:postgres://user:password@host:port/database
Contributing
Contributions are welcome! Please open an issue for bugs/ideas. PRs with clear descriptions are appreciated.
Acknowledgments
- Django and the Django community
- Jinja2
- rich
- click
- ruff
License
MIT © Sankalp Tharu
