Skip to main content

An interactive Django project factory with architecture selection, feature composition, and optional environment bootstrap.

Project description

Djactory

Djactory is an interactive Django project factory. It helps you choose an architecture, API style, authentication stack, feature modules, design patterns, and now an optional project environment bootstrap in one flow.

What it does

  • Guides you through project creation with a Rich-powered wizard instead of a long flags list
  • Generates Django projects for clean architecture, modular monolith, layered Django, and microservices-ready layouts
  • Supports DRF, GraphQL, hybrid REST + GraphQL, and SSR delivery modes
  • Composes authentication, background jobs, Redis, Channels, logging, Docker, CI, and more
  • Recommends sensible defaults based on the project name and description
  • Can optionally create .venv or use uv and install the generated project dependencies immediately

Install

pip install Djactory

The installed commands are:

djactory

Legacy alias:

djangoforge

Quick start

Run the interactive wizard:

djactory

Or explicitly:

djactory new

Choose the architecture and features you want, then decide how Djactory should handle the environment:

  • Skip environment bootstrap
  • python -m venv
  • uv

If you choose python -m venv or uv, Djactory can also install the generated project's dependencies automatically.

Example flow

Project name: Acme Booking
Description: Multi-tenant booking platform for hotels
Architecture: Modular Monolith
API: Django REST Framework
Authentication: JWT
Frontend: Next.js ready
Features: Redis, Celery, Docker, CI/CD
Patterns: Service Layer, Repository, Unit of Work
Environment: python -m venv
Install dependencies now: yes

That produces a Django project with a .venv, project dependencies installed, and a scaffold shaped for a SaaS-style booking backend.

Example generated tree

acme-booking/
├── .env.example
├── Dockerfile
├── README.md
├── manage.py
├── pyproject.toml
└── src/
    └── acme_booking/
        ├── api/
        ├── apps/
        │   ├── core/
        │   └── users/
        ├── config/
        │   └── settings/
        └── shared/

Typical commands

Create a new project in the current directory:

djactory

Create a new project in a specific folder:

djactory new --output-dir ~/workspaces

Check the installed version:

djactory --version

Generated project setup

If you skip bootstrap, the generated project still contains everything needed to start manually:

cd your-project
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
cp .env.example .env
python manage.py migrate
python manage.py runserver

If you choose uv, install it first from the official installer and let Djactory run the environment creation and dependency sync for you.

Development

python3 -m pip install -e ".[dev]"
python3 -m unittest discover -s tests -v

Packaging

Build distributions locally:

python3 -m pip install -e ".[publish]"
python3 -m build
python3 -m twine check dist/*

Publishing notes are in PUBLISHING.md.

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

djactory-0.1.0.tar.gz (45.6 kB view details)

Uploaded Source

Built Distribution

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

djactory-0.1.0-py3-none-any.whl (81.2 kB view details)

Uploaded Python 3

File details

Details for the file djactory-0.1.0.tar.gz.

File metadata

  • Download URL: djactory-0.1.0.tar.gz
  • Upload date:
  • Size: 45.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for djactory-0.1.0.tar.gz
Algorithm Hash digest
SHA256 630abc470d42a3f9ea63db6bc566706b8d2bd380a09350cd9bac01e9b2c8eba0
MD5 62a0ce1ba273ef5ad60ee6bf4070601e
BLAKE2b-256 ce0acfcd988c5d462d13d3c3323a8c8637ed5d7423b2b6c82eec1b0020b7018a

See more details on using hashes here.

File details

Details for the file djactory-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: djactory-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 81.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for djactory-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 841db5917852026432809d8bce4ceb51f4af9b0dd68630dc9e3e961ee660e0d8
MD5 3e5cf00a95843d53431af7e83fd062f7
BLAKE2b-256 8c562e77b3919f0c215b685658ebc4f0ec703f285ebd1e78ab979be7f7fc0997

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