Released on 2024-03-19 - GitHub - PyPI

What's changed

  • fix: In the table generated by crud, url images are only displayed when they exist, to avoid fastdev template errors..
    Full Changelog: v0.22.0...v0.22.1


Released on 2024-03-19 - GitHub - PyPI

What's changed

  • feat: Improve the generated crud code, the table now shows checkmarks for boolean fields and has a better look
  • feat: The create and update views have been updated to work with models with ImageField or FieldFields.

Full Changelog: v0.21.0...v0.22.0


Released on 2024-03-18 - GitHub - PyPI

What's changed

Full Changelog: v0.20.0...v0.21.0


Released on 2024-03-18 - GitHub - PyPI

What's Changed

  • stlyle: Improve the crud table style, using icons for the actions tab
  • refactor: The default pagge size for pagination is now 10 instead of 20

Full Changelog: v0.19.0...v0.20.0


Released on 2024-03-18 - GitHub - PyPI

What's Changed

  • Better object list variable name for crud generated index views
  • Added the model verbose_name to the html blueprints context
  • restructure start-project docs by @Tobi-De in #71
  • Auto-update pre-commit hooks by @github-actions in #73

Full Changelog: v0.18.6...v0.19.0


Released on 2024-03-08 - GitHub - PyPI

Wha's changed

  • fix: work command fails with a custom user command using the address option

Full Changelog: v0.18.5...v0.18.6


Released on 2024-03-05 - GitHub - PyPI

Full Changelog: 0.18.3...v0.18.4


Released on 2024-03-03 - GitHub - PyPI

What's changed

  • feat: The crud command now adds date types on widgets for form fields of type DateTimeField, DateField, and TimeField.
  • feat: The start-project command can now work offline if a blueprint has already been downloaded once.
  • fix: The generated table on list pages was missing a column header.

Full Changelog: v0.17.0...v0.18.0


Released on 2024-03-03 - GitHub - PyPI

What's changed

  • refactor: blueprints html files now end with the extension .jinja.

Full Changelog: v0.16.1...v0.17.0


Released on 2024-03-03 - GitHub - PyPI

What's changed

Mainly internal changes, cruft is no longer a project dependency. pico can now be specified as a blueprint.

Full Changelog: v0.16.0...v0.16.1


Released on 2024-03-01 - GitHub - PyPI

What's changed

  • feat: The file was greatly improved; the project environment is now simpler. DEBUG=False denotes the production environment.
  • feat: The sync-dotenv command generates better defaults with DEBUG=False (production mode).

Full Changelog: v0.15.0...v0.16.0


Released on 2024-02-26 - GitHub - PyPI

What's Changed

  • The setup-admin command was remove, the django createsuperuser command can do the exact same thing

Full Changelog: v0.14.0...v0.15.0


Released on 2024-02-21 - GitHub - PyPI

What's changed

  • feat: A .env file is now generated during project creation.

Full Changelog: v0.13.0...v0.14.0


Released on 2024-02-21 - GitHub - PyPI

What's Changed

  • Auto-update pre-commit hooks by @github-actions in #68
  • feat: The sync-dotenv command can now print the .env content to the console by @Tobi-De in this pull request.
  • feat: Added an option to customize the Django server address for the work command by @Tobi-De in this pull request.

New Contributors

  • @github-actions made their first contribution in #68

Full Changelog: v0.12.0...v0.13.0


Released on 2024-02-15 - GitHub - PyPI

What's Changed

  • Feat: The Docker setup now uses s6-overlay to run both Django and Django-Q in a single container.
  • Refactor: The HTML files generated by the crud commands now use the content block name instead of main_content (sorry in advance if this breaks your workflow).
  • Refactor: The default templates were improved; there is now a block for the header and another one for the footer.
  • Feat: There are now views for the favicon.ico, .well-known/security.txt, and robots.txt files.
  • Feat: The generated projects now use django-health-check.
  • Feat: The generated projects now use django-q-registry.
  • Feat: The generated projects now use heroicons.
  • Fix: Added missing boto3 dependency for Amazon SES.
  • Chore: The Falco license was updated to comply with the MIT license.
  • Docs: Added tissieres as a contributor for financial support in #63 (this gentleman provided me with a free VPS to experiment with; thanks a lot to him).

Many of the updates were inspired by django-twc-project.

Full Changelog: v0.11.0...v0.12.0


Released on 2024-02-11 - GitHub - PyPI

What's changed

  • fix: falco can now be used with a host without git installed

Full Changelog: v0.10.1...v0.11.0


Released on 2024-02-08 - GitHub - PyPI

What's changed

  • fix: Generated projects are created with the old crud-utils configuration key.

Full Changelog: v0.10.0...v0.10.1


Released on 2024-02-02 - GitHub - PyPI

What's changed

  • docs: Added note about shiv into the deployment guide.
  • feat: Restored the original functionality of the --exclude option of the crud command. It now functions as it did initially, concealing fields from users in both forms and templates. A recent change was made to use it to exlcude non-editable fields from forms, but now all non-editable fields are automatically left out from forms.

Full Changelog: v0.9.0...v0.10.0


Released on 2024-01-31 - GitHub - PyPI

What's changed

  • feat: There is a new [tool.falco.crud] section to configure the crud command. Check it out here.
  • refactor: The crud_utils path has been moved to [tool.falco.crud.utils_path].
    Full Changelog: v0.7.2...v0.9.0


Released on 2024-01-31 - GitHub - PyPI

What's changed


TL;DR : The crud command now generates HTML templates with a main_content block instead of a content block.

This release primarily prepares for future updates. I'm developing a more appealing default set of HTML templates, similar to what djangox and cookiecutter-django offer.

First, I've renamed the --repo-url option from the start-project command to --blueprint (-b), which is more consistent with the rest of Falco.

Secondly, and this change might disrupt the current workflow of anyone using Falco right now (for which I sincerely apologize), I've revised the layout of the base.html template and the crud generated templates. The main difference is a change in block name.

Here's an example of what previous templates looked like:
{% load static %}
{% load django_htmx %}
{% load tailwind_cli %}
<!DOCTYPE html>
<html lang="en">
    <meta charset="UTF-8">
    <meta content="width=device-width, initial-scale=1" name="viewport">
    <meta name="description" content="">
    <meta name="keywords" content="">
    {% tailwind_css %}
    <script defer src="{% static "vendors/htmx/htmx.min.js" %}"></script>
    {% django_htmx_script %}
    {% block extra_head %}{% endblock extra_head %}
<body hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}' class="bg-gray-100">
<main class="container mx-auto py-5">
    {% block content %}
    {% endblock content %}
    {% block extra_body %}{% endblock extra_body %}
and this is the updated layout structure:
{% load static %}
{% load django_htmx %}
{% load tailwind_cli %}

<!DOCTYPE html>
<html lang="en">
    <meta charset="UTF-8" />
    <meta content="width=device-width, initial-scale=1" name="viewport" />
    <meta name="description" content="" />
    <meta name="keywords" content="" />
    {% tailwind_css %}
    {% block css %}
    {% endblock css %}
    <script defer src="{% static "vendors/htmx/htmx.min.js" %}"></script>
    {% django_htmx_script %}
    {% block javascript %}
    {% endblock javascript %}
  <body hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'>
    {% block content %}
      <main class="container mx-auto">
        {% block main_content %}
        {% endblock main_content %}
    {% endblock content %}
    {% block modal %}
    {% endblock modal %}
    {% block inline_javascript %}
    {% endblock inline_javascript %}

The changes that might impact you involve the introduction of a main_content block. This block is now used by the crud command for generating HTML templates, instead of the previously used content block. The intention is to allow pages that form parts of the landing section of your site (such as about, home, contact, etc...) to completely override the content of the HTML body. However, most of your other pages, which are part of the application (for example a profile page for logged-in users), will share some components like a navigation bar or a footer. These can be written directly in the base.html file. You can also add footer and header blocks inside the content block if you wish.

If you want to retain the previous behavior, you can have a custom blueprints folder for the crud command to use, you can acquire the previous version of the crud templates by following the process detailed below.

  1. Clone the falco repository
git clone
  1. Revert the repository to a version containing the earlier crud templates
git reset --hard d2d7ed5fd9f09dc794942af7aa44d8458426b649
  1. Copy the contents of src/falco/crud/html into a blueprints folder in your project.
cp -r src/falco/crud/html <your_project>/blueprints
  1. Now, execute the crud command with the --blueprints option. This will generate html files utilizing the content block.
# from the root of your project
falco crud --blueprints blueprints


In the upcoming release, you'll have the option to configure the blueprints folder via the pyproject.toml file.
This will save you from typing it each time.

Alternatively, you could simply update your base.html template to match the new layout.
I hope this change doesn't bother too many people :)

Full Changelog: v0.7.2...v0.8.0


Released on 2024-01-30 - GitHub - PyPI

What's changed

  • Refactor: Rename the --login option of the crud command to --login-required.
  • Docs: Provide a more illustrative example for the HTML context of custom templates in the CRUD section.

Full Changelog: v0.7.1...v0.7.2


Released on 2024-01-28 - GitHub - PyPI

What's changed

  • Fix: Remove extra space in the generated CRUD list html around a for tag, causing Djlint to trigger errors.
  • Docs: Add a note on mypy to the usage page.
  • Fix: Remove extra HttpRequest in the generated CRUD file that was causing mypy checks to fail.

Full Changelog: v0.7.0...v0.7.1


Released on 2024-01-28 - GitHub - PyPI

What's changed

  • feat: Added the --blueprint option to the crud command, allowing users to specify custom HTML files.
  • feat: CRUD utils are now installed during project creation, eliminating the need for users to run it manually.
  • feat: The installation path of CRUD utils is recorded in the [too.falco] section, enabling reuse whenever the command is rerun, possibly for updates.
  • feat: The CRUD utils config is now used by the CRUD command to write imports in Python files, allows users to easily adjust imports for all generated code.
  • feat: HTML files are formatted after project generation.
  • docs: Added a typing section in the Tips and Extra page.
  • fix: Improved the error message displayed when setup-admin is run multiple times.
  • And various other minor fixes.

Full Changelog: v0.6.0...v0.7.0


Released on 2024-01-26 - GitHub - PyPI

What's changed

  • feat: Introduce a new --repo-url option to the start-project command, allowing users to specify the blueprints to use, such as a Bootstrap blueprint (work in progress).

  • feat: Enhance the htmx command by saving the installed path. This enables updating the file without requiring the user to specify the path.

  • fix: Address an issue in the start-app command where installed apps were missing a comma, causing a configuration error in the installed apps list.

Full Changelog: v0.5.0...v0.6.0


Released on 2024-01-24 - GitHub - PyPI

What's changed

  • feat: Added a new start-app command
  • feat: The crud command now generate admin code
  • feat: The crud command now register the urls of the app to the project root urls config

Full Changelog: v0.4.1...v0.5.0


Released on 2024-01-23 - GitHub - PyPI

What's Changed

Mainly internal updates:

  • CRUD blueprints are now written in Jinja.
  • Added order_by to the queryset on list pages (CRUD) to prevent warnings from the paginator.

Full Changelog: v0.4.0...v0.4.1


Released on 2024-01-22 - GitHub - PyPI

What's changed

  • The install-crud-utils command now includes a types module for htmx and authenticated user HttpRequest.
  • The install-crud-utils command now accepts only one output_dir argument, so it's easier to reason about where utilities are installed.
  • The crud command now accepts a --login option to decorate views with login_required.

Full Changelog: v0.3.2...v0.4.0


Released on 2024-01-21 - GitHub - PyPI

What's changed

The blueprint/cookiecutter is now maintained in its own repository. This change will simplify the implementation of the update feature.

With this change, the start-project now requires an internet connection to work, if I get enough complaints about this, I'll change that.

Full Changelog: v0.3.1...v0.3.2


Released on 2024-01-20 - GitHub - PyPI

What's Changed

  • Refactor: Switched from django-admin to cookiecutter for project generation.
  • Feat: Added a new option, --root, to the start-project command.

The directory argument of the start-project command now functions as described in the documentation. By default, the project is generated inside the specified directory. Previously, specifying a directory considered it the project root, resulting in the file being placed there. To replicate this behavior, you now need to use the --root option.

For example, running the command falco start-project journal /home/Builds generates a journal project inside the /home/Builds directory. The file will be located at /home/Builds/journal/ However, using the --root option considers /home/Builds as the root of your project, and the file will be located at /home/Builds/

Full Changelog: v0.3.0...v0.3.1


Released on 2024-01-19 - GitHub - PyPI

What's Changed

Full Changelog: v0.2.9...v0.3.0


Released on 2024-01-16 - GitHub - PyPI

What's Changed

  • docs: Update Python version in pre-commit configuration
  • build: use rich to generate project-tree
  • build: use hatch-pip-compile to generate requirements file
  • ci: do not need to update dependencies for generated code
  • ci: most of the current pre-commit (falco ones) are broken
  • docs: emphasize the start-app script
  • ci: fix generated project ci workflow

Full Changelog: v0.2.8...v0.2.9


Released on 2024-01-15 - GitHub - PyPI

  • The code generated by the CRUD command should now pass the pre-commit hooks

Full Changelog: v0.2.7...v0.2.8


Released on 2024-01-15 - GitHub - PyPI

  • Add a section on marimo on the start-project docs as an alternative to dj-notebook
  • Project pre-commit hooks is back to usingruff with a better setup
  • The sync-dotenv command now generate an sqlite db with the name db.sqlite3 instead of db.sqlite, same as the default django starter project
  • The tip_and_extra section is in a cleaner state
  • The Task queues and schedulers is now completed

Full Changelog: v0.2.5...v0.2.7


Released on 2024-01-13 - GitHub - PyPI

  • The start-project command now accept an option for specifying the project creation directory. This functionality mirrors the corresponding option in the Django startproject command.
  • Add privacy friendly analytics using plausible

Full Changelog: v0.2.4...v0.2.5


Released on 2024-01-12 - GitHub - PyPI

  • Small corrections of typos

Full Changelog: v0.2.3...v0.2.4


Released on 2024-01-12 - GitHub - PyPI

What's Changed

New Contributors

Full Changelog: v0.2.2...v0.2.3


Released on 2023-12-31 - GitHub - PyPI

Changes to Starter Blueprint:

  • Add an extra blocks head and body for more flexibility.

Changes to CRUD Generator:

  • Fix detail.html and update.html templates where an incorrect variable name product was left in.

Full Changelog: v0.2.1...v0.2.2


Released on 2023-12-31 - GitHub - PyPI

Changes to the Starter Blueprint

  • Fix email configuration for development setup.
  • Resolve an issue where django-fastdev would raise an error while accessing the signup page because the clean_username form validator does not match any field on the User model.

Full Changelog: v0.2.0...v0.2.1


Released on 2023-12-30 - GitHub - PyPI

  • Folder Renaming: Renamed the docker folder to deploy to enhance clarity; the folder contains more than just Docker-related files.

  • Default Starter Integration: Included the default starter project with the core app, streamlining the experience when using the install-crud-utils command.

  • Convenient App Creation: Added a hatch start-app script for creating an app and moving it into the project's apps_dir.

  • Type Checking Enhancement: Replaced Pyright with Mypy for type checking; Mypy is less aggressive.

  • Improved Setup Instructions: Enhanced setup instructions in the project's for better clarity.

  • Starter Project Layout Adjustment: Modified the utils import generated by crud to align with the starter project layout, ensuring a more consistent structure.

  • Documentation Update: Revised the documentation for work commands, noting that the default starter does not come with a default config.

  • Miscellaneous Fixes: Addressed various small issues throughout the codebase.

Full Changelog: v0.1.1...v0.2.0

v0.1.0: Initial release

Released on 2023-12-28 - GitHub - PyPI