Skip to main content

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, .env setups, and docker-compose.yml for 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:

  1. Standard django-admin startproject setup.
  2. Custom settings/URLs rendering via Jinja templates to suit your database/flavor choices.
  3. Creation of .env.example, .gitignore, Dockerfile, and docker-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:

  1. Selectors (selectors.py): Contains pure database query functions. They return QuerySets or dictionaries/objects and do not mutate state.
  2. Services (services.py): Contains business logic and mutators (creating, updating, deleting database records). Wrapped in @transaction.atomic to ensure transactional integrity.
  3. APIs (apis.py / views.py): Translates requests, triggers services or selectors, and serializes responses. Keep them light.
  4. Models (models.py): Pure schema definition and DB relationships, minimal or zero business logic.

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

dj_scaffold_imhotep-1.0.1.tar.gz (10.4 kB view details)

Uploaded Source

Built Distribution

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

dj_scaffold_imhotep-1.0.1-py3-none-any.whl (12.7 kB view details)

Uploaded Python 3

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

Hashes for dj_scaffold_imhotep-1.0.1.tar.gz
Algorithm Hash digest
SHA256 dcdf98be4d0a3c990dc5478c550a3707dc071259562b9e70dc93905346bd7393
MD5 959bfa335239370a1647351dde946a4e
BLAKE2b-256 30c96f3a01db05dbe5a2888b73e1af271006fa63a2948486c28d84197cd782d1

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dj_scaffold_imhotep-1.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for dj_scaffold_imhotep-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 35d6da11fb0103f49864e93faed3d803252c1fad58598eb813567d6b21f03f7a
MD5 08beab1ac10be001567ecd34c42b01b4
BLAKE2b-256 404f9fc97ebd56abfa9e6b899ecdc3882a5f00f23a5322f29dffa72921463a84

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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