Minor formatting tweaks and clarified wording.
New Features
-
Enhancements
- Updated badge links and wording for Django and Python versions.
- Adjusted bullet punctuation and wording for consistency.
- Clarified installation comment formatting.
Bug Fixes
-
Add support for optional database URL configuration and silence import-related flake8 warnings.
- New Features: Introduce conditional import of `dj_database_url` in production settings.
- Enhancements: Suppress flake8 warnings for base imports using `# noqa: F401, F403`.
- Bug Fixes: None.
Add a concise overview of the new content and purpose.
- New Features
- Interactive project scaffolding wizard (`djinit setup` / `dj setup`) offering multiple layouts, database options, and frontend tooling.
- Command‑line secret generation (`djinit secret`) with customizable count and length.
- Detailed usage examples, command shortcuts, and supported CI/CD configurations.
- Updated installation instructions using pipx, uv, and pip.
- Enhancements
- Switched CI configuration to GitHub Actions.
- Added comprehensive API endpoint table, settings summary, and package reference.
- Included installation badges and code snippets for quick start.
- Bug Fixes
- (none reported)
- New Features
- Custom .gitignore generation using use_tailwind and use_vite flags from project metadata
- Justfile now includes Vite configuration flag context
- Enhancements
- Dynamic template rendering with project‑specific context for better project setup reflectivity
- Bug Fixes
- (none)
Add `use_vite` flag to metadata processing and include it in the development context dictionary.
- New Feature: expose Vite integration flag
- Enhancement: extend dev_context with use_vite value
- No bug fixes
Introduce Vite‑based frontend workflow and adjust related templates and CI configurations. Switch drf‑spectacular to drf‑yasg, add conditional Node.js setup, and update ignored files accordingly.
- New Features
- Conditional Vite integration via `use_vite` flag
- npm install and build steps added to Dockerfile and CI pipelines
- Vite dev server command added to `justfile` with `dev-full` target
- Updated CI scripts (GitHub Actions, GitLab CI) to run Vite build when enabled
- Dependency change from `drf-spectacular` to `drf-yasg` in `pyproject.toml`
- Enhancements
- Modify `.gitignore` to exclude `node_modules` only when using frontend tools
- Update Dockerfile to conditionally install Node.js packages for Vite
- Adjust GitHub Actions and GitLab CI templates to include Node setup steps
- Bug Fixes
- Replace `drf-spectacular` with `drf-yasg` to align with current API documentation practices
New Features
- Introduce selectable frontend tooling (Tailwind CSS, HTMX, Vite) via optional scaffolding
- Add `just vite` and `just dev-full` commands for Vite integration
- Replace `drf-spectacular` with `drf-yasg` for Swagger documentation
- Update API endpoint table to list ReDoc instead of Swagger UI
Enhancements
- Reorder Django Apps selection to reflect standard structure only
- Bump project version to 0.3.4 and update roadmap in TODO.md
Bug Fixes
- Remove placeholder “Fix bugs” entry from TODO.md
- New Features
- Switched to drf_yasg and updated schema configuration.
- Enhancements
- Updated DEFAULT_SCHEMA_CLASS to rest_framework.schemas.coreapi.AutoSchema.
- Refactored URL patterns to use drf_yasg schema views.
- Bug Fixes
- No bug fixes included.
- New Features
- Insert manifest_path and static_url_prefix into base settings for Vite output
- Enable/disable dev mode via DJANGO_VITE["default"]["dev_mode"] in development and production templates
- Add django‑vite dependency conditionally when use_vite is set in pyproject.toml and requirements
- Create new vite.config.ts template with React, Tailwind, dev server proxy, and asset resolution
- Enhancements
- Align Tailwind and Django settings to respect Vite mode
- Update dependency templates to reflect Vite usage
- Bug Fixes
- (none)
Add Vite scaffolding support to allow users to initialize projects with Vite.
- New Features
- Added `use_vite` flag to `StructureOptions`.
- Added `get_vite_choice()` method to `InputCollector` with confirmation dialog.
- Extended metadata dictionary to include `use_vite`.
- Updated project generation to propagate Vite configuration.
- Enhancements
- Integrated Vite confirmation into the CLI prompt flow.
- Updated project metadata creation to include Vite settings.
Add a boolean `use_vite` to `ProjectMetadata` to control Vite integration and include it in the serialized project metadata.
- New Features: Introduce `use_vite` configuration option.
- Enhancements: Expose `use_vite` in metadata output.
Introduce Vite configuration generation and propagate the use_vite flag across templates to enable modern frontend tooling.
New Features- Add `create_vite_config` method to generate `vite.config.ts`.
- Propagate `use_vite` metadata to all relevant context dictionaries.
- Include Vite usage in Dockerfile, requirements.txt, pyproject.toml, and CI pipelines.
Enhancements
- Update context preparation to embed Vite flag alongside Tailwind and HTMX.
- Refine template documentation to mention Tailwind, HTMX, and Vite integration.
Bug Fixes
- None.
The new metadata enables optional Tailwind CSS and HTMX support in generated Django projects, expanding customization capabilities.
New Features:
- Expose `use_tailwind` and `use_htmx` flags in the pyproject.toml template.
- Inject these flags into GitHub Actions and GitLab CI configuration templates.
Enhancements:
- Centralized handling of Tailwind and HTMX configuration flags across all generated files.
The CI templates were refactored to simplify configuration, remove redundant services, and enable better cache reuse while maintaining compatibility across Python versions.
- New Features
- Consolidated caching logic with `cache-suffix` per Python version.
- Integrated security check directly into the main pipeline.
- Enhancements
- Reduced matrix size to only Python 3.13.
- Replaced manual PostgreSQL setup with Django checks using `DJANGO_SETTINGS_MODULE` and `SECRET_KEY`.
- Merged duplicate test and security steps across CI platforms.
- Bug Fixes
- Fixed missing `python-version` entries that caused undefined matrix behavior.
- Resolved duplicate environment variable definitions in GitLab CI.
Introduce Dockerfile and dockerignore templates to scaffold Docker‑ready Django projects, providing conditional system‑level dependencies for databases and optional Tailwind support, and a comprehensive ignore list for generated projects.
- New Features
- Dockerfile template with conditional apt packages for MySQL or PostgreSQL, and optional Tailwind installation.
- dockerignore template covering Python bytecode, virtual environments, OS artifacts, Django static/media files, and common VCS files.
- Enhancements
- Expand project scaffolding to include ready‑to‑use container configuration files.
Introduce automatic creation of Dockerfile and .dockerignore during project scaffolding, enabling container‑ready setups out of the box.
* New Features
- `create_dockerfile` method renders Dockerfile with configurable context (module name, database type, Tailwind usage).
- `create_dockerignore` method generates a .dockerignore file to exclude unnecessary files from containers.
* Enhancements
- Added both methods to the setup pipeline in `SetupCreator` so they are executed automatically.
- Context values are derived from project metadata, allowing customization per project.
* Bug Fixes - None
Introduce Tailwind and HTMX support with conditional placeholders and correct static/media URL prefixes.
- New Features
- Add django_tailwind_cli and django_htmx when enabled
- Add HtmxMiddleware to middleware stack
- Pin Tailwind CLI version and set distribution CSS path in production
- Configure Tailwind theme and daisyui settings
- Enhancements
- Prefix STATIC_URL and MEDIA_URL with '/' for proper URL handling
- Update requirements templates with new optional dependencies
- Expand pyproject.toml metadata and dependency groups
- Bug Fixes
- Fix missing leading slash in STATIC_URL and MEDIA_URL
- Pin Tailwind CLI version to avoid unexpected upgrades
**New Features**
- Add `use_tailwind` and `use_htmx` boolean fields to `ProjectMetadata` with defaults set to `False`.
- Update `ProjectMetadata.__init__` mapping to include these new attributes, ensuring they are persisted in project metadata.
Add configurable `use_tailwind` and `use_htmx` flags to the Django starter project context, allowing users to optionally include Tailwind CSS and HTMX JavaScript libraries.
- New Features:
- Introduce `use_tailwind` and `use_htmx` metadata flags in `base_settings_context`.
- Propagate these flags to `requirements.txt`, generated `settings.py`, and CI configuration templates.
- Enhancements:
- Ensure the flags are consistently available across all templated files.
- Bug Fixes: None.
New Features:
- Add `use_tailwind` metadata option (default False) for Tailwind CSS support.
- Add `use_htmx` metadata option (default False) for HTMX support.
Enhancements:
- Extend DjangoHelper context to include the new flags in generated settings.
- New Features:
- Add `use_tailwind` and `use_htmx` fields to `StructureOptions` and expose confirmation prompts via `get_tailwind_choice` and `get_htmx_choice`.
- Persist these selections in the generated metadata and pass them through the initialization flow.
- Enhancements:
- Include `use_tailwind` and `use_htmx` values when constructing the metadata dictionary.
- Display Tailwind CSS and HTMX choices in the final confirmation output.
- Bug Fixes: none
* New Features
* Replace the singular `STATICFILES_STORAGE` assignment with a `STORAGES` dictionary defining `default` and `staticfiles` backends.
* Enhancements
* Add `DEFAULT_AUTO_FIELD` setting for consistency with recent Django recommendations.
* Make storage backend definitions clearer and more extensible.
* Bug Fixes
* None.
Why: enable support for Python 3.13.
New Features
- Updated pyproject.toml template to target Python 3.13, allowing builds with newer interpreters.
Enhancements
- Improves compatibility with upcoming Python releases.
- New Features: Automatically include app URLs in project urls.py and api/v1/urls.py; Generate full AppConfig paths using a unified utility
- Enhancements: Improved nested-app detection and path resolution across predefined, standard, single, and unified structures; Refined context transformation for base settings; Updated URL template rendering
- Bug Fixes: Fixed duplicate include‑statement handling; Corrected URL update error paths and exception safety
- Add conditional logic to `_add_to_api_v1_urls` when `structure_type` is `"predefined"`
- Include `module_name` in contexts for `justfile` and `Procfile` templates
- Clarify `module_name` usage in `.env.sample` generation comment
New Features
- Replace double‑curly placeholder syntax with direct variable usage in justfile and procfile templates.
Enhancements
- Change psycopg2-binary to psycopg[binary] in pyproject.toml template.
- Update ruff.isort known‑first‑party from project_name to module_name.
- Adjust server commands to reference module_name placeholder and use variable syntax directly.
Bug Fixes- Fix placeholder expansion in dev‑server, makemigrations, install, and remove commands.
- Correct requirements generation script to handle missing pyproject.toml gracefully.
- Resolve incorrect variable substitution in gunicorn bind commands and worker count references.
Why: expose ability to toggle usage of DATABASE_URL in generated configuration.
New Features
- Add configurable `use_database_url` parameter to control inclusion of DATABASE_URL in generated pyproject.toml.
Enhancements
- Increase flexibility of database configuration for generated Django projects.
Bug Fixes
- (none)
Add conditional import of `dj_database_url` and a directive comment for `use_database_url` to enable automatic database configuration when the `use_database_url` flag is set, improving flexibility of the production settings template.
- New Features: Introduce support for reading `DATABASE_URL` to configure Django databases automatically.
- Enhancements: Conditional import improves template modularity and reduces unnecessary dependencies.
- Bug Fixes: None.
New Features
- Add optional `dj-database-url` dependency for database URL support.
Enhancements
- Replace `{{ project_name }}` with `[[ project_name ]]` in the env template for clearer interpolation.
Bug Fixes
- None
- Switch trigger to `pull_request_target` with `opened`, `synchronize`, and `reopened` events for safer automation
- Add explicit check that the actor is `dependabot[bot]` to prevent unintended executions
- Use `GITHUB_TOKEN` instead of a dedicated secret and enable `use-github-auto-merge` for automatic merging of minor updates
Remove leading space in SECRET_KEY assignment and replace uv pip compile with uv run python ... to produce requirements.txt.
New Features
- Introduce uv-driven dependency compilation in justfile.j2
- Ensure generated requirements.txt reflects project dependencies from pyproject.toml
Enhancements
- Align secret key configuration to match production standards (no extra whitespace)
Bug Fixes
- Eliminate accidental whitespace that could cause secret key validation issues
Remove legacy template placeholders that are no longer used in the project scaffold.
- New Features:
- Enhancements: Removed unused template files
- Bug Fixes:
Introduce command-line interface and supporting modules for project initialization.
- New Features:
- Add `cli.py` with Typer commands `secret` and `app`
- Implement custom exception hierarchy in `utils/exceptions.py`
- Provide secret key generation utilities in `utils/secretkey.py`
- Add name validation logic in `utils/validators.py`
- Initialize package with empty `__init__.py`
- Enhancements:
- Update `pyproject.toml` to include new modules and console script entry points
- Bug Fixes:
- (none)
The deletion of djinit's internal modules (cli, utils, services) eliminates obsolete code and prepares the repository for a streamlined Django project initialization approach.
- New Features:
- Enhancements:
- Bug Fixes:
These files (app.py, handler.py, secret.py) were no longer referenced by the active CLI flow and their removal eliminates dead code and import side‑effects.
New Features
-
Enhancements
- Streamlined command dispatch by dropping redundant handlers.
- Reduced module surface area, improving maintainability.
Bug Fixes
- Fixed import‑induced crashes when the CLI starts without these optional sub‑commands.
New Features
- Add Typer dependency.
Enhancements
- Move packages to src/ layout and update build configuration.
- Change console scripts to use djinit.cli:app.
- Exclude django-new from ruff checks.
- Raise minimum Python version to >=3.10.
Bug Fixes
- none
Added conditional comment handling for database settings in production template, introduced DATABASE_URL generation in env_sample, and corrected readme structure rendering.
New Features
- Added conditional comment handling for `use_database_url` and `database_type` in production settings.
- Added `DATABASE_URL` template logic for MySQL and PostgreSQL in env_sample.
- Updated `readme.md` template to properly render unified_structure sections.
Enhancements
- Ensured comment syntax consistency across all template files.
- Streamlined placeholder usage for clearer project scaffolding.
Bug Fixes
- Removed stray formatting characters from comment markers.
- Enhancements:
- Moved file and directory creation helpers into CommonUtils class
- Updated all call sites to use CommonUtils methods
- Removed unused standalone utility functions and imports
- Preserved existing behavior without functional changes
- Refactor imports to use CommonUtils for resolving package names
- Update calls in `InputCollector` and `get_user_input` to use `CommonUtils.get_package_name`
- No functional change; improve code consistency and future extensibility
New Features
- Added `app.py` command to scaffold Django apps with name validation and post‑creation instructions.
- Added `secret.py` command to generate configurable secret keys and display usage guidance.
Enhancements
- Refactored command dispatch in `handler.py` to delegate to specialized command classes, removing duplicated logic.
- Improved modularity and maintainability of command implementation.
Add foundational class hierarchy and refactor the template engine to use inheritance and common utilities, enhancing extensibility and code organization.
- New Feature: Added BaseObject, BaseService, BaseCommand, and BaseUtils classes in djinit/core/base.py providing common interfaces.
- Enhancement: Refactored TemplateEngine to inherit BaseService and utilize BaseUtils for logic parsing.
- Enhancement: Updated InFileLogicParser to enforce proper stack handling and simplified conditional block processing.
- Enhancement: Consolidated utility functions via CommonUtils in generator and ProjectManager, streamlining app configuration upgrades.
- New Features
- Detect and process nested project structures, generating correct module paths for AppConfig.
- Automatically upgrade legacy app configurations from simple module paths to full AppConfig paths.
- Enhancements
- Insert full AppConfig paths into USER_DEFINED_APPS, improving template rendering for all settings files.
- Provide clearer success and upgrade messages to users.
- Bug Fixes
- Avoid duplicate app entries and handle missing USER_DEFINED_APPS sections without crashing.
- Ensure proper __init__.py creation in nested directories.
Allows the generated AppConfig class to use a custom name derived from `app_config_name`, supporting optional `app_module` specification.
New Features
- Replace `app_name|title` placeholder with `app_config_name` for flexible config naming.
- Add conditional block that sets `name` to `app_module` when provided, otherwise falls back to `app_name`.
Enhancements
- Maintain backward compatibility by defaulting to the original `app_name` behavior.
- Improve template flexibility for future naming conventions.
Bug Fixes
- None.
This change introduces a helper to replace app entries in USER_DEFINED_APPS and makes the startapp command more flexible by allowing callers to specify the app module name.
New Features:
- Add replace_app_in_user_defined_apps utility function in djinit/utils/common.py
- Introduce app_config_name context and accept app_module argument in DjangoHelper.startapp()
Enhancements:
- Preserve indentation when replacing entries
- Allow custom app module specification instead of defaulting to app_name
Bug Fixes: (none)
New Features
- Adopt double-bracket placeholders (`[[ var ]]`) and rename templates to `.py-tpl`/.`md-tpl` extensions.
- Introduce new `runtime_txt-tpl` template.
Enhancements
- Update `api_readme`, `models`, `apps`, `routes`, `pyproject`, `readme`, and `requirements` templates with new syntax and naming.
- Align placeholder naming with a unified convention.
Bug Fixes
- None.
- New Features
* Introduce InFileLogicParser with support for @IF, @ELSEIF, @ELSE, @ENDIF, @LOOP syntax
- Enhancements
* Enable nested conditionals and iteration over iterables within templates
- Bug Fixes
* None
New Features
- Adopted .py-tpl/.j2-tpl suffixes for generated templates, making them distinct and Python-specific.
Enhancements
- Refactored TemplateEngine to use InFileLogicParser instead of Jinja2, simplifying rendering logic.
- Updated CLI utility to call create_pyproject for pyproject.toml generation.
- Modified template discovery to scan only files ending in -tpl.
- Adjusted file generation paths for Django app components and configuration files.
Bug Fixes
- Resolved template path resolution issues arising from the new suffix convention.
This change updates all template references from *.j2 to *.py-tpl to align with the new file naming convention and adds the required context for URL generation.
New Features
- Updated template paths to *.py-tpl for init, manage.py, settings, and component files
- Added `url_type` context for URL generation templates
Enhancements
- Modified `create_init_file` to use `init.py-tpl` template
- Updated all `create_file_from_template` calls to reference `.py-tpl` templates
- Adjusted context for URL templates to include project‑specific data
- Switched component URL template to `config/urls.py-tpl`
Bug Fixes
- None
New Features
- Replace hardcoded `core.settings.production` with templated `{{ project_name }}.settings.production` in both ASGI and WSGI config templates, enabling per‑project settings customization.
Enhancements
- Increase template flexibility for project‑specific configuration without manual edits.
Bug Fixes
- None
Set the default DJANGO_SETTINGS_MODULE environment variable to point to the production settings module derived from the project name, ensuring the Django management script runs with the correct configuration when no explicit DJANGO_SETTINGS_MODULE is provided.
New Features
- Automatically default the DJANGO_SETTINGS_MODULE to `<project_name>.settings.production`, simplifying project setup.
Enhancements
- Improves the management script initialization by providing a sensible production settings fallback.
Bug Fixes
- None.
- New Features
- Updated CI matrix to test Python 3.12 and 3.13.
- Enhancements
- Dropped support for Python 3.10 and 3.11.
- Reduces CI runtime and resource consumption.
- Bug Fixes
- No bug fixes included.