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

djinit helps you set up a production‑ready Django project in minutes. No more copy‑pasting settings or manually wiring up apps—just answer a few questions and get a modern Django project with REST API, authentication, documentation, and deployment configs ready to go.

Why djinit?

Starting a Django project usually means spending hours setting up the same things: splitting settings for dev/prod, configuring DRF, adding JWT auth, setting up CORS, preparing for deployment. djinit does all of this for you with sensible defaults and lets you choose the project structure that fits your needs.

Installation

Recommended (using pipx):

pipx install djinitx

Or with pip:

pip install djinitx

Or with uv:

uv tool install djinitx

Requirements: Python 3.13+

Getting Started

djinit setup

or the shorter alias:

dj setup

The wizard will ask you a few questions:

  1. What structure do you want?

    • Standard – Classic Django layout with split settings
    • Predefined – Organized with apps/ and api/ folders (great for larger projects)
    • Unified – Everything under core/ and apps/ (clean and minimal)
    • Single Folder – All apps in one configurable folder (simple and flat)
  2. Project Setup – Destination directory (use . for current) and project name.

  3. Database Configuration – Choose DATABASE_URL (recommended) or individual variables; pick PostgreSQL or MySQL.

  4. Django Apps (Standard structure only) – Whether to create an apps/ folder and which apps to scaffold.

  5. CI/CD Pipeline – GitHub Actions, GitLab CI, both, or skip it.

That’s it—your project will be ready with everything configured.

What You Get

  • Split settings for development and production
  • Django REST Framework with JWT authentication
  • API documentation (Swagger UI at /docs/)
  • CORS configured for local development
  • WhiteNoise for static files
  • PostgreSQL support (SQLite for dev)
  • Modern admin interface (django-jazzmin)
  • Deployment ready with Procfile and runtime.txt
  • Development tools (Justfile with common commands)
  • Environment template (.env.sample)
  • Git ready (.gitignore included)

Commands

Create a Project

djinit setup

Add Apps to an Existing Project

djinit app users products orders

Creates the apps, adds them to INSTALLED_APPS, and wires up URLs.

Generate Secret Keys

djinit secret

Use --count 5 to generate five keys or --length 64 to change the length.

Project Structures

Standard Structure

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

Single Folder Layout

myproject/
├── manage.py
├── project/            # Configurable folder name
│   ├── settings/
│   ├── urls.py
│   ├── models/         # All models here
│   ├── api/            # API views & serializers
│   │   └── your_model_name/
│   │       ├── views.py
│   │       ├── serializers.py
│   │       └── urls.py
│   └── wsgi.py

Predefined Structure

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

Unified Structure

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

Development Workflow

Your project ships with a Justfile for common tasks:

just dev              # Start dev server
just migrate          # Run migrations
just makemigrations   # Create migrations
just shell            # Django shell
just test             # Run tests
just format           # Format code
just lint             # Lint code

If you don’t have just installed, these are just shortcuts for the equivalent Django commands.

What's Included

Packages

  • Django – Web framework
  • Django REST Framework – API toolkit
  • djangorestframework‑simplejwt – JWT authentication
  • drf‑spectacular – OpenAPI/Swagger docs
  • django‑cors‑headers – CORS handling
  • django‑jazzmin – Modern admin UI
  • whitenoise – Static file serving
  • psycopg2‑binary – PostgreSQL driver
  • gunicorn – Production WSGI server
  • python‑dotenv.env handling

API Endpoints

Endpoint Description
/admin/ Django admin
/token/ Obtain JWT token
/token/refresh/ Refresh JWT token
/docs/ Swagger UI (dev only)
/schema/ OpenAPI schema (dev only)

Settings Overview

  • Development – SQLite, DEBUG=True, console email backend, permissive CORS.
  • Production – PostgreSQL, hardened security settings, SMTP email backend, strict CORS.

Environment Setup

Copy the sample file and fill in your values:

cp .env.sample .env
SECRET_KEY=your-secret-key-here  # Generate with: djinit secret
DATABASE_URL=postgres://user:pass@host:5432/db
ALLOWED_HOSTS=yourdomain.com,www.yourdomain.com

SQLite works out of the box for development—no extra DB setup required.

Roadmap

The following items are tracked in TODO.md and represent the near‑future direction of djinit.

Planned Features

  • Docker Support – Auto‑generate a Dockerfile for containerized deployments.
  • Frontend Integration – Scaffold React, Vue, or HTMX alongside the Django backend.
  • Celery Integration – Simplify background task setup with Celery.
  • More Packages – Add optional integrations for popular Django packages.

Enhancements

  • Add more project structure templates – Expand the set of ready‑made layouts.
  • Add testing framework setup – Provide pytest and coverage configuration out of the box.
  • Fix bugs – Ongoing maintenance and bug resolution.

Completed

  • Interactive configuration wizard – Streamlined project creation experience.
  • Improved structure detection – Smarter detection of existing Django layouts.

Contributions that address any of the above items are highly welcome!

Contributing

Found a bug or have an idea? Open an issue or submit a pull request. Contributions are always welcome!

  1. Fork the repository.
  2. Create a feature branch (git checkout -b feature/awesome-feature).
  3. Make your changes and ensure tests pass (just test).
  4. Submit a pull request with a clear description of the change.

Please follow the existing code style (ruff + black) and include tests for new functionality.

License

MIT © Sankalp Tharu


© 2024 Sankalp Tharu. All rights reserved.

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.4.tar.gz (59.1 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.4-py3-none-any.whl (58.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: djinitx-0.3.4.tar.gz
  • Upload date:
  • Size: 59.1 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.4.tar.gz
Algorithm Hash digest
SHA256 85de92f43380f68b4902a58abcfeb7ed3f6c46789496a4fe2fe00c6d10916cab
MD5 d7a1db629a72e9e60b687a61c52b3fb5
BLAKE2b-256 19886fbc0d9df10f481888d51111d7ef339639604409ac7a189d7eec663aaba2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: djinitx-0.3.4-py3-none-any.whl
  • Upload date:
  • Size: 58.5 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.4-py3-none-any.whl
Algorithm Hash digest
SHA256 bbda6063626547d93ebd2f1c3ed8f819e42f818d7c002062ed4d11a3af0b755d
MD5 d654c9d26b161f2a16778cc2e9966deb
BLAKE2b-256 c0d9e15ac5048bd26656df73bebee2aeace58f7dba3012eec3eca36c226e50e6

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