Release Notes — v0.2.22 (October 31, 2026)

This release refreshes project generation and adds first-class Docker/Coolify deployment support to both generated projects and the framework repository.

1. Central framework app reference

Generated projects no longer list framework apps individually.

python
from enezaframework.conf import ENEZA_APPS, ENEZA_CONTEXT_PROCESSORS

INSTALLED_APPS = [
    # Django and third-party apps...
    *ENEZA_APPS,
    # Project apps...
]

enezaframework.conf now also exposes:

  • ENEZA_CONTEXT_PROCESSORS
  • framework_urlpatterns()
  • framework_websocket_urlpatterns()

enezaframework.urls includes the framework modules once, and enezaframework/routing.py supplies the framework websocket routes. Optional apps are included only when installed.

The default ENEZA_APPS set includes enezaframework, enezacommon, enezarbac, enezareporting, enezadashboard, enezacommunication, enezaadminstrator, enezaworkflowengine, enezanotification, enezaagents and humanresource.

2. Project and app scaffolding

eneza startproject now generates:

  • A dashboard-first root URL.
  • A core app with models/__init__.py and views/__init__.py.
  • No sample dashboard view, sample model or sample menu item.
  • A generated routing.py and ASGI configuration with websocket routing.
  • Dockerfile, .dockerignore, docker-compose.yml, .env.sample, requirements.txt and docker/init.sh, docker/web.sh, docker/worker.sh, docker/periodic.sh.

eneza startapp now generates the same empty models/views/migrations scaffold. The app remains menu-eligible through app_entry_menu, which resolves to the dashboard module entry. If no dashboard is defined, the dashboard app renders its empty state.

3. eneza adddeployment

New command for existing projects:

bash
eneza adddeployment [project_dir] --project-name myproject

It copies the deployment artifacts, replaces project placeholders, skips existing files by default, supports --force, and never writes .env or patches settings.py / urls.py. It prints a checklist for adopting ENEZA_APPS, enezaframework.urls and the deployment requirements.

4. Runtime and deployment

  • Docker Compose services: db, init, web, worker and periodic.
  • init runs migrations, cache table creation, site update, superuser bootstrap, RBAC bootstrap, dashboard seeding and static collection.
  • web runs Uvicorn on port 8000.
  • worker runs db_worker --queue-name=default,workflow_tasks.
  • periodic runs run_periodic.
  • Optional Redis is enabled with REDIS_URL and the redis Compose profile.
  • Production static files use WhiteNoise; media is served by Django when SERVE_MEDIA=1.
  • Environment-driven settings cover Coolify hosts/CSRF origins, PostgreSQL, static/media roots, security headers and optional Redis.

5. Management commands

  • New ensure_superuser: creates the bootstrap admin from DJANGO_SUPERUSER_*; never resets an existing password.
  • New ensure_site: updates the django.contrib.sites row from DJANGO_SITE_DOMAIN or COOLIFY_FQDN.
  • New seed_hr_sample: creates an idempotent sample HR entity, department, job, position, employee and linked demo user; optionally grants entity access and assigns roles. Enabled optionally with SEED_HR_SAMPLE=1.
  • Init scripts run the existing rbac_bootstrap, seed_dashboards and optional seed_hr_roles commands, plus the optional sample HR seed.

6. Packaging and CLI

  • Version bumped to 0.2.22.
  • Added the eneza console script entry point.
  • Package discovery now includes every eneza* and humanresource* package and its data automatically in the wheel, so new framework apps do not need a per-app package_data entry. MANIFEST.in lists the current app packages for source distributions.
  • humanresource is now part of the distribution and manifest.
  • Project template dotfiles (.env.sample, .dockerignore) are explicitly packaged.
  • Root requirements include the deployment dependencies (uvicorn, psycopg, dj-database-url, whitenoise, channels-redis).

7. Upgrading existing projects

  1. Run eneza adddeployment --project-name <package> in the project root.
  2. Add from enezaframework.conf import ENEZA_APPS and *ENEZA_APPS to INSTALLED_APPS.
  3. Replace individual framework URL includes with path("", include("enezaframework.urls")).
  4. Add ensure_superuser, ensure_site, rbac_bootstrap and seed_dashboards to the deploy pipeline.
  5. Merge the deployment requirements into the existing requirements file.
  6. Update .env from .env.sample.

On Windows, record the DockerFile to Dockerfile case rename before committing:

bash
git mv DockerFile Dockerfile.tmp
git mv Dockerfile.tmp Dockerfile

Validation

Per project rules, the developer or agent does not run or claim test results. The user is solely responsible for all testing and validation of generated projects, Docker images, migrations, seeding and Coolify deployments.