Skip to main content

A CLI tool to setup Django project

Project description

djinit

PyPI didn't allow the original name, so you'll find it as djinitx on PyPI

PyPI Django Python License

A CLI that scaffolds production-ready Django projects with DRF, JWT auth, API docs, and deployment configs - all through an interactive wizard. No more copy-pasting settings or wiring up apps by hand.

pipx install djinitx
djinit setup

Installation

# Recommended - isolated environment
pipx install djinitx

# Or with uv
uv tool install djinitx

# Or with pip
pip install djinitx

Requires Python 3.13+.

Usage

Create a project

djinit setup
# or
dj setup

The wizard walks you through these choices:

  1. Project structure - Standard, Predefined (apps/ + api/), Unified (core/ + apps/), or Single Folder
  2. Project name and directory
  3. Database - PostgreSQL or MySQL; DATABASE_URL or individual env vars
  4. Frontend tools - Tailwind CSS, HTMX, and/or Vite (optional)
  5. Django apps - Name them; optionally nest under an apps/ package
  6. CI/CD - GitHub Actions, GitLab CI, both, or none

When you're done, you have a fully configured Django project ready to run.

Add apps later

djinit app users products orders

Creates the apps, registers them in INSTALLED_APPS, and wires up URL includes.

Generate secret keys

djinit secret
djinit secret --count 5 --length 64

What You Get

Every project ships with:

  • Split settings - base.py, development.py, production.py with sensible defaults
  • Django REST Framework - With JWT authentication (access + refresh tokens)
  • API documentation - Swagger UI at /docs/, ReDoc at /schema/
  • CORS - Configured for local dev, locked down for production
  • WhiteNoise - Static file serving, production-ready
  • django-jazzmin - Modern admin interface
  • Environment management - .env.sample with django-environ
  • Deployment configs - Dockerfile, Procfile, runtime.txt
  • CI/CD pipelines - GitHub Actions and/or GitLab CI
  • Task runner - Justfile with common commands
  • .gitignore - Python + Node defaults

Optional add-ons when selected:

Feature Package What's configured
Tailwind CSS django-tailwind-cli Settings, DaisyUI theme, Node install in Docker
HTMX django-htmx Installed app + HtmxMiddleware
Vite django-vite vite.config.ts, dev/prod mode toggles, CI build step

Development workflow

just dev              # Start dev server
just migrate          # Run migrations
just test             # Run tests
just lint             # Lint with ruff
just format           # Format with ruff
just vite             # Start Vite dev server (if selected)
just dev-full         # Django + Vite together (if selected)

No just installed? These map directly to Django management commands.

Project Structures

Standard

myproject/
├── manage.py
├── myproject/          # Config module
│   ├── settings/       # base.py, development.py, production.py
│   ├── urls.py
│   └── wsgi.py
└── apps/               # Your apps (optional)
    └── users/

Predefined

myproject/
├── manage.py
├── config/             # Django config
│   ├── settings/
│   └── urls.py
├── apps/               # Business logic
│   ├── users/
│   └── core/
└── api/                # API routes
    └── v1/

Unified

myproject/
├── manage.py
├── core/               # Django config
│   ├── settings/
│   └── urls.py
└── apps/               # Main application package
    ├── admin/
    ├── models/
    ├── serializers/
    ├── views/
    ├── urls/
    └── api/

Single Folder

myproject/
├── manage.py
├── project/            # Configurable name
│   ├── settings/
│   ├── urls.py
│   ├── models/
│   ├── api/
│   └── wsgi.py

Environment Setup

cp .env.sample .env

SQLite works out of the box for development. Swap in your production database when you're ready.

Packages

Package Role
Django Web framework
django-environ Environment variable management
django-jazzmin Admin UI
djangorestframework REST API toolkit
djangorestframework-simplejwt JWT authentication
drf-yasg Swagger/OpenAPI docs
django-cors-headers CORS handling
whitenoise Static file serving
gunicorn Production WSGI server
psycopg[binary] PostgreSQL driver
django-tailwind-cli Tailwind CSS (optional)
django-htmx HTMX (optional)
django-vite Vite bundler (optional)

API Endpoints

Endpoint Description
/admin/ Django admin
/token/ Obtain JWT pair
/token/refresh/ Refresh access token
/docs/ Swagger UI
/schema/ ReDoc

Contributing

Contributions are welcome. Open an issue or submit a PR.

  1. Fork the repo
  2. Create a feature branch (git checkout -b feature/whatever)
  3. Make your changes and run just test
  4. Submit a pull request

Match the existing code style - ruff linting and formatting are enforced.

License

MIT © Sankalp Tharu

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

djinitx-0.3.6.tar.gz (59.9 kB view details)

Uploaded Source

Built Distribution

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

djinitx-0.3.6-py3-none-any.whl (60.2 kB view details)

Uploaded Python 3

File details

Details for the file djinitx-0.3.6.tar.gz.

File metadata

  • Download URL: djinitx-0.3.6.tar.gz
  • Upload date:
  • Size: 59.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for djinitx-0.3.6.tar.gz
Algorithm Hash digest
SHA256 8347a10899862488add246e4832f5443916a7ae839fbbce55c351bfdb8caf141
MD5 cb45a7e195eff740600624c52f6f7247
BLAKE2b-256 97114d76c6a5ed016c2d3d986927823a261e05b2dad711e8a9fe62cb4824c54c

See more details on using hashes here.

File details

Details for the file djinitx-0.3.6-py3-none-any.whl.

File metadata

  • Download URL: djinitx-0.3.6-py3-none-any.whl
  • Upload date:
  • Size: 60.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for djinitx-0.3.6-py3-none-any.whl
Algorithm Hash digest
SHA256 57cbf0433f59ede85d5ce468323690083d71226339ea914823bfec6aef31b776
MD5 d0cd8fb7878a1647ad9314be3f8636d9
BLAKE2b-256 fa60e83f9982cf68c5764605878293e21a73860903691839d07ceec2081e1365

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