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.0.tar.gz (10.2 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.0-py3-none-any.whl (12.7 kB view details)

Uploaded Python 3

File details

Details for the file dj_scaffold_imhotep-1.0.0.tar.gz.

File metadata

  • Download URL: dj_scaffold_imhotep-1.0.0.tar.gz
  • Upload date:
  • Size: 10.2 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.0.tar.gz
Algorithm Hash digest
SHA256 81f6eaae99217274f4d72926682407b26656c4bbfd3ccb16760b0f788742c6fc
MD5 c22da1eb84b76eb41b6ff85a74513377
BLAKE2b-256 763b09d582bd12af643b2664ec5ed5d3a00fb1d668aecf4898976c78bde48d51

See more details on using hashes here.

Provenance

The following attestation bundles were made for dj_scaffold_imhotep-1.0.0.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.0-py3-none-any.whl.

File metadata

File hashes

Hashes for dj_scaffold_imhotep-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ba05641cb8ffc8a19252c4a45714899bdbcb3026100615939158ebe93eec84fb
MD5 9bddd3b4197ef423a4e46586b6f3e560
BLAKE2b-256 6e8e40cae81c7c694ca784deb0dea122862b8b9fb2b710b15194567873e0cd0b

See more details on using hashes here.

Provenance

The following attestation bundles were made for dj_scaffold_imhotep-1.0.0-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