Interactive enterprise scaffolding tool for Dockerized Django applications.
Project description
dj-scaffold 🚀
A modern, interactive scaffolding CLI for Django projects, inspired by frontend tools like create-next-app. It helps developers set up containerized, production-ready Django applications and enforces a clean Service Layer Architecture for modular, testable django applications.
Features
- ✨ Interactive Prompts: Quick setup via terminal menus using arrow keys.
- 🐳 Dockerized by Default: Generate production-ready
Dockerfile,.envsetups, anddocker-compose.ymlfor PostgreSQL or MySQL. - 🛠️ API Flavors: Choose from Standard Django, Django REST Framework + Spectacular (OpenAPI 3.0), or Django Ninja.
- 🏗️ Service Layer Architecture: Scaffolding for app structure segregating HTTP API route handlers (
apis.py), Business Logic mutations (services.py), Database Queries (selectors.py), and Models (models.py).
Installation
The easiest way to install dj-scaffold is from PyPI:
pip install dj-scaffold-imhotep
(For local development: clone the repository and run pip install -e .)
Usage
1. Creating a New Django Project
To create a new project:
dj-scaffold create [project_name]
If the project name is omitted, you will be prompted to enter one. The interactive shell will then guide you through selecting the database and API framework.
Commands run under the hood:
- Standard
django-admin startprojectsetup. - Custom settings/URLs rendering via Jinja templates to suit your database/flavor choices.
- Creation of
.env.example,.gitignore,Dockerfile, anddocker-compose.yml.
2. Creating a New Service App
To create a new app:
dj-scaffold startapp [app_name]
If the app name is omitted, you will be prompted. You will then select whether you want a Standard Django app or a Service Layer Pattern app.
Under the Service Layer selection, the following file structure is created:
your_app/
├── __init__.py
├── apps.py
├── models.py
├── apis.py
├── services.py
├── selectors.py
└── urls.py
Architecture: Why the Service Layer Pattern?
Standard Django often leads to bloated model methods (Fat Models) or complex views (Fat Views). The Service Layer Pattern enforces separation of concerns:
- Selectors (
selectors.py): Contains pure database query functions. They return QuerySets or dictionaries/objects and do not mutate state. - Services (
services.py): Contains business logic and mutators (creating, updating, deleting database records). Wrapped in@transaction.atomicto ensure transactional integrity. - APIs (
apis.py/views.py): Translates requests, triggers services or selectors, and serializes responses. Keep them light. - Models (
models.py): Pure schema definition and DB relationships, minimal or zero business logic.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dj_scaffold_imhotep-1.0.1.tar.gz.
File metadata
- Download URL: dj_scaffold_imhotep-1.0.1.tar.gz
- Upload date:
- Size: 10.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dcdf98be4d0a3c990dc5478c550a3707dc071259562b9e70dc93905346bd7393
|
|
| MD5 |
959bfa335239370a1647351dde946a4e
|
|
| BLAKE2b-256 |
30c96f3a01db05dbe5a2888b73e1af271006fa63a2948486c28d84197cd782d1
|
Provenance
The following attestation bundles were made for dj_scaffold_imhotep-1.0.1.tar.gz:
Publisher:
publish-pypi.yml on Imhotep-Tech/dj-scaffold
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dj_scaffold_imhotep-1.0.1.tar.gz -
Subject digest:
dcdf98be4d0a3c990dc5478c550a3707dc071259562b9e70dc93905346bd7393 - Sigstore transparency entry: 1994136409
- Sigstore integration time:
-
Permalink:
Imhotep-Tech/dj-scaffold@f4ed76b9ebc8ab90f7012baff6ea2874303cacd4 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/Imhotep-Tech
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@f4ed76b9ebc8ab90f7012baff6ea2874303cacd4 -
Trigger Event:
push
-
Statement type:
File details
Details for the file dj_scaffold_imhotep-1.0.1-py3-none-any.whl.
File metadata
- Download URL: dj_scaffold_imhotep-1.0.1-py3-none-any.whl
- Upload date:
- Size: 12.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
35d6da11fb0103f49864e93faed3d803252c1fad58598eb813567d6b21f03f7a
|
|
| MD5 |
08beab1ac10be001567ecd34c42b01b4
|
|
| BLAKE2b-256 |
404f9fc97ebd56abfa9e6b899ecdc3882a5f00f23a5322f29dffa72921463a84
|
Provenance
The following attestation bundles were made for dj_scaffold_imhotep-1.0.1-py3-none-any.whl:
Publisher:
publish-pypi.yml on Imhotep-Tech/dj-scaffold
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dj_scaffold_imhotep-1.0.1-py3-none-any.whl -
Subject digest:
35d6da11fb0103f49864e93faed3d803252c1fad58598eb813567d6b21f03f7a - Sigstore transparency entry: 1994136490
- Sigstore integration time:
-
Permalink:
Imhotep-Tech/dj-scaffold@f4ed76b9ebc8ab90f7012baff6ea2874303cacd4 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/Imhotep-Tech
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@f4ed76b9ebc8ab90f7012baff6ea2874303cacd4 -
Trigger Event:
push
-
Statement type: