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
.venvor useuvand 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 bootstrappython -m venvuv
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.
Metadata
Release files for Djactory 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| djactory-0.1.0.tar.gz | 45.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| djactory-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 126.9 kB
Release files / djactory-0.1.0.tar.gz
| Download URL | djactory-0.1.0.tar.gz |
|---|---|
| Size | 45.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
630abc470d42a3f9ea63db6bc566706b8d2bd380a09350cd9bac01e9b2c8eba0
|
|
BLAKE2b-256 checksum How to use checksums |
ce0acfcd988c5d462d13d3c3323a8c8637ed5d7423b2b6c82eec1b0020b7018a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Release files / djactory-0.1.0-py3-none-any.whl
| Download URL | djactory-0.1.0-py3-none-any.whl |
|---|---|
| Size | 81.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
841db5917852026432809d8bce4ceb51f4af9b0dd68630dc9e3e961ee660e0d8
|
|
BLAKE2b-256 checksum How to use checksums |
8c562e77b3919f0c215b685658ebc4f0ec703f285ebd1e78ab979be7f7fc0997
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|