Showing preview only (952K chars total). Download the full file or copy to clipboard to get everything.
Repository: cookiecutter/cookiecutter-django
Branch: main
Commit: 1ef10a7c8b0b
Files: 245
Total size: 882.3 KB
Directory structure:
gitextract_c7d8xipx/
├── .editorconfig
├── .gitattributes
├── .github/
│ ├── CONTRIBUTORS-template.md
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug.md
│ │ ├── feature.md
│ │ ├── paid-support.md
│ │ └── question.md
│ ├── PULL_REQUEST_TEMPLATE.md
│ ├── changelog-template.md
│ ├── contributors.json
│ ├── dependabot.yml
│ └── workflows/
│ ├── align-versions.yml
│ ├── ci.yml
│ ├── dependabot-uv-lock.yml
│ ├── django-issue-checker.yml
│ ├── issue-manager.yml
│ ├── pre-commit-autoupdate.yml
│ ├── update-changelog.yml
│ └── update-contributors.yml
├── .gitignore
├── .pre-commit-config.yaml
├── .pyup.yml
├── .readthedocs.yaml
├── AGENTS.md
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── CONTRIBUTORS.md
├── LICENSE
├── README.md
├── cookiecutter.json
├── docs/
│ ├── 1-getting-started/
│ │ ├── project-generation-options.rst
│ │ └── settings.rst
│ ├── 2-local-development/
│ │ ├── developing-locally-docker.rst
│ │ ├── developing-locally.rst
│ │ └── generate-project-block.rst
│ ├── 3-deployment/
│ │ ├── deployment-on-heroku.rst
│ │ ├── deployment-on-pythonanywhere.rst
│ │ └── deployment-with-docker.rst
│ ├── 4-guides/
│ │ ├── docker-postgres-backups.rst
│ │ ├── document.rst
│ │ ├── linters.rst
│ │ ├── testing.rst
│ │ └── websocket.rst
│ ├── 5-help/
│ │ ├── faq.rst
│ │ └── troubleshooting.rst
│ ├── 6-about/
│ │ ├── contributing.md
│ │ ├── generative-ai.md
│ │ └── maintainer-guide.md
│ ├── Makefile
│ ├── __init__.py
│ ├── _static/
│ │ └── .gitkeep
│ ├── conf.py
│ ├── includes/
│ │ └── mailgun.rst
│ ├── index.rst
│ └── make.bat
├── hooks/
│ ├── __init__.py
│ ├── post_gen_project.py
│ └── pre_gen_project.py
├── pyproject.toml
├── scripts/
│ ├── __init__.py
│ ├── create_django_issue.py
│ ├── node_version.py
│ ├── ruff_version.py
│ ├── update_changelog.py
│ └── update_contributors.py
├── tests/
│ ├── __init__.py
│ ├── test_bare.sh
│ ├── test_cookiecutter_generation.py
│ ├── test_docker.sh
│ └── test_hooks.py
├── tox.ini
└── {{cookiecutter.project_slug}}/
├── .devcontainer/
│ ├── bash_history
│ ├── bashrc.override.sh
│ └── devcontainer.json
├── .dockerignore
├── .drone.yml
├── .editorconfig
├── .envs/
│ ├── .local/
│ │ ├── .django
│ │ └── .postgres
│ └── .production/
│ ├── .django
│ └── .postgres
├── .gitattributes
├── .github/
│ ├── dependabot.yml
│ └── workflows/
│ └── ci.yml
├── .gitignore
├── .gitlab-ci.yml
├── .pre-commit-config.yaml
├── .readthedocs.yml
├── .travis.yml
├── CONTRIBUTORS.txt
├── COPYING
├── LICENSE
├── Procfile
├── README.md
├── bin/
│ └── post_compile
├── compose/
│ ├── local/
│ │ ├── django/
│ │ │ ├── Dockerfile
│ │ │ ├── celery/
│ │ │ │ ├── beat/
│ │ │ │ │ └── start
│ │ │ │ ├── flower/
│ │ │ │ │ └── start
│ │ │ │ └── worker/
│ │ │ │ └── start
│ │ │ └── start
│ │ ├── docs/
│ │ │ ├── Dockerfile
│ │ │ └── start
│ │ ├── node/
│ │ │ └── Dockerfile
│ │ └── uv/
│ │ └── Dockerfile
│ └── production/
│ ├── aws/
│ │ ├── Dockerfile
│ │ └── maintenance/
│ │ ├── download
│ │ └── upload
│ ├── django/
│ │ ├── Dockerfile
│ │ ├── celery/
│ │ │ ├── beat/
│ │ │ │ └── start
│ │ │ ├── flower/
│ │ │ │ └── start
│ │ │ └── worker/
│ │ │ └── start
│ │ ├── entrypoint
│ │ └── start
│ ├── nginx/
│ │ ├── Dockerfile
│ │ └── default.conf
│ ├── postgres/
│ │ ├── Dockerfile
│ │ └── maintenance/
│ │ ├── _sourced/
│ │ │ ├── constants.sh
│ │ │ ├── countdown.sh
│ │ │ ├── messages.sh
│ │ │ └── yes_no.sh
│ │ ├── backup
│ │ ├── backups
│ │ ├── restore
│ │ └── rmbackup
│ └── traefik/
│ ├── Dockerfile
│ └── traefik.yml
├── config/
│ ├── __init__.py
│ ├── api.py
│ ├── api_router.py
│ ├── asgi.py
│ ├── celery_app.py
│ ├── settings/
│ │ ├── __init__.py
│ │ ├── base.py
│ │ ├── local.py
│ │ ├── production.py
│ │ └── test.py
│ ├── urls.py
│ ├── websocket.py
│ └── wsgi.py
├── docker-compose.docs.yml
├── docker-compose.local.yml
├── docker-compose.production.yml
├── docs/
│ ├── Makefile
│ ├── __init__.py
│ ├── conf.py
│ ├── howto.rst
│ ├── index.rst
│ ├── make.bat
│ ├── pycharm/
│ │ └── configuration.rst
│ └── users.rst
├── gulpfile.mjs
├── justfile
├── locale/
│ ├── README.md
│ ├── en_US/
│ │ └── LC_MESSAGES/
│ │ └── django.po
│ ├── fr_FR/
│ │ └── LC_MESSAGES/
│ │ └── django.po
│ └── pt_BR/
│ └── LC_MESSAGES/
│ └── django.po
├── manage.py
├── merge_production_dotenvs_in_dotenv.py
├── package.json
├── pyproject.toml
├── requirements/
│ ├── base.txt
│ ├── local.txt
│ └── production.txt
├── tests/
│ ├── __init__.py
│ └── test_merge_production_dotenvs_in_dotenv.py
├── utility/
│ ├── install_os_dependencies.sh
│ ├── install_python_dependencies.sh
│ ├── requirements-bionic.apt
│ ├── requirements-bookworm.apt
│ ├── requirements-bullseye.apt
│ ├── requirements-buster.apt
│ ├── requirements-focal.apt
│ ├── requirements-jammy.apt
│ ├── requirements-jessie.apt
│ ├── requirements-noble.apt
│ ├── requirements-stretch.apt
│ ├── requirements-trusty.apt
│ └── requirements-xenial.apt
├── webpack/
│ ├── common.config.js
│ ├── dev.config.js
│ └── prod.config.js
└── {{cookiecutter.project_slug}}/
├── __init__.py
├── conftest.py
├── contrib/
│ ├── __init__.py
│ └── sites/
│ ├── __init__.py
│ └── migrations/
│ ├── 0001_initial.py
│ ├── 0002_alter_domain_unique.py
│ ├── 0003_set_site_domain_and_name.py
│ ├── 0004_alter_options_ordering_domain.py
│ └── __init__.py
├── static/
│ ├── fonts/
│ │ └── .gitkeep
│ ├── js/
│ │ └── project.js
│ └── sass/
│ ├── custom_bootstrap_vars.scss
│ └── project.scss
├── templates/
│ ├── 403.html
│ ├── 403_csrf.html
│ ├── 404.html
│ ├── 500.html
│ ├── account/
│ │ └── base_manage_password.html
│ ├── allauth/
│ │ ├── elements/
│ │ │ ├── alert.html
│ │ │ ├── badge.html
│ │ │ ├── button.html
│ │ │ ├── field.html
│ │ │ ├── fields.html
│ │ │ ├── panel.html
│ │ │ └── table.html
│ │ └── layouts/
│ │ ├── entrance.html
│ │ └── manage.html
│ ├── base.html
│ ├── pages/
│ │ ├── about.html
│ │ └── home.html
│ └── users/
│ ├── user_detail.html
│ └── user_form.html
└── users/
├── __init__.py
├── adapters.py
├── admin.py
├── api/
│ ├── __init__.py
│ ├── schema.py
│ ├── serializers.py
│ └── views.py
├── apps.py
├── context_processors.py
├── forms.py
├── managers.py
├── migrations/
│ ├── 0001_initial.py
│ └── __init__.py
├── models.py
├── tasks.py
├── tests/
│ ├── __init__.py
│ ├── api/
│ │ ├── __init__.py
│ │ ├── test_openapi.py
│ │ ├── test_urls.py
│ │ └── test_views.py
│ ├── factories.py
│ ├── test_admin.py
│ ├── test_forms.py
│ ├── test_managers.py
│ ├── test_models.py
│ ├── test_tasks.py
│ ├── test_urls.py
│ └── test_views.py
├── urls.py
└── views.py
================================================
FILE CONTENTS
================================================
================================================
FILE: .editorconfig
================================================
# http://editorconfig.org
root = true
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
[*.{py,rst,ini}]
indent_style = space
indent_size = 4
[*.{html,css,scss,json,yml,xml,toml}]
indent_style = space
indent_size = 2
[*.md]
trim_trailing_whitespace = false
[Makefile]
indent_style = tab
[nginx.conf]
indent_style = space
indent_size = 2
================================================
FILE: .gitattributes
================================================
* text=auto
================================================
FILE: .github/CONTRIBUTORS-template.md
================================================
# Contributors
## Core Developers
These contributors have commit flags for the repository, and are able to
accept and merge pull requests.
<table>
<tr>
<th>Name</th>
<th>Github</th>
<th>Twitter</th>
</tr>
{%- for contributor in core_contributors %}
<tr>
<td>{{ contributor.name }}</td>
<td>
<a href="https://github.com/{{ contributor.github_login }}">{{ contributor.github_login }}</a>
</td>
<td>{{ contributor.twitter_username }}</td>
</tr>
{%- endfor %}
</table>
_Audrey is also the creator of Cookiecutter. Audrey and Daniel are on
the Cookiecutter core team._
## Other Contributors
Listed in alphabetical order.
<table>
<tr>
<th>Name</th>
<th>Github</th>
<th>Twitter</th>
</tr>
{%- for contributor in other_contributors %}
<tr>
<td>{{ contributor.name }}</td>
<td>
<a href="https://github.com/{{ contributor.github_login }}">{{ contributor.github_login }}</a>
</td>
<td>{{ contributor.twitter_username }}</td>
</tr>
{%- endfor %}
</table>
### Special Thanks
The following haven't provided code directly, but have provided
guidance and advice.
- Jannis Leidel
- Nate Aune
- Barry Morrison
================================================
FILE: .github/FUNDING.yml
================================================
# These are supported funding model platforms
github: [pydanny, browniebroke, luzfcb]
patreon: feldroy
open_collective: cookiecutter-django
================================================
FILE: .github/ISSUE_TEMPLATE/bug.md
================================================
---
name: Bug Report
about: Report a bug
labels: bug
---
## What happened?
## What should've happened instead?
## Additional details
<!-- To assist you best, please include commands that you've run, options you've selected and any relevant logs -->
- Host system configuration:
- Version of cookiecutter CLI (get it with `cookiecutter --version`):
- OS name and version:
On Linux, run
```bash
lsb_release -a 2> /dev/null || cat /etc/redhat-release 2> /dev/null || cat /etc/*-release 2> /dev/null || cat /etc/issue 2> /dev/null
```
On MacOs, run
```bash
sw_vers
```
On Windows, via CMD, run
```
systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
```
```bash
# Insert here the OS name and version
```
- Python version, run `python3 -V`:
- Docker version (if using Docker), run `docker --version`:
- docker compose version (if using Docker), run `docker compose --version`:
- ...
- Options selected and/or [replay file](https://cookiecutter.readthedocs.io/en/latest/advanced/replay.html):
On Linux and macOS: `cat ${HOME}/.cookiecutter_replay/cookiecutter-django.json`
(Please, take care to remove sensitive information)
```json
```
<summary>
Logs:
<details>
<pre>
$ cookiecutter https://github.com/cookiecutter/cookiecutter-django
project_name [Project Name]: ...
</pre>
</details>
</summary>
================================================
FILE: .github/ISSUE_TEMPLATE/feature.md
================================================
---
name: New Feature Proposal
about: Propose a new feature
labels: enhancement
---
## Description
What are you proposing? How should it be implemented?
## Rationale
Why should this feature be implemented?
================================================
FILE: .github/ISSUE_TEMPLATE/paid-support.md
================================================
---
name: Paid Support Request
about: Ask Core Team members to help you out
---
Provided your question goes beyond [regular support](https://github.com/cookiecutter/cookiecutter-django/issues/new?template=question.md), and/or the task at hand is of timely/high priority nature use the below information to reach out for contributors directly.
- Bruno Alla, Core Developer ([GitHub](https://github.com/sponsors/browniebroke)).
- Daniel Roy Greenfeld, Project Lead ([GitHub](https://github.com/pydanny), [Patreon](https://www.patreon.com/danielroygreenfeld)): expertise in Django and AWS ELB.
- Nikita Shupeyko, Core Developer ([GitHub](https://github.com/webyneter)): expertise in Python/Django, hands-on DevOps and frontend experience.
================================================
FILE: .github/ISSUE_TEMPLATE/question.md
================================================
---
name: Question
about: Please ask your question on StackOverflow, Discord or GitHub Discussions.
labels: question
---
First, make sure to examine [the docs](https://cookiecutter-django.readthedocs.io/en/latest/). If that doesn't help, we recommend one of these 3 main channels:
- If your issue is related to Django + something else but was generated with cookiecutter-django, the best is to post a question on [StackOverflow](https://stackoverflow.com/questions/tagged/cookiecutter-django) tagged with `cookiecutter-django`, you would get more visibility from other communities as well.
- Join us on [Discord](https://discord.gg/uFXweDQc5a) and ask around.
- Start [a discussion](https://github.com/cookiecutter/cookiecutter-django/discussions) on our project's GitHub.
================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
<!-- Thank you for helping us out: your efforts mean a great deal to the project and the community as a whole! -->
## Description
<!-- What's it you're proposing? -->
Checklist:
- [ ] I've made sure that tests are updated accordingly (especially if adding or updating a template option)
- [ ] I've updated the documentation or confirm that my change doesn't require any updates
## Rationale
<!--
Why does this project need the change you're proposing?
If this pull request fixes an open issue, don't forget to link it with `Fix #NNNN`
-->
================================================
FILE: .github/changelog-template.md
================================================
{%- for change_type, pulls in grouped_pulls.items() %}
{%- if pulls %}
### {{ change_type }}
{%- for pull_request in pulls %}
- {{ pull_request.title }} ([#{{ pull_request.number }}]({{ pull_request.html_url }}))
{%- endfor -%}
{% endif -%}
{% endfor -%}
================================================
FILE: .github/contributors.json
================================================
[
{
"name": "Daniel Roy Greenfeld",
"github_login": "pydanny",
"twitter_username": "pydanny",
"is_core": true
},
{
"name": "Audrey Roy Greenfeld",
"github_login": "audreyr",
"twitter_username": "audreyr",
"is_core": true
},
{
"name": "Fábio C. Barrionuevo da Luz",
"github_login": "luzfcb",
"twitter_username": "luzfcb",
"is_core": true
},
{
"name": "Saurabh Kumar",
"github_login": "theskumar",
"twitter_username": "_theskumar",
"is_core": true
},
{
"name": "Jannis Gebauer",
"github_login": "jayfk",
"twitter_username": "",
"is_core": true
},
{
"name": "Burhan Khalid",
"github_login": "burhan",
"twitter_username": "burhan",
"is_core": true
},
{
"name": "Shupeyko Nikita",
"github_login": "webyneter",
"twitter_username": "webyneter",
"is_core": true
},
{
"name": "Bruno Alla",
"github_login": "browniebroke",
"twitter_username": "_BrunoAlla",
"is_core": true
},
{
"name": "Wan Liuyang",
"github_login": "sfdye",
"twitter_username": "sfdye",
"is_core": true
},
{
"name": "Jelmer Draaijer",
"github_login": "foarsitter",
"twitter_username": "",
"is_core": true
},
{
"name": "18",
"github_login": "dezoito",
"twitter_username": ""
},
{
"name": "2O4",
"github_login": "2O4",
"twitter_username": ""
},
{
"name": "a7p",
"github_login": "a7p",
"twitter_username": ""
},
{
"name": "Aadith PM",
"github_login": "aadithpm",
"twitter_username": ""
},
{
"name": "Aaron Eikenberry",
"github_login": "aeikenberry",
"twitter_username": ""
},
{
"name": "Adam Bogdał",
"github_login": "bogdal",
"twitter_username": ""
},
{
"name": "Adam Dobrawy",
"github_login": "ad-m",
"twitter_username": ""
},
{
"name": "Adam Steele",
"github_login": "adammsteele",
"twitter_username": ""
},
{
"name": "Agam Dua",
"github_login": "",
"twitter_username": ""
},
{
"name": "Agustín Scaramuzza",
"github_login": "scaramagus",
"twitter_username": "scaramagus"
},
{
"name": "Alberto Sanchez",
"github_login": "alb3rto",
"twitter_username": ""
},
{
"name": "Alex Tsai",
"github_login": "caffodian",
"twitter_username": ""
},
{
"name": "Alvaro [Andor]",
"github_login": "andor-pierdelacabeza",
"twitter_username": ""
},
{
"name": "Amjith Ramanujam",
"github_login": "amjith",
"twitter_username": ""
},
{
"name": "Andreas Meistad",
"github_login": "ameistad",
"twitter_username": ""
},
{
"name": "Andres Gonzalez",
"github_login": "andresgz",
"twitter_username": ""
},
{
"name": "Andrew Mikhnevich",
"github_login": "zcho",
"twitter_username": ""
},
{
"name": "Andrew Chen Wang",
"github_login": "Andrew-Chen-Wang",
"twitter_username": ""
},
{
"name": "Andy Rose",
"github_login": "",
"twitter_username": ""
},
{
"name": "Anna Callahan",
"github_login": "jazztpt",
"twitter_username": ""
},
{
"name": "Anna Sidwell",
"github_login": "takkaria",
"twitter_username": ""
},
{
"name": "Antonia Blair",
"github_login": "antoniablair",
"twitter_username": "antoniablairart"
},
{
"name": "Anuj Bansal",
"github_login": "ahhda",
"twitter_username": ""
},
{
"name": "Arcuri Davide",
"github_login": "dadokkio",
"twitter_username": ""
},
{
"name": "Areski Belaid",
"github_login": "areski",
"twitter_username": ""
},
{
"name": "AsheKR",
"github_login": "ashekr",
"twitter_username": ""
},
{
"name": "Ashley Camba",
"github_login": "",
"twitter_username": ""
},
{
"name": "Barclay Gauld",
"github_login": "yunti",
"twitter_username": ""
},
{
"name": "Bartek",
"github_login": "btknu",
"twitter_username": ""
},
{
"name": "Ben Lopatin",
"github_login": "",
"twitter_username": ""
},
{
"name": "Ben Warren",
"github_login": "bwarren2",
"twitter_username": ""
},
{
"name": "Benjamin Abel",
"github_login": "",
"twitter_username": ""
},
{
"name": "Bert de Miranda",
"github_login": "bertdemiranda",
"twitter_username": ""
},
{
"name": "Bo Lopker",
"github_login": "blopker",
"twitter_username": ""
},
{
"name": "Bo Peng",
"github_login": "BoPeng",
"twitter_username": ""
},
{
"name": "Bouke Haarsma",
"github_login": "",
"twitter_username": ""
},
{
"name": "Brent Payne",
"github_login": "brentpayne",
"twitter_username": "brentpayne"
},
{
"name": "Bruce Olivier",
"github_login": "bolivierjr",
"twitter_username": ""
},
{
"name": "Caio Ariede",
"github_login": "caioariede",
"twitter_username": "caioariede"
},
{
"name": "Carl Johnson",
"github_login": "carlmjohnson",
"twitter_username": "carlmjohnson"
},
{
"name": "Catherine Devlin",
"github_login": "catherinedevlin",
"twitter_username": ""
},
{
"name": "Cédric Gaspoz",
"github_login": "cgaspoz",
"twitter_username": ""
},
{
"name": "Charlie Smith",
"github_login": "chuckus",
"twitter_username": ""
},
{
"name": "Chris Curvey",
"github_login": "ccurvey",
"twitter_username": ""
},
{
"name": "Chris Franklin",
"github_login": "",
"twitter_username": ""
},
{
"name": "Chris Franklin",
"github_login": "hairychris",
"twitter_username": ""
},
{
"name": "Chris Pappalardo",
"github_login": "ChrisPappalardo",
"twitter_username": ""
},
{
"name": "Christopher Clarke",
"github_login": "chrisdev",
"twitter_username": ""
},
{
"name": "Cole Mackenzie",
"github_login": "cmackenzie1",
"twitter_username": ""
},
{
"name": "Cole Maclean",
"github_login": "cole",
"twitter_username": "cole"
},
{
"name": "Collederas",
"github_login": "Collederas",
"twitter_username": ""
},
{
"name": "Craig Margieson",
"github_login": "cmargieson",
"twitter_username": ""
},
{
"name": "Cristian Vargas",
"github_login": "cdvv7788",
"twitter_username": ""
},
{
"name": "Cullen Rhodes",
"github_login": "c-rhodes",
"twitter_username": ""
},
{
"name": "Curtis St Pierre",
"github_login": "curtisstpierre",
"twitter_username": "cstpierre1388"
},
{
"name": "Dan Shultz",
"github_login": "shultz",
"twitter_username": ""
},
{
"name": "Dani Hodovic",
"github_login": "danihodovic",
"twitter_username": ""
},
{
"name": "Daniel Hepper",
"github_login": "dhepper",
"twitter_username": "danielhepper"
},
{
"name": "Daniel Hillier",
"github_login": "danifus",
"twitter_username": ""
},
{
"name": "Daniel Sears",
"github_login": "highpost",
"twitter_username": "highpost"
},
{
"name": "Daniele Tricoli",
"github_login": "eriol",
"twitter_username": ""
},
{
"name": "David Díaz",
"github_login": "ddiazpinto",
"twitter_username": "DavidDiazPinto"
},
{
"name": "Davit Tovmasyan",
"github_login": "davitovmasyan",
"twitter_username": ""
},
{
"name": "Davur Clementsen",
"github_login": "dsclementsen",
"twitter_username": "davur"
},
{
"name": "Delio Castillo",
"github_login": "jangeador",
"twitter_username": "jangeador"
},
{
"name": "Demetris Stavrou",
"github_login": "demestav",
"twitter_username": ""
},
{
"name": "Denis Bobrov",
"github_login": "delneg",
"twitter_username": ""
},
{
"name": "Denis Orehovsky",
"github_login": "apirobot",
"twitter_username": ""
},
{
"name": "Denis Savran",
"github_login": "blaxpy",
"twitter_username": ""
},
{
"name": "Diane Chen",
"github_login": "purplediane",
"twitter_username": "purplediane88"
},
{
"name": "Dónal Adams",
"github_login": "epileptic-fish",
"twitter_username": ""
},
{
"name": "Dong Huynh",
"github_login": "trungdong",
"twitter_username": ""
},
{
"name": "Duda Nogueira",
"github_login": "dudanogueira",
"twitter_username": "dudanogueira"
},
{
"name": "Emanuel Calso",
"github_login": "bloodpet",
"twitter_username": "bloodpet"
},
{
"name": "Eraldo Energy",
"github_login": "eraldo",
"twitter_username": ""
},
{
"name": "Eric Groom",
"github_login": "ericgroom",
"twitter_username": ""
},
{
"name": "Ernesto Cedeno",
"github_login": "codnee",
"twitter_username": ""
},
{
"name": "Eyad Al Sibai",
"github_login": "eyadsibai",
"twitter_username": ""
},
{
"name": "Felipe Arruda",
"github_login": "arruda",
"twitter_username": ""
},
{
"name": "Florian Idelberger",
"github_login": "step21",
"twitter_username": "windrush"
},
{
"name": "Gabriel Mejia",
"github_login": "elgartoinf",
"twitter_username": "elgartoinf"
},
{
"name": "Garry Cairns",
"github_login": "garry-cairns",
"twitter_username": ""
},
{
"name": "Garry Polley",
"github_login": "garrypolley",
"twitter_username": ""
},
{
"name": "Gilbishkosma",
"github_login": "Gilbishkosma",
"twitter_username": ""
},
{
"name": "Glenn Wiskur",
"github_login": "gwiskur",
"twitter_username": ""
},
{
"name": "Guilherme Guy",
"github_login": "guilherme1guy",
"twitter_username": ""
},
{
"name": "Hamish Durkin",
"github_login": "durkode",
"twitter_username": ""
},
{
"name": "Hana Quadara",
"github_login": "hanaquadara",
"twitter_username": ""
},
{
"name": "Hannah Lazarus",
"github_login": "hanhanhan",
"twitter_username": ""
},
{
"name": "Harry Moreno",
"github_login": "morenoh149",
"twitter_username": "morenoh149"
},
{
"name": "Harry Percival",
"github_login": "hjwp",
"twitter_username": ""
},
{
"name": "Hendrik Schneider",
"github_login": "hendrikschneider",
"twitter_username": ""
},
{
"name": "Henrique G. G. Pereira",
"github_login": "ikkebr",
"twitter_username": ""
},
{
"name": "Howie Zhao",
"github_login": "howiezhao",
"twitter_username": ""
},
{
"name": "Ian Lee",
"github_login": "IanLee1521",
"twitter_username": ""
},
{
"name": "Irfan Ahmad",
"github_login": "erfaan",
"twitter_username": "erfaan"
},
{
"name": "Isaac12x",
"github_login": "Isaac12x",
"twitter_username": ""
},
{
"name": "Ivan Khomutov",
"github_login": "ikhomutov",
"twitter_username": ""
},
{
"name": "James Williams",
"github_login": "jameswilliams1",
"twitter_username": ""
},
{
"name": "Jan Van Bruggen",
"github_login": "jvanbrug",
"twitter_username": ""
},
{
"name": "Jerome Caisip",
"github_login": "jeromecaisip",
"twitter_username": ""
},
{
"name": "Jens Nilsson",
"github_login": "phiberjenz",
"twitter_username": ""
},
{
"name": "Jerome Leclanche",
"github_login": "jleclanche",
"twitter_username": "Adys"
},
{
"name": "Jimmy Gitonga",
"github_login": "Afrowave",
"twitter_username": "afrowave"
},
{
"name": "John Cass",
"github_login": "jcass77",
"twitter_username": "cass_john"
},
{
"name": "Jonathan Thompson",
"github_login": "nojanath",
"twitter_username": ""
},
{
"name": "Jules Cheron",
"github_login": "jules-ch",
"twitter_username": ""
},
{
"name": "Julien Almarcha",
"github_login": "sladinji",
"twitter_username": ""
},
{
"name": "Julio Castillo",
"github_login": "juliocc",
"twitter_username": ""
},
{
"name": "Kaido Kert",
"github_login": "kaidokert",
"twitter_username": ""
},
{
"name": "kappataumu",
"github_login": "kappataumu",
"twitter_username": "kappataumu"
},
{
"name": "Kaveh",
"github_login": "ka7eh",
"twitter_username": ""
},
{
"name": "Keith Bailey",
"github_login": "keithjeb",
"twitter_username": ""
},
{
"name": "Keith Webber",
"github_login": "townie",
"twitter_username": ""
},
{
"name": "Kevin A. Stone",
"github_login": "",
"twitter_username": ""
},
{
"name": "Kevin Ndung'u",
"github_login": "kevgathuku",
"twitter_username": ""
},
{
"name": "Keyvan Mosharraf",
"github_login": "keyvanm",
"twitter_username": ""
},
{
"name": "Krzysztof Szumny",
"github_login": "noisy",
"twitter_username": ""
},
{
"name": "Krzysztof Żuraw",
"github_login": "krzysztofzuraw",
"twitter_username": ""
},
{
"name": "Leo won",
"github_login": "leollon",
"twitter_username": ""
},
{
"name": "Leo Zhou",
"github_login": "glasslion",
"twitter_username": ""
},
{
"name": "Leon Kim",
"github_login": "PilhwanKim",
"twitter_username": ""
},
{
"name": "Leonardo Jimenez",
"github_login": "xpostudio4",
"twitter_username": ""
},
{
"name": "Lin Xianyi",
"github_login": "iynaix",
"twitter_username": ""
},
{
"name": "Luis Nell",
"github_login": "originell",
"twitter_username": ""
},
{
"name": "Lukas Klein",
"github_login": "",
"twitter_username": ""
},
{
"name": "Lyla Fischer",
"github_login": "",
"twitter_username": ""
},
{
"name": "Malik Sulaimanov",
"github_login": "flyudvik",
"twitter_username": "flyudvik"
},
{
"name": "Martin Blech",
"github_login": "",
"twitter_username": ""
},
{
"name": "Martin Saizar",
"github_login": "msaizar",
"twitter_username": ""
},
{
"name": "Mateusz Ostaszewski",
"github_login": "mostaszewski",
"twitter_username": ""
},
{
"name": "Mathijs Hoogland",
"github_login": "MathijsHoogland",
"twitter_username": ""
},
{
"name": "Matt Braymer-Hayes",
"github_login": "mattayes",
"twitter_username": "mattayes"
},
{
"name": "Matt Knapper",
"github_login": "mknapper1",
"twitter_username": ""
},
{
"name": "Matt Linares",
"github_login": "",
"twitter_username": ""
},
{
"name": "Matt Menzenski",
"github_login": "menzenski",
"twitter_username": ""
},
{
"name": "Matt Warren",
"github_login": "mfwarren",
"twitter_username": ""
},
{
"name": "Matthew Sisley",
"github_login": "mjsisley",
"twitter_username": ""
},
{
"name": "Matthias Sieber",
"github_login": "manonthemat",
"twitter_username": "MatzeOne"
},
{
"name": "Meghan Heintz",
"github_login": "dot2dotseurat",
"twitter_username": ""
},
{
"name": "Mesut Yılmaz",
"github_login": "myilmaz",
"twitter_username": ""
},
{
"name": "Michael Gecht",
"github_login": "mimischi",
"twitter_username": "_mischi"
},
{
"name": "Michael Samoylov",
"github_login": "msamoylov",
"twitter_username": ""
},
{
"name": "Min ho Kim",
"github_login": "minho42",
"twitter_username": ""
},
{
"name": "mozillazg",
"github_login": "mozillazg",
"twitter_username": ""
},
{
"name": "Nico Stefani",
"github_login": "nicolas471",
"twitter_username": "moby_dick91"
},
{
"name": "Oleg Russkin",
"github_login": "rolep",
"twitter_username": ""
},
{
"name": "Pablo",
"github_login": "oubiga",
"twitter_username": ""
},
{
"name": "Parbhat Puri",
"github_login": "parbhat",
"twitter_username": ""
},
{
"name": "Pawan Chaurasia",
"github_login": "rjsnh1522",
"twitter_username": ""
},
{
"name": "Peter Bittner",
"github_login": "bittner",
"twitter_username": ""
},
{
"name": "Peter Coles",
"github_login": "mrcoles",
"twitter_username": ""
},
{
"name": "Philipp Matthies",
"github_login": "canonnervio",
"twitter_username": ""
},
{
"name": "Pierre Chiquet",
"github_login": "pchiquet",
"twitter_username": ""
},
{
"name": "Raony Guimarães Corrêa",
"github_login": "raonyguimaraes",
"twitter_username": ""
},
{
"name": "Raphael Pierzina",
"github_login": "hackebrot",
"twitter_username": ""
},
{
"name": "Reggie Riser",
"github_login": "reggieriser",
"twitter_username": ""
},
{
"name": "René Muhl",
"github_login": "rm--",
"twitter_username": ""
},
{
"name": "Richard Hajdu",
"github_login": "Tusky",
"twitter_username": ""
},
{
"name": "Roman Afanaskin",
"github_login": "siauPatrick",
"twitter_username": ""
},
{
"name": "Roman Osipenko",
"github_login": "romanosipenko",
"twitter_username": ""
},
{
"name": "Russell Davies",
"github_login": "",
"twitter_username": ""
},
{
"name": "Sam Collins",
"github_login": "MightySCollins",
"twitter_username": ""
},
{
"name": "Sascha",
"github_login": "saschalalala",
"twitter_username": "saschalalala"
},
{
"name": "Sławek Ehlert",
"github_login": "slafs",
"twitter_username": ""
},
{
"name": "Sorasful",
"github_login": "sorasful",
"twitter_username": ""
},
{
"name": "Srinivas Nyayapati",
"github_login": "shireenrao",
"twitter_username": ""
},
{
"name": "stepmr",
"github_login": "stepmr",
"twitter_username": ""
},
{
"name": "Steve Steiner",
"github_login": "ssteinerX",
"twitter_username": ""
},
{
"name": "Sudarshan Wadkar",
"github_login": "wadkar",
"twitter_username": ""
},
{
"name": "Sule Marshall",
"github_login": "suledev",
"twitter_username": ""
},
{
"name": "Tano Abeleyra",
"github_login": "tanoabeleyra",
"twitter_username": ""
},
{
"name": "Taylor Baldwin",
"github_login": "",
"twitter_username": ""
},
{
"name": "Théo Segonds",
"github_login": "show0k",
"twitter_username": ""
},
{
"name": "Tim Claessens",
"github_login": "timclaessens",
"twitter_username": ""
},
{
"name": "Tim Freund",
"github_login": "timfreund",
"twitter_username": ""
},
{
"name": "Tom Atkins",
"github_login": "knitatoms",
"twitter_username": ""
},
{
"name": "Tom Offermann",
"github_login": "",
"twitter_username": ""
},
{
"name": "Travis McNeill",
"github_login": "Travistock",
"twitter_username": "tavistock_esq"
},
{
"name": "Tubo Shi",
"github_login": "Tubo",
"twitter_username": ""
},
{
"name": "Umair Ashraf",
"github_login": "umrashrf",
"twitter_username": "fabumair"
},
{
"name": "Vadim Iskuchekov",
"github_login": "Egregors",
"twitter_username": "egregors"
},
{
"name": "Vicente G. Reyes",
"github_login": "reyesvicente",
"twitter_username": "highcenburg"
},
{
"name": "Vitaly Babiy",
"github_login": "",
"twitter_username": ""
},
{
"name": "Vivian Guillen",
"github_login": "viviangb",
"twitter_username": ""
},
{
"name": "Vlad Doster",
"github_login": "vladdoster",
"twitter_username": ""
},
{
"name": "Will Farley",
"github_login": "goldhand",
"twitter_username": "g01dhand"
},
{
"name": "William Archinal",
"github_login": "archinal",
"twitter_username": ""
},
{
"name": "Xaver Y.R. Chen",
"github_login": "yrchen",
"twitter_username": "yrchen"
},
{
"name": "Yaroslav Halchenko",
"github_login": "",
"twitter_username": ""
},
{
"name": "Yuchen Xie",
"github_login": "mapx",
"twitter_username": ""
},
{
"name": "enchance",
"github_login": "enchance",
"twitter_username": ""
},
{
"name": "Jan Fabry",
"github_login": "janfabry",
"twitter_username": ""
},
{
"name": "Corey Garvey",
"github_login": "coreygarvey",
"twitter_username": ""
},
{
"name": "Arnav Choudhury",
"github_login": "arnav13081994",
"twitter_username": ""
},
{
"name": "Wes Turner",
"github_login": "westurner",
"twitter_username": "westurner"
},
{
"name": "Jakub Musko",
"github_login": "umgelurgel",
"twitter_username": ""
},
{
"name": "Fabian Affolter",
"github_login": "fabaff",
"twitter_username": "fabaff"
},
{
"name": "Simon Rey",
"github_login": "eqqe",
"twitter_username": ""
},
{
"name": "Yotam Tal",
"github_login": "yotamtal",
"twitter_username": ""
},
{
"name": "John",
"github_login": "thorrak",
"twitter_username": ""
},
{
"name": "vascop",
"github_login": "vascop",
"twitter_username": ""
},
{
"name": "PJ Hoberman",
"github_login": "pjhoberman",
"twitter_username": ""
},
{
"name": "lcd1232",
"github_login": "lcd1232",
"twitter_username": ""
},
{
"name": "Tames McTigue",
"github_login": "Tamerz",
"twitter_username": ""
},
{
"name": "Ray Besiga",
"github_login": "raybesiga",
"twitter_username": "raybesiga"
},
{
"name": "Grant McLean",
"github_login": "grantm",
"twitter_username": "grantmnz"
},
{
"name": "Kuo Chao Cheng",
"github_login": "wwwtony5488",
"twitter_username": ""
},
{
"name": "LECbg",
"github_login": "LECbg",
"twitter_username": ""
},
{
"name": "Haseeb ur Rehman",
"github_login": "professorhaseeb",
"twitter_username": "professorhaseeb"
},
{
"name": "Abdul Qoyyuum",
"github_login": "Qoyyuum",
"twitter_username": "Qoyyuum"
},
{
"name": "Matthew Foster Walsh",
"github_login": "mfosterw",
"twitter_username": ""
},
{
"name": "Keith Callenberg",
"github_login": "keithcallenberg",
"twitter_username": ""
},
{
"name": "Mike97M",
"github_login": "Mike97M",
"twitter_username": ""
},
{
"name": "Charlie Macfarlane Brodie",
"github_login": "tannart",
"twitter_username": ""
},
{
"name": "Floyd Hightower",
"github_login": "fhightower",
"twitter_username": ""
},
{
"name": "Manjit Pardeshi",
"github_login": "Manjit2003",
"twitter_username": ""
},
{
"name": "Meraj ",
"github_login": "ichbinmeraj",
"twitter_username": "merajsafari"
},
{
"name": "dalrrard",
"github_login": "dalrrard",
"twitter_username": ""
},
{
"name": "Liam Brenner",
"github_login": "SableWalnut",
"twitter_username": ""
},
{
"name": "Noah H",
"github_login": "nthall",
"twitter_username": ""
},
{
"name": "Diego Montes",
"github_login": "d57montes",
"twitter_username": ""
},
{
"name": "Chao Yang Wu",
"github_login": "goatwu1993",
"twitter_username": ""
},
{
"name": "mpoli",
"github_login": "mpoli",
"twitter_username": ""
},
{
"name": "Zach Borboa",
"github_login": "zachborboa",
"twitter_username": ""
},
{
"name": "Timm Simpkins",
"github_login": "PoDuck",
"twitter_username": ""
},
{
"name": "Douglas",
"github_login": "douglascdev",
"twitter_username": ""
},
{
"name": "Will Gordon",
"github_login": "wgordon17",
"twitter_username": ""
},
{
"name": "Bogdan Mateescu",
"github_login": "mateesville93",
"twitter_username": ""
},
{
"name": "Fuzzwah",
"github_login": "Fuzzwah",
"twitter_username": ""
},
{
"name": "Thibault J.",
"github_login": "thibault",
"twitter_username": "thibault"
},
{
"name": "Pedro Campos",
"github_login": "pcampos119104",
"twitter_username": ""
},
{
"name": "Vikas Yadav",
"github_login": "vik-y",
"twitter_username": ""
},
{
"name": "Abdullah Adeel",
"github_login": "mabdullahadeel",
"twitter_username": "abdadeel_"
},
{
"name": "Jorge Valdez",
"github_login": "jorgeavaldez",
"twitter_username": ""
},
{
"name": "Ryan Fitch",
"github_login": "ryfi",
"twitter_username": ""
},
{
"name": "ghazi-git",
"github_login": "ghazi-git",
"twitter_username": ""
},
{
"name": "Cebrail Yılmaz",
"github_login": "b1sar",
"twitter_username": ""
},
{
"name": "Artur Barseghyan",
"github_login": "barseghyanartur",
"twitter_username": ""
},
{
"name": "innicoder",
"github_login": "innicoder",
"twitter_username": ""
},
{
"name": "Naveen",
"github_login": "naveensrinivasan",
"twitter_username": "snaveen"
},
{
"name": "Nikita Sobolev",
"github_login": "sobolevn",
"twitter_username": ""
},
{
"name": "Sebastian Reyes Espinosa",
"github_login": "sebastian-code",
"twitter_username": "sebastianreyese"
},
{
"name": "jugglinmike",
"github_login": "jugglinmike",
"twitter_username": ""
},
{
"name": "monosans",
"github_login": "monosans",
"twitter_username": ""
},
{
"name": "Marcio Mazza",
"github_login": "marciomazza",
"twitter_username": "marciomazza"
},
{
"name": "Brandon Rumiser",
"github_login": "brumiser1550",
"twitter_username": ""
},
{
"name": "krati yadav",
"github_login": "krati5",
"twitter_username": ""
},
{
"name": "Abe Hanoka",
"github_login": "abe-101",
"twitter_username": "abe__101"
},
{
"name": "Adin Hodovic",
"github_login": "adinhodovic",
"twitter_username": ""
},
{
"name": "Leifur Halldor Asgeirsson",
"github_login": "leifurhauks",
"twitter_username": ""
},
{
"name": "David",
"github_login": "buckldav",
"twitter_username": ""
},
{
"name": "rguptar",
"github_login": "rguptar",
"twitter_username": ""
},
{
"name": "Omer-5",
"github_login": "Omer-5",
"twitter_username": ""
},
{
"name": "TAKAHASHI Shuuji",
"github_login": "shuuji3",
"twitter_username": ""
},
{
"name": "Thomas Booij",
"github_login": "ThomasBooij95",
"twitter_username": ""
},
{
"name": "Pamela Fox",
"github_login": "pamelafox",
"twitter_username": "pamelafox"
},
{
"name": "Robin",
"github_login": "Kaffeetasse",
"twitter_username": ""
},
{
"name": "Patrick Tran",
"github_login": "theptrk",
"twitter_username": ""
},
{
"name": "tildebox",
"github_login": "tildebox",
"twitter_username": ""
},
{
"name": "duffn",
"github_login": "duffn",
"twitter_username": ""
},
{
"name": "Delphine LEMIRE",
"github_login": "DelphineLemire",
"twitter_username": ""
},
{
"name": "Hoai-Thu Vuong",
"github_login": "thuvh",
"twitter_username": ""
},
{
"name": "Arkadiusz Michał Ryś",
"github_login": "arrys",
"twitter_username": ""
},
{
"name": "mpsantos",
"github_login": "mpsantos",
"twitter_username": ""
},
{
"name": "Morten Kaae",
"github_login": "MortenKaae",
"twitter_username": ""
},
{
"name": "Birtibu",
"github_login": "Birtibu",
"twitter_username": ""
},
{
"name": "Matheus Jardim Bernardes",
"github_login": "matheusjardimb",
"twitter_username": ""
},
{
"name": "masavini",
"github_login": "masavini",
"twitter_username": ""
},
{
"name": "Joseph Hanna",
"github_login": "sanchimenea",
"twitter_username": ""
},
{
"name": "tmajerech",
"github_login": "tmajerech",
"twitter_username": ""
},
{
"name": "villancikos",
"github_login": "villancikos",
"twitter_username": ""
},
{
"name": "Imran Rahman",
"github_login": "infraredCoding",
"twitter_username": ""
},
{
"name": "hleroy",
"github_login": "hleroy",
"twitter_username": ""
},
{
"name": "Shayan Karimi",
"github_login": "shywn-mrk",
"twitter_username": "shywn_mrk"
},
{
"name": "Sadra Yahyapour",
"github_login": "lnxpy",
"twitter_username": "lnxpylnxpy"
},
{
"name": "Tharushan",
"github_login": "Tharushan",
"twitter_username": ""
},
{
"name": "Fateme Fouladkar",
"github_login": "FatemeFouladkar",
"twitter_username": ""
},
{
"name": "zhaoruibing",
"github_login": "zhaoruibing",
"twitter_username": ""
},
{
"name": "MinWoo Sung",
"github_login": "SungMinWoo",
"twitter_username": ""
},
{
"name": "itisnotyourenv",
"github_login": "itisnotyourenv",
"twitter_username": ""
},
{
"name": "Vageeshan Mankala",
"github_login": "vagi8",
"twitter_username": ""
},
{
"name": "Jakub Boukal",
"github_login": "SukiCZ",
"twitter_username": ""
},
{
"name": "Christian Jauvin",
"github_login": "cjauvin",
"twitter_username": ""
},
{
"name": "Plurific",
"github_login": "paulschwenn",
"twitter_username": ""
},
{
"name": "GitBib",
"github_login": "GitBib",
"twitter_username": ""
},
{
"name": "Freddy",
"github_login": "Hraesvelg",
"twitter_username": ""
},
{
"name": "aiden",
"github_login": "anyidea",
"twitter_username": ""
},
{
"name": "Michael V. Battista",
"github_login": "mvbattista",
"twitter_username": "mvbattista"
},
{
"name": "Nix Siow",
"github_login": "nixsiow",
"twitter_username": "nixsiow"
},
{
"name": "Jens Kaeske",
"github_login": "jkaeske",
"twitter_username": ""
},
{
"name": "henningbra",
"github_login": "henningbra",
"twitter_username": ""
},
{
"name": "Paul Wulff",
"github_login": "mtmpaulwulff",
"twitter_username": ""
},
{
"name": "Mounir",
"github_login": "mounirmesselmeni",
"twitter_username": ""
},
{
"name": "JAEGYUN JUNG",
"github_login": "TGoddessana",
"twitter_username": ""
},
{
"name": "Simeon Emanuilov",
"github_login": "s-emanuilov",
"twitter_username": "s_emanuilov"
},
{
"name": "Patrick Zhang",
"github_login": "PatDuJour",
"twitter_username": ""
},
{
"name": "GvS",
"github_login": "GvS666",
"twitter_username": ""
},
{
"name": "David Păcioianu",
"github_login": "DavidPacioianu",
"twitter_username": ""
},
{
"name": "farwill",
"github_login": "farwill",
"twitter_username": ""
},
{
"name": "quroom",
"github_login": "quroom",
"twitter_username": ""
},
{
"name": "Marios Frixou",
"github_login": "frixou89",
"twitter_username": ""
},
{
"name": "Geo Maciolek",
"github_login": "GeoMaciolek",
"twitter_username": ""
},
{
"name": "Nadav Peretz",
"github_login": "nadavperetz",
"twitter_username": ""
},
{
"name": "Param Kapur",
"github_login": "paramkpr",
"twitter_username": "ParamKapur"
},
{
"name": "Jason Mok",
"github_login": "jasonmokk",
"twitter_username": ""
},
{
"name": "Manas Mallick",
"github_login": "ManDun",
"twitter_username": ""
},
{
"name": "Alexandr Artemyev",
"github_login": "Mogost",
"twitter_username": "MOGOST"
},
{
"name": "Ali Shamakhi",
"github_login": "ali-shamakhi",
"twitter_username": ""
},
{
"name": "Filipe Nascimento",
"github_login": "FilipeNas",
"twitter_username": ""
},
{
"name": "Kevin Mills",
"github_login": "millsks",
"twitter_username": ""
},
{
"name": "milvagox",
"github_login": "milvagox",
"twitter_username": "milvagox"
},
{
"name": "Johnny Metz",
"github_login": "johnnymetz",
"twitter_username": ""
},
{
"name": "Will",
"github_login": "novucs",
"twitter_username": ""
},
{
"name": "rxm7706",
"github_login": "rxm7706",
"twitter_username": ""
},
{
"name": "Marlon Castillo",
"github_login": "mcastle",
"twitter_username": ""
},
{
"name": "Alex Kanavos",
"github_login": "alexkanavos",
"twitter_username": ""
},
{
"name": "LJFP",
"github_login": "ljfp",
"twitter_username": ""
},
{
"name": "Francisco Navarro Morales ",
"github_login": "spothound",
"twitter_username": ""
},
{
"name": "Mariot Tsitoara",
"github_login": "mariot",
"twitter_username": ""
},
{
"name": "Christian Jensen",
"github_login": "jensenbox",
"twitter_username": "cjensen"
},
{
"name": "Denis Darii",
"github_login": "DNX",
"twitter_username": ""
},
{
"name": "qwerrrqw",
"github_login": "qwerrrqw",
"twitter_username": ""
},
{
"name": "Pulse-Mind",
"github_login": "pulse-mind",
"twitter_username": ""
},
{
"name": "Hana Belay",
"github_login": "earthcomfy",
"twitter_username": ""
},
{
"name": "Ed Morley",
"github_login": "edmorley",
"twitter_username": ""
},
{
"name": "Alan Cyment",
"github_login": "acyment",
"twitter_username": ""
},
{
"name": "Kawsar Alam Foysal",
"github_login": "iamfoysal",
"twitter_username": ""
},
{
"name": "Igor Jerosimić",
"github_login": "igor-wl",
"twitter_username": ""
},
{
"name": "Pepa",
"github_login": "07pepa",
"twitter_username": ""
},
{
"name": "Aidos Kanapyanov",
"github_login": "aidoskanapyanov",
"twitter_username": ""
},
{
"name": "Jeongseok Kang",
"github_login": "rapsealk",
"twitter_username": ""
},
{
"name": "Jeff Foster",
"github_login": "jeffpfoster",
"twitter_username": ""
},
{
"name": "Dominique Plante",
"github_login": "dominiqueplante",
"twitter_username": ""
},
{
"name": "Lucas Klasa",
"github_login": "lucaskbr",
"twitter_username": ""
},
{
"name": "DevForsure",
"github_login": "DevForsure",
"twitter_username": ""
},
{
"name": "Vincent Leduc",
"github_login": "leducvin",
"twitter_username": ""
},
{
"name": "Martín Blech",
"github_login": "martinblech",
"twitter_username": ""
},
{
"name": "jlitrell",
"github_login": "jlitrell",
"twitter_username": ""
},
{
"name": "Maurício Gioachini",
"github_login": "MauGx3",
"twitter_username": ""
},
{
"name": "Donghoon Nam",
"github_login": "codenamenam",
"twitter_username": ""
},
{
"name": "Tosinibikunle",
"github_login": "Tosinibikunle",
"twitter_username": ""
},
{
"name": "Josh596",
"github_login": "Josh596",
"twitter_username": ""
},
{
"name": "Harshit Ranjan",
"github_login": "HarshitR2004",
"twitter_username": ""
},
{
"name": "Mohamed Feddad",
"github_login": "mrf345",
"twitter_username": ""
},
{
"name": "Christian González",
"github_login": "nerdoc",
"twitter_username": ""
},
{
"name": "Soldatov Serhii",
"github_login": "soldatov-ss",
"twitter_username": ""
},
{
"name": "asmo",
"github_login": "a5m0",
"twitter_username": ""
}
]
================================================
FILE: .github/dependabot.yml
================================================
# Config for Dependabot updates. See Documentation here:
# https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
version: 2
enable-beta-ecosystems: true
updates:
# Update Python deps for the template (not the generated project)
- package-ecosystem: "uv"
directory: "/"
schedule:
interval: "daily"
labels:
- "project infrastructure"
ignore:
- dependency-name: "ruff" # updated via PyUp
# Update GitHub actions in workflows
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"
labels:
- "project infrastructure"
# Update npm packages
- package-ecosystem: "npm"
directories:
- "{{cookiecutter.project_slug}}/"
schedule:
interval: "daily"
labels:
- "update"
# Enable version updates for Docker
- package-ecosystem: "docker"
directories:
- "{{cookiecutter.project_slug}}/compose/local/django/"
- "{{cookiecutter.project_slug}}/compose/local/docs/"
- "{{cookiecutter.project_slug}}/compose/production/django/"
- "{{cookiecutter.project_slug}}/compose/local/node/"
- "{{cookiecutter.project_slug}}/compose/production/aws/"
- "{{cookiecutter.project_slug}}/compose/production/postgres/"
- "{{cookiecutter.project_slug}}/compose/production/nginx/"
- "{{cookiecutter.project_slug}}/compose/production/traefik/"
schedule:
interval: "daily"
labels:
- "update"
# NOTE: Package ecosystem "docker-compose" can't handle Jinja tags in yml files
================================================
FILE: .github/workflows/align-versions.yml
================================================
name: align versions
on:
pull_request:
paths:
- "{{cookiecutter.project_slug}}/requirements/local.txt"
- "{{cookiecutter.project_slug}}/compose/local/node/Dockerfile"
# Manual trigger
workflow_dispatch:
permissions:
contents: write
pull-requests: write
jobs:
run:
if: ${{ github.event_name == 'workflow_dispatch' || github.event_name == 'pull_request' && (github.event.pull_request.user.login == 'pyup-bot' || github.event.pull_request.user.login == 'dependabot[bot]') }}
runs-on: ubuntu-latest
env:
GH_PAT: ${{ secrets.GH_PAT }}
strategy:
fail-fast: false
matrix:
job:
- script: scripts/ruff_version.py
name: Ruff
- script: scripts/node_version.py
name: Node
name: "${{ matrix.job.name }} versions"
steps:
- name: Checkout with token
uses: actions/checkout@v6
if: ${{ env.GH_PAT != '' }}
with:
token: ${{ env.GH_PAT }}
ref: ${{ github.head_ref }}
- name: Checkout without token
uses: actions/checkout@v6
if: ${{ env.GH_PAT == '' }}
with:
ref: ${{ github.head_ref }}
- uses: astral-sh/setup-uv@v7
- run: uv run ${{ matrix.job.script }}
- uses: stefanzweifel/git-auto-commit-action@v7
with:
commit_message: Align versions
================================================
FILE: .github/workflows/ci.yml
================================================
name: CI
on:
push:
branches: ["main"]
pull_request:
concurrency:
group: ${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
tests:
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- windows-latest
- macOS-latest
name: "pytest ${{ matrix.os }}"
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6
- name: Install uv
uses: astral-sh/setup-uv@v7
- name: Install dependencies
run: uv sync --locked
- name: Run tests
run: uv run pytest -n auto tests
docker:
strategy:
fail-fast: false
matrix:
script:
- name: Basic
args: "ci_tool=Gitlab"
- name: Celery & DRF
args: "use_celery=y rest_api=DRF"
- name: Gulp
args: "frontend_pipeline=Gulp"
- name: Webpack
args: "frontend_pipeline=Webpack"
name: "Docker ${{ matrix.script.name }}"
runs-on: ubuntu-latest
env:
DOCKER_BUILDKIT: 1
COMPOSE_DOCKER_CLI_BUILD: 1
steps:
- uses: actions/checkout@v6
- name: Install uv
uses: astral-sh/setup-uv@v7
- name: Install dependencies
run: uv sync --locked
- name: Docker ${{ matrix.script.name }}
run: sh tests/test_docker.sh ${{ matrix.script.args }}
bare:
strategy:
fail-fast: false
matrix:
script:
- name: Celery
args: "use_celery=y frontend_pipeline='Django Compressor'"
- name: Gulp
args: "frontend_pipeline=Gulp"
- name: Webpack
args: "frontend_pipeline=Webpack use_heroku=y"
- name: Email Username
args: "username_type=email ci_tool=Github project_name='Something superduper long - the great amazing project' project_slug=my_awesome_project"
- name: Email username & DRF
args: "username_type=email rest_api=DRF ci_tool=Gitlab"
- name: Async & Django-Ninja
args: "use_async=y rest_api='Django Ninja'"
- name: Async, email username & Django-Ninja
args: "use_async=y username_type=email rest_api='Django Ninja'"
name: "Bare metal ${{ matrix.script.name }}"
runs-on: ubuntu-latest
services:
redis:
image: redis:7.2
ports:
- 6379:6379
postgres:
image: postgres:14
ports:
- 5432:5432
env:
POSTGRES_PASSWORD: postgres
env:
REDIS_URL: "redis://localhost:6379/0"
# postgres://user:password@host:port/database
DATABASE_URL: "postgres://postgres:postgres@localhost:5432/postgres"
steps:
- uses: actions/checkout@v6
- name: Install uv
uses: astral-sh/setup-uv@v7
- name: Install dependencies
run: uv sync --locked
- uses: actions/setup-node@v6
with:
node-version-file: "{{cookiecutter.project_slug}}/package.json"
- name: Bare Metal ${{ matrix.script.name }}
run: sh tests/test_bare.sh ${{ matrix.script.args }}
================================================
FILE: .github/workflows/dependabot-uv-lock.yml
================================================
name: uv
on:
pull_request:
paths:
- "pyproject.toml"
# Manual trigger
workflow_dispatch:
permissions:
contents: write
pull-requests: write
jobs:
lock:
if: ${{ github.event_name == 'workflow_dispatch' || github.event_name == 'pull_request' && (github.event.pull_request.user.login == 'pyup-bot' || github.event.pull_request.user.login == 'dependabot[bot]') }}
runs-on: ubuntu-latest
env:
GH_PAT: ${{ secrets.GH_PAT }}
steps:
- name: Checkout with token
uses: actions/checkout@v6
if: ${{ env.GH_PAT != '' }}
with:
token: ${{ env.GH_PAT }}
- name: Checkout without token
uses: actions/checkout@v6
if: ${{ env.GH_PAT == '' }}
- uses: astral-sh/setup-uv@v7
- run: uv lock
- uses: stefanzweifel/git-auto-commit-action@v7
with:
commit_message: Regenerate uv.lock
================================================
FILE: .github/workflows/django-issue-checker.yml
================================================
# Creates a new issue for Major/Minor Django updates that keeps track
# of all dependencies that need to be updated/merged in order for the
# latest Django version to also be merged.
name: Django Issue Checker
on:
schedule:
- cron: "28 5 * * *"
# Manual trigger
workflow_dispatch:
jobs:
issue-checker:
# Disables this workflow from running in a repository that is not part of the indicated organization/user
if: github.repository_owner == 'cookiecutter'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Install uv
uses: astral-sh/setup-uv@v7
- name: Create Django Major Issue
run: uv run --locked scripts/create_django_issue.py
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
================================================
FILE: .github/workflows/issue-manager.yml
================================================
# Automatically close issues or pull requests that have a label, after a custom delay, if no one replies.
# https://github.com/tiangolo/issue-manager
name: Issue Manager
on:
schedule:
- cron: "12 0 * * *"
issue_comment:
types:
- created
issues:
types:
- labeled
pull_request_target:
types:
- labeled
workflow_dispatch:
jobs:
issue-manager:
# Disables this workflow from running in a repository that is not part of the indicated organization/user
if: github.repository_owner == 'cookiecutter'
runs-on: ubuntu-latest
steps:
- uses: tiangolo/issue-manager@0.6.0
with:
token: ${{ secrets.GITHUB_TOKEN }}
config: >
{
"answered": {
"delay": 864000,
"message": "Assuming the question was answered, this will be automatically closed now."
},
"solved": {
"delay": 864000,
"message": "Assuming the original issue was solved, it will be automatically closed now."
},
"waiting": {
"delay": 864000,
"message": "Automatically closing after waiting for additional info. To re-open, please provide the additional information requested."
},
"wontfix": {
"delay": 864000,
"message": "As discussed, we won't be implementing this. Automatically closing."
}
}
================================================
FILE: .github/workflows/pre-commit-autoupdate.yml
================================================
# Run pre-commit autoupdate every day at midnight
# and create a pull request if any changes
name: Pre-commit auto-update
on:
schedule:
- cron: "15 2 * * *"
workflow_dispatch: # to trigger manually
permissions:
contents: read
jobs:
auto-update:
# Disables this workflow from running in a repository that is not part of the indicated organization/user
if: github.repository_owner == 'cookiecutter'
permissions:
contents: write # for peter-evans/create-pull-request to create branch
pull-requests: write # for peter-evans/create-pull-request to create a PR
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Install uv
uses: astral-sh/setup-uv@v7
- name: Autoupdate template
run: uv tool run pre-commit autoupdate
- name: Autoupdate generated projects
working-directory: "{{cookiecutter.project_slug}}"
run: uv tool run pre-commit autoupdate
- name: Create Pull Request
uses: peter-evans/create-pull-request@v8
with:
token: ${{ secrets.GITHUB_TOKEN }}
branch: update/pre-commit-autoupdate
title: Auto-update pre-commit hooks
commit-message: Auto-update pre-commit hooks
body: Update versions of tools in pre-commit configs to latest version
labels: update
================================================
FILE: .github/workflows/update-changelog.yml
================================================
name: Update Changelog
on:
# Every day at 2am
schedule:
- cron: "0 2 * * *"
# Manual trigger
workflow_dispatch:
jobs:
update:
# Disables this workflow from running in a repository that is not part of the indicated organization/user
if: github.repository_owner == 'cookiecutter'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Install uv
uses: astral-sh/setup-uv@v7
- name: Set git details
run: |
git config --global user.name "github-actions"
git config --global user.email "action@github.com"
- name: Update changelog
run: uv run --locked scripts/update_changelog.py
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
================================================
FILE: .github/workflows/update-contributors.yml
================================================
name: Update Contributors
on:
push:
branches:
- main
permissions:
contents: read
jobs:
build:
# Disables this workflow from running in a repository that is not part of the indicated organization/user
if: github.repository_owner == 'cookiecutter'
permissions:
contents: write # for stefanzweifel/git-auto-commit-action to push code in repo
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Install uv
uses: astral-sh/setup-uv@v7
- name: Update list
run: uv run --locked scripts/update_contributors.py
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Commit changes
uses: stefanzweifel/git-auto-commit-action@v7
with:
commit_message: Update Contributors
file_pattern: CONTRIBUTORS.md .github/contributors.json
================================================
FILE: .gitignore
================================================
### Python template
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.coverage.*
.cache/
nosetests.xml
coverage.xml
*.cover
.hypothesis/
# Translations
*.mo
*.pot
# Django stuff:
*.log
# Sphinx documentation
docs/_build/
# PyBuilder
target/
# pyenv
.python-version
# celery beat schedule file
celerybeat-schedule
# Environments
.env
.venv
env/
venv/
ENV/
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
### Linux template
*~
# temporary files which can be created if a process still has a handle open of a deleted file
.fuse_hidden*
# KDE directory preferences
.directory
# Linux trash folder which might appear on any partition or disk
.Trash-*
# .nfs files are created when an open file is removed but is still being accessed
.nfs*
### VisualStudioCode template
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
### Windows template
# Windows thumbnail cache files
Thumbs.db
ehthumbs.db
ehthumbs_vista.db
# Dump file
*.stackdump
# Folder config file
Desktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
# Windows Installer files
*.cab
*.msi
*.msm
*.msp
# Windows shortcuts
*.lnk
### SublimeText template
# Cache files for Sublime Text
*.tmlanguage.cache
*.tmPreferences.cache
*.stTheme.cache
# Workspace files are user-specific
*.sublime-workspace
# Project files should be checked into the repository, unless a significant
# proportion of contributors will probably not be using Sublime Text
# *.sublime-project
# SFTP configuration file
sftp-config.json
# Package control specific files
Package Control.last-run
Package Control.ca-list
Package Control.ca-bundle
Package Control.system-ca-bundle
Package Control.cache/
Package Control.ca-certs/
Package Control.merged-ca-bundle
Package Control.user-ca-bundle
oscrypto-ca-bundle.crt
bh_unicode_properties.cache
# Sublime-github package stores a github token in this file
# https://packagecontrol.io/packages/sublime-github
GitHub.sublime-settings
### macOS template
# General
*.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
### Vim template
# Swap
[._]*.s[a-v][a-z]
[._]*.sw[a-p]
[._]s[a-v][a-z]
[._]sw[a-p]
# Session
Session.vim
# Temporary
.netrwhist
# Auto-generated tag files
tags
# Even though the project might be opened and edited
# in any of the JetBrains IDEs, it makes no sence whatsoever
# to 'run' anything within it since any particular cookiecutter
# is declarative by nature.
.idea/
.pytest_cache/
================================================
FILE: .pre-commit-config.yaml
================================================
exclude: "{{cookiecutter.project_slug}}|.github/contributors.json|CHANGELOG.md|CONTRIBUTORS.md"
default_stages: [pre-commit]
minimum_pre_commit_version: "3.2.0"
default_language_version:
python: python3.13
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v6.0.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-json
- id: check-toml
- id: check-xml
- id: check-yaml
- id: debug-statements
- id: check-builtin-literals
- id: check-case-conflict
- id: detect-private-key
- repo: https://github.com/pre-commit/mirrors-prettier
rev: v4.0.0-alpha.8
hooks:
- id: prettier
args: ["--tab-width", "2"]
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.15.7
hooks:
- id: ruff
args: [--fix, --exit-non-zero-on-fix]
- id: ruff-format
- repo: https://github.com/tox-dev/pyproject-fmt
rev: v2.20.0
hooks:
- id: pyproject-fmt
ci:
autoupdate_schedule: weekly
skip: []
submodules: false
================================================
FILE: .pyup.yml
================================================
# configure updates globally
# default: all
# allowed: all, insecure, False
update: all
# configure dependency pinning globally
# default: True
# allowed: True, False
pin: True
# add a label to pull requests, default is not set
# requires private repo permissions, even on public repos
# default: empty
label_prs: update
requirements:
- "{{cookiecutter.project_slug}}/requirements/base.txt"
- "{{cookiecutter.project_slug}}/requirements/local.txt"
- "{{cookiecutter.project_slug}}/requirements/production.txt"
================================================
FILE: .readthedocs.yaml
================================================
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
version: 2
build:
os: ubuntu-24.04
tools:
python: "3.13"
jobs:
pre_create_environment:
- asdf plugin add uv
- asdf install uv latest
- asdf global uv latest
create_environment:
- uv venv "${READTHEDOCS_VIRTUALENV_PATH}"
install:
- UV_PROJECT_ENVIRONMENT="${READTHEDOCS_VIRTUALENV_PATH}" uv sync --frozen --no-dev --only-group docs
sphinx:
configuration: docs/conf.py
================================================
FILE: AGENTS.md
================================================
# AGENTS.md
This file provides guidance to AI coding agents when working with code in this repository.
## What This Project Is
cookiecutter-django is a **Cookiecutter template** that generates production-ready Django projects. It is NOT a Django application itself — it's a Jinja2-templated project scaffold. The generated project lives inside `{{cookiecutter.project_slug}}/` and gets processed by Cookiecutter when users run the generator.
## Commands
### Install dependencies
```bash
uv sync --locked
```
### Run tests
```bash
# Full test suite (parallel, via tox)
uv run tox run -e py
# Direct pytest (parallel)
uv run pytest -n auto tests
# Single test
uv run pytest tests/test_cookiecutter_generation.py -k "test_name"
# Run with auto-fixable style checks enabled
AUTOFIXABLE_STYLES=1 uv run pytest -n auto tests
```
### Linting and formatting
```bash
# Run all pre-commit hooks
uv run pre-commit run --all-files
# Ruff only
uv run ruff check --fix
uv run ruff format
```
### Integration tests (require Docker or PostgreSQL+Redis)
```bash
# Docker-based
sh tests/test_docker.sh # defaults
sh tests/test_docker.sh use_celery=y use_drf=y # with options
# Bare metal (needs PostgreSQL and Redis running)
sh tests/test_bare.sh
sh tests/test_bare.sh use_celery=y frontend_pipeline=Gulp
```
### Generate a project locally for debugging
```bash
uv run cookiecutter . --no-input --output-dir=/tmp/debug
```
## Architecture
### Template Generation Flow
1. User runs `cookiecutter` — prompted with options from `cookiecutter.json`
2. `hooks/pre_gen_project.py` validates input (project_slug format, conflicting options)
3. Jinja2 renders all files under `{{cookiecutter.project_slug}}/` with user choices
4. `hooks/post_gen_project.py` (~550 lines) removes files not needed for the chosen options, generates random secrets, and adjusts config files
### Key Files
- **`cookiecutter.json`** — All template variables and their choices (project name, Docker, Celery, cloud provider, frontend pipeline, etc.)
- **`hooks/pre_gen_project.py`** — Pre-generation validation (uses Jinja2 syntax at the top for context manipulation)
- **`hooks/post_gen_project.py`** — Post-generation cleanup: removes files based on user choices, generates Django secret key, sets DB credentials, modifies package.json and .pre-commit-config.yaml
- **`{{cookiecutter.project_slug}}/`** — The template directory; files here use Jinja2 conditionals (`{% if cookiecutter.use_celery == 'y' %}`) to include/exclude content
### Test Structure
- **`tests/test_cookiecutter_generation.py`** — Main test file. Uses `pytest-cookies` to bake the template with 50+ option combinations defined in `SUPPORTED_COMBINATIONS`. Verifies: no Jinja syntax left in output, generated code passes linting, correct files present/absent. Skips on Windows (sh module) and macOS CI (slow).
- **`tests/test_hooks.py`** — Unit tests for hook helper functions
- **`tests/test_bare.sh`** / **`tests/test_docker.sh`** — Integration tests that generate a project and run its full test suite
### Generated Project Layout
The generated Django project uses:
- `config/settings/{base,local,test,production}.py` — Split settings with django-environ
- `config/urls.py` — URL routing
- `<project_slug>/users/` — Custom user model (username or email-based auth via django-allauth)
- `compose/` — Docker configs for local and production
- `requirements/` — Not used; dependencies managed via `pyproject.toml` + `uv.lock`
## Conventions
- **Python 3.13** required (`requires-python = "==3.13.*"`)
- **Line length**: 119 characters (ruff and djlint)
- **Ruff** for linting/formatting; config in `pyproject.toml` under `[tool.ruff]`
- **djLint** for HTML template linting with `profile = "jinja"`
- Template files under `{{cookiecutter.project_slug}}/` are excluded from ruff (not parseable Python)
- **Calendar versioning**: `YYYY.MM.DD`
## Adding a New Template Option
1. Add the variable and choices to `cookiecutter.json`
2. Add validation in `hooks/pre_gen_project.py` if needed
3. Add file removal/modification logic in `hooks/post_gen_project.py`
4. Use Jinja2 conditionals in template files: `{% if cookiecutter.option == 'y' %}`
5. Add test combinations to `SUPPORTED_COMBINATIONS` in `tests/test_cookiecutter_generation.py`
================================================
FILE: CHANGELOG.md
================================================
# Change Log
All enhancements and patches to Cookiecutter Django will be documented in this file.
<!-- GENERATOR_PLACEHOLDER -->
## 2026.03.19
### Updated
- Update ruff to 0.15.7 ([#6451](https://github.com/cookiecutter/cookiecutter-django/pull/6451))
- Update pyproject-fmt pre-commit hook ([#6449](https://github.com/cookiecutter/cookiecutter-django/pull/6449))
## 2026.03.18
### Updated
- Update django-ninja to 1.6.2 ([#6448](https://github.com/cookiecutter/cookiecutter-django/pull/6448))
- Update djangorestframework to 3.17.0 ([#6447](https://github.com/cookiecutter/cookiecutter-django/pull/6447))
- Update django-ninja to 1.6.1 ([#6446](https://github.com/cookiecutter/cookiecutter-django/pull/6446))
- Update django-stubs to 6.0.1 ([#6445](https://github.com/cookiecutter/cookiecutter-django/pull/6445))
## 2026.03.17
### Updated
- Update sentry-sdk to 2.55.0 ([#6443](https://github.com/cookiecutter/cookiecutter-django/pull/6443))
- Update coverage to 7.13.5 ([#6442](https://github.com/cookiecutter/cookiecutter-django/pull/6442))
- Update pyproject-fmt from v2.18.1 to v2.19.0 ([#6441](https://github.com/cookiecutter/cookiecutter-django/pull/6441))
- Update django-stubs to 6.0.0 ([#6440](https://github.com/cookiecutter/cookiecutter-django/pull/6440))
## 2026.03.16
### Updated
- Update hiredis to 3.3.1 ([#6438](https://github.com/cookiecutter/cookiecutter-django/pull/6438))
- Update uvicorn to 0.42.0 ([#6437](https://github.com/cookiecutter/cookiecutter-django/pull/6437))
## 2026.03.13
### Updated
- Update ruff to 0.15.6 ([#6432](https://github.com/cookiecutter/cookiecutter-django/pull/6432))
## 2026.03.12
### Updated
- Update django-ninja to 1.6.0 ([#6431](https://github.com/cookiecutter/cookiecutter-django/pull/6431))
- Update pyproject-fmt pre-commit hook from 2.16.2 to 2.18.1 ([#6428](https://github.com/cookiecutter/cookiecutter-django/pull/6428))
- Bump traefik from 3.6.9 to v3.6.10 ([#6423](https://github.com/cookiecutter/cookiecutter-django/pull/6423))
- Bump nginx from 1.29.5 to 1.29.6 ([#6427](https://github.com/cookiecutter/cookiecutter-django/pull/6427))
## 2026.03.10
### Changed
- Upgrade to Django 6.0 ([#6411](https://github.com/cookiecutter/cookiecutter-django/pull/6411))
## 2026.03.09
### Changed
- Upgrade factory-boy to 3.3.3 and fix mypy compatibility ([#6417](https://github.com/cookiecutter/cookiecutter-django/pull/6417))
### Updated
- Update django-allauth to 65.15.0 ([#6424](https://github.com/cookiecutter/cookiecutter-django/pull/6424))
- Update redis to 7.3.0 ([#6418](https://github.com/cookiecutter/cookiecutter-django/pull/6418))
## 2026.03.06
### Updated
- Update ruff to 0.15.5 ([#6414](https://github.com/cookiecutter/cookiecutter-django/pull/6414))
## 2026.03.03
### Updated
- Update django to 5.2.12 ([#6407](https://github.com/cookiecutter/cookiecutter-django/pull/6407))
## 2026.03.02
### Changed
- Update dependabot.yml to remove Django 6.0 ignore rule ([#6402](https://github.com/cookiecutter/cookiecutter-django/pull/6402))
### Updated
- Update sentry-sdk to 2.54.0 ([#6403](https://github.com/cookiecutter/cookiecutter-django/pull/6403))
- Bump amazon/aws-cli from 2.33.0 to 2.34.0 ([#6400](https://github.com/cookiecutter/cookiecutter-django/pull/6400))
## 2026.03.01
### Changed
- Add `django-ninja` as REST API option ([#6088](https://github.com/cookiecutter/cookiecutter-django/pull/6088))
### Updated
- Update crispy-bootstrap5 to 2026.3 ([#6399](https://github.com/cookiecutter/cookiecutter-django/pull/6399))
- Update django-crispy-forms to 2.6 ([#6398](https://github.com/cookiecutter/cookiecutter-django/pull/6398))
## 2026.02.28
### Updated
- Update django-celery-beat to 2.9.0 ([#6397](https://github.com/cookiecutter/cookiecutter-django/pull/6397))
## 2026.02.27
### Updated
- Update whitenoise to 6.12.0 ([#6396](https://github.com/cookiecutter/cookiecutter-django/pull/6396))
## 2026.02.26
### Changed
- Add pyproject-fmt to the generated project ([#6074](https://github.com/cookiecutter/cookiecutter-django/pull/6074))
### Updated
- Update ruff to 0.15.4 ([#6395](https://github.com/cookiecutter/cookiecutter-django/pull/6395))
- Update redis to 7.2.1 ([#6391](https://github.com/cookiecutter/cookiecutter-django/pull/6391))
## 2026.02.25
### Updated
- Bump node from 24.13 to 24.14 ([#6386](https://github.com/cookiecutter/cookiecutter-django/pull/6386))
- Update django-upgrade pre-commit hook ([#6385](https://github.com/cookiecutter/cookiecutter-django/pull/6385))
## 2026.02.24
### Changed
- Add agents instructions ([#6208](https://github.com/cookiecutter/cookiecutter-django/pull/6208))
### Updated
- Bump traefik from 3.6.8 to 3.6.9 ([#6384](https://github.com/cookiecutter/cookiecutter-django/pull/6384))
## 2026.02.20
### Updated
- Update ruff to 0.15.2 ([#6375](https://github.com/cookiecutter/cookiecutter-django/pull/6375))
## 2026.02.19
### Updated
- Update werkzeug to 3.1.6 ([#6374](https://github.com/cookiecutter/cookiecutter-django/pull/6374))
- Update django-environ to 0.13.0 ([#6368](https://github.com/cookiecutter/cookiecutter-django/pull/6368))
- Update psycopg to 3.3.3 ([#6371](https://github.com/cookiecutter/cookiecutter-django/pull/6371))
- Update pyproject-fmt to 2.16.1 ([#6369](https://github.com/cookiecutter/cookiecutter-django/pull/6369))
## 2026.02.17
### Updated
- Update uvicorn to 0.41.0 ([#6366](https://github.com/cookiecutter/cookiecutter-django/pull/6366))
## 2026.02.16
### Updated
- Update redis to 7.2.0 ([#6365](https://github.com/cookiecutter/cookiecutter-django/pull/6365))
- Update sentry-sdk to 2.53.0 ([#6363](https://github.com/cookiecutter/cookiecutter-django/pull/6363))
- Update pytest-django to 4.12.0 ([#6361](https://github.com/cookiecutter/cookiecutter-django/pull/6361))
- Update django-environ to 0.12.1 ([#6360](https://github.com/cookiecutter/cookiecutter-django/pull/6360))
- Update django-allauth to 65.14.3 ([#6359](https://github.com/cookiecutter/cookiecutter-django/pull/6359))
## 2026.02.13
### Updated
- Update django-allauth to 65.14.2 ([#6358](https://github.com/cookiecutter/cookiecutter-django/pull/6358))
- Update gunicorn to 25.1.0 ([#6357](https://github.com/cookiecutter/cookiecutter-django/pull/6357))
- Update ruff to 0.15.1 ([#6354](https://github.com/cookiecutter/cookiecutter-django/pull/6354))
## 2026.02.12
### Updated
- Bump traefik from 3.6.7 to 3.6.8 ([#6353](https://github.com/cookiecutter/cookiecutter-django/pull/6353))
## 2026.02.11
### Updated
- Update pillow to 12.1.1 ([#6351](https://github.com/cookiecutter/cookiecutter-django/pull/6351))
## 2026.02.10
### Updated
- Update redis to 7.1.1 ([#6338](https://github.com/cookiecutter/cookiecutter-django/pull/6338))
- Update coverage to 7.13.4 ([#6336](https://github.com/cookiecutter/cookiecutter-django/pull/6336))
## 2026.02.09
### Updated
- Update django-allauth to 65.14.1 ([#6324](https://github.com/cookiecutter/cookiecutter-django/pull/6324))
- Update gunicorn to 25.0.3 ([#6323](https://github.com/cookiecutter/cookiecutter-django/pull/6323))
## 2026.02.06
### Updated
- Update gunicorn to 25.0.2 ([#6322](https://github.com/cookiecutter/cookiecutter-django/pull/6322))
## 2026.02.05
### Updated
- Bump nginx from 1.29.4 to 1.29.5 ([#6321](https://github.com/cookiecutter/cookiecutter-django/pull/6321))
## 2026.02.04
### Updated
- Update sentry-sdk to 2.52.0 ([#6320](https://github.com/cookiecutter/cookiecutter-django/pull/6320))
- Update ruff to 0.15.0 ([#6319](https://github.com/cookiecutter/cookiecutter-django/pull/6319))
- Update gunicorn to 25.0.1 ([#6313](https://github.com/cookiecutter/cookiecutter-django/pull/6313))
- Update djangorestframework-stubs to 3.16.8 ([#6317](https://github.com/cookiecutter/cookiecutter-django/pull/6317))
- Update coverage to 7.13.3 ([#6315](https://github.com/cookiecutter/cookiecutter-django/pull/6315))
- Update django to 5.2.11 ([#6314](https://github.com/cookiecutter/cookiecutter-django/pull/6314))
## 2026.02.02
### Updated
- Auto-update pre-commit hooks ([#6311](https://github.com/cookiecutter/cookiecutter-django/pull/6311))
- Update gunicorn to 25.0.0 ([#6312](https://github.com/cookiecutter/cookiecutter-django/pull/6312))
- Update sentry-sdk to 2.51.0 ([#6309](https://github.com/cookiecutter/cookiecutter-django/pull/6309))
- Update coverage to 7.13.2 ([#6307](https://github.com/cookiecutter/cookiecutter-django/pull/6307))
## 2026.01.24
### Updated
- Update gunicorn to 24.1.1 ([#6306](https://github.com/cookiecutter/cookiecutter-django/pull/6306))
## 2026.01.23
### Updated
- Update gunicorn to 24.1.0 ([#6305](https://github.com/cookiecutter/cookiecutter-django/pull/6305))
- Update gunicorn to 24.0.0 ([#6303](https://github.com/cookiecutter/cookiecutter-django/pull/6303))
- Update ruff to 0.14.14 ([#6302](https://github.com/cookiecutter/cookiecutter-django/pull/6302))
## 2026.01.22
### Updated
- Update django-stubs to 5.2.9 ([#6301](https://github.com/cookiecutter/cookiecutter-django/pull/6301))
## 2026.01.20
### Updated
- Update sentry-sdk to 2.50.0 ([#6300](https://github.com/cookiecutter/cookiecutter-django/pull/6300))
- Update django-debug-toolbar to 6.2.0 ([#6299](https://github.com/cookiecutter/cookiecutter-django/pull/6299))
## 2026.01.18
### Updated
- Update django-allauth to 65.14.0 ([#6298](https://github.com/cookiecutter/cookiecutter-django/pull/6298))
## 2026.01.16
### Updated
- Update ruff to 0.14.13 ([#6293](https://github.com/cookiecutter/cookiecutter-django/pull/6293))
## 2026.01.15
### Updated
- Bump traefik from 3.6.6 to 3.6.7 ([#6291](https://github.com/cookiecutter/cookiecutter-django/pull/6291))
- Bump node from 24.12 to 24.13 ([#6288](https://github.com/cookiecutter/cookiecutter-django/pull/6288))
- Bump amazon/aws-cli from 2.32.3 to 2.33.0 ([#6289](https://github.com/cookiecutter/cookiecutter-django/pull/6289))
## 2026.01.13
### Updated
- Update djangorestframework-stubs to 3.16.7 ([#6285](https://github.com/cookiecutter/cookiecutter-django/pull/6285))
## 2026.01.08
### Updated
- Update ruff to 0.14.11 ([#6280](https://github.com/cookiecutter/cookiecutter-django/pull/6280))
- Update werkzeug to 3.1.5 ([#6279](https://github.com/cookiecutter/cookiecutter-django/pull/6279))
- Update sentry-sdk to 2.49.0 ([#6278](https://github.com/cookiecutter/cookiecutter-django/pull/6278))
## 2026.01.07
### Fixed
- Fix virtual environment setup to GitLab CI ([#6175](https://github.com/cookiecutter/cookiecutter-django/pull/6175))
### Updated
- Update django to 5.2.10 ([#6277](https://github.com/cookiecutter/cookiecutter-django/pull/6277))
## 2026.01.04
### Updated
- Update celery to 5.6.2 ([#6275](https://github.com/cookiecutter/cookiecutter-django/pull/6275))
## 2026.01.02
### Updated
- Update sphinx to 9.1.0 ([#6269](https://github.com/cookiecutter/cookiecutter-django/pull/6269))
- Update pillow to 12.1.0 ([#6271](https://github.com/cookiecutter/cookiecutter-django/pull/6271))
## 2025.12.30
### Updated
- Update celery to 5.6.1 ([#6267](https://github.com/cookiecutter/cookiecutter-django/pull/6267))
- Bump traefik from 3.6.5 to 3.6.6 ([#6268](https://github.com/cookiecutter/cookiecutter-django/pull/6268))
## 2025.12.29
### Updated
- Update coverage to 7.13.1 ([#6266](https://github.com/cookiecutter/cookiecutter-django/pull/6266))
- Update collectfasta to 3.3.3 ([#6265](https://github.com/cookiecutter/cookiecutter-django/pull/6265))
## 2025.12.23
### Fixed
- Remove silent `ImportError` suppression in `UsersConfig.ready()` ([#6263](https://github.com/cookiecutter/cookiecutter-django/pull/6263))
- Switch Dependabot to uv ecosystem ([#6258](https://github.com/cookiecutter/cookiecutter-django/pull/6258))
### Updated
- Update collectfasta to 3.3.2 ([#6262](https://github.com/cookiecutter/cookiecutter-django/pull/6262))
## 2025.12.22
### Updated
- Update uvicorn to 0.40.0 ([#6261](https://github.com/cookiecutter/cookiecutter-django/pull/6261))
## 2025.12.19
### Updated
- Update ruff to 0.14.10 ([#6255](https://github.com/cookiecutter/cookiecutter-django/pull/6255))
## 2025.12.18
### Updated
- Update django-anymail to 14.0 ([#6254](https://github.com/cookiecutter/cookiecutter-django/pull/6254))
## 2025.12.17
### Updated
- Bump traefik from 3.6.4 to 3.6.5 ([#6253](https://github.com/cookiecutter/cookiecutter-django/pull/6253))
- Update pre-commit to 4.5.1 ([#6251](https://github.com/cookiecutter/cookiecutter-django/pull/6251))
## 2025.12.16
### Updated
- Update sentry-sdk to 2.48.0 ([#6250](https://github.com/cookiecutter/cookiecutter-django/pull/6250))
## 2025.12.15
### Updated
- Update mypy to 1.19.1 ([#6249](https://github.com/cookiecutter/cookiecutter-django/pull/6249))
## 2025.12.12
### Updated
- Bump node from 24.11 to 24.12 ([#6247](https://github.com/cookiecutter/cookiecutter-django/pull/6247))
- Update ruff to 0.14.9 ([#6245](https://github.com/cookiecutter/cookiecutter-django/pull/6245))
## 2025.12.10
### Updated
- Bump nginx from 1.29.3 to 1.29.4 ([#6244](https://github.com/cookiecutter/cookiecutter-django/pull/6244))
## 2025.12.09
### Updated
- Update django-webpack-loader to 3.2.3 ([#6241](https://github.com/cookiecutter/cookiecutter-django/pull/6241))
- Update coverage to 7.13.0 ([#6240](https://github.com/cookiecutter/cookiecutter-django/pull/6240))
## 2025.12.08
### Updated
- Bump traefik from 3.6.2 to 3.6.4 ([#6239](https://github.com/cookiecutter/cookiecutter-django/pull/6239))
- Update psycopg to 3.3.2 ([#6237](https://github.com/cookiecutter/cookiecutter-django/pull/6237))
- Update pytest to 9.0.2 ([#6236](https://github.com/cookiecutter/cookiecutter-django/pull/6236))
## 2025.12.05
### Updated
- Update rcssmin to 1.2.2 ([#6232](https://github.com/cookiecutter/cookiecutter-django/pull/6232))
- Update django-compressor to 4.6.0 ([#6231](https://github.com/cookiecutter/cookiecutter-django/pull/6231))
- Update ruff to 0.14.8 ([#6229](https://github.com/cookiecutter/cookiecutter-django/pull/6229))
- Update sphinx to 9.0.4 ([#6228](https://github.com/cookiecutter/cookiecutter-django/pull/6228))
- Update djangorestframework-stubs to 3.16.6 ([#6224](https://github.com/cookiecutter/cookiecutter-django/pull/6224))
## 2025.12.03
### Changed
- Add docker buildkit flag ([#6219](https://github.com/cookiecutter/cookiecutter-django/pull/6219))
### Updated
- Update sentry-sdk to 2.47.0 ([#6223](https://github.com/cookiecutter/cookiecutter-django/pull/6223))
- Update psycopg to 3.3.1 ([#6221](https://github.com/cookiecutter/cookiecutter-django/pull/6221))
## 2025.12.02
### Updated
- Update django to 5.2.9 ([#6220](https://github.com/cookiecutter/cookiecutter-django/pull/6220))
- Update mypy to 1.19.0 ([#6218](https://github.com/cookiecutter/cookiecutter-django/pull/6218))
- Update django-stubs to 5.2.8 ([#6216](https://github.com/cookiecutter/cookiecutter-django/pull/6216))
- Update psycopg to 3.3.0 ([#6215](https://github.com/cookiecutter/cookiecutter-django/pull/6215))
- Update sphinx to 9.0.1 ([#6214](https://github.com/cookiecutter/cookiecutter-django/pull/6214))
- Update werkzeug to 3.1.4 ([#6212](https://github.com/cookiecutter/cookiecutter-django/pull/6212))
- Update celery to 5.6.0 ([#6211](https://github.com/cookiecutter/cookiecutter-django/pull/6211))
- Update ruff to 0.14.7 ([#6205](https://github.com/cookiecutter/cookiecutter-django/pull/6205))
## 2025.11.25
### Changed
- Add optional args to "just build" ([#6196](https://github.com/cookiecutter/cookiecutter-django/pull/6196))
### Documentation
- Update PostgreSQL version range in README ([#6203](https://github.com/cookiecutter/cookiecutter-django/pull/6203))
### Updated
- Update sentry-sdk to 2.46.0 ([#6202](https://github.com/cookiecutter/cookiecutter-django/pull/6202))
## 2025.11.24
### Updated
- Update coverage to 7.12.0 ([#6200](https://github.com/cookiecutter/cookiecutter-django/pull/6200))
- Update pre-commit to 4.5.0 ([#6199](https://github.com/cookiecutter/cookiecutter-django/pull/6199))
- Bump amazon/aws-cli from 2.31.0 to 2.32.3 ([#6197](https://github.com/cookiecutter/cookiecutter-django/pull/6197))
- Update psycopg to 3.2.13 ([#6194](https://github.com/cookiecutter/cookiecutter-django/pull/6194))
- Bump traefik from 3.5.4 to 3.6.2 ([#6192](https://github.com/cookiecutter/cookiecutter-django/pull/6192))
- Update django-allauth to 65.13.1 ([#6189](https://github.com/cookiecutter/cookiecutter-django/pull/6189))
- Update sentry-sdk to 2.45.0 ([#6185](https://github.com/cookiecutter/cookiecutter-django/pull/6185))
- Update pytest to 9.0.1 ([#6179](https://github.com/cookiecutter/cookiecutter-django/pull/6179))
- Update redis to 7.1.0 ([#6187](https://github.com/cookiecutter/cookiecutter-django/pull/6187))
- Update ruff to 0.14.6 ([#6193](https://github.com/cookiecutter/cookiecutter-django/pull/6193))
## 2025.11.16
### Changed
- Add PostgreSQL 18 ([#6144](https://github.com/cookiecutter/cookiecutter-django/pull/6144))
### Updated
- Update ruff to 0.14.5 ([#6182](https://github.com/cookiecutter/cookiecutter-django/pull/6182))
## 2025.11.07
### Updated
- Auto-update pre-commit hooks ([#6165](https://github.com/cookiecutter/cookiecutter-django/pull/6165))
- Update ruff to 0.14.4 ([#6164](https://github.com/cookiecutter/cookiecutter-django/pull/6164))
- Update django-crispy-forms to 2.5 ([#6163](https://github.com/cookiecutter/cookiecutter-django/pull/6163))
## 2025.11.06
### Updated
- Update django-webpack-loader to 3.2.2 ([#6161](https://github.com/cookiecutter/cookiecutter-django/pull/6161))
- Update django to 5.2.8 ([#6160](https://github.com/cookiecutter/cookiecutter-django/pull/6160))
## 2025.11.03
### Updated
- Update drf-spectacular to 0.29.0 ([#6158](https://github.com/cookiecutter/cookiecutter-django/pull/6158))
## 2025.10.31
### Updated
- Update psycopg to 3.2.12 ([#6143](https://github.com/cookiecutter/cookiecutter-django/pull/6143))
- Update django-allauth to 65.13.0 ([#6157](https://github.com/cookiecutter/cookiecutter-django/pull/6157))
- Update ruff to 0.14.3 ([#6155](https://github.com/cookiecutter/cookiecutter-django/pull/6155))
- Update django-debug-toolbar to 6.1.0 ([#6154](https://github.com/cookiecutter/cookiecutter-django/pull/6154))
- Update sentry-sdk to 2.43.0 ([#6151](https://github.com/cookiecutter/cookiecutter-django/pull/6151))
- Update redis to 7.0.1 ([#6146](https://github.com/cookiecutter/cookiecutter-django/pull/6146))
- Bump traefik from 3.5.3 to 3.5.4 ([#6150](https://github.com/cookiecutter/cookiecutter-django/pull/6150))
- Bump nginx from 1.29.2 to 1.29.3 ([#6149](https://github.com/cookiecutter/cookiecutter-django/pull/6149))
- Bump node from 24.10 to 24.11 ([#6147](https://github.com/cookiecutter/cookiecutter-django/pull/6147))
## 2025.10.27
### Fixed
- keep_local_envs_in_vcs user preference ([#6132](https://github.com/cookiecutter/cookiecutter-django/pull/6132))
## 2025.10.24
### Updated
- Update django-upgrade pre-commit hook to 1.29.1 ([#6141](https://github.com/cookiecutter/cookiecutter-django/pull/6141))
## 2025.10.23
### Updated
- Update ruff to 0.14.2 ([#6140](https://github.com/cookiecutter/cookiecutter-django/pull/6140))
## 2025.10.22
### Updated
- Update djangorestframework-stubs to 3.16.5 ([#6137](https://github.com/cookiecutter/cookiecutter-django/pull/6137))
## 2025.10.21
### Updated
- Update sentry-sdk to 2.42.1 ([#6136](https://github.com/cookiecutter/cookiecutter-django/pull/6136))
- Update psycopg to 3.2.11 ([#6135](https://github.com/cookiecutter/cookiecutter-django/pull/6135))
## 2025.10.20
### Changed
- Update pre-commit GitLab image to python3.13-bookworm ([#6126](https://github.com/cookiecutter/cookiecutter-django/pull/6126))
### Documentation
- Fixed various broken URLs and typos in the documentation ([#6133](https://github.com/cookiecutter/cookiecutter-django/pull/6133))
### Updated
- Update uvicorn to 0.38.0 ([#6134](https://github.com/cookiecutter/cookiecutter-django/pull/6134))
## 2025.10.17
### Updated
- Update ruff to 0.14.1 ([#6128](https://github.com/cookiecutter/cookiecutter-django/pull/6128))
## 2025.10.16
### Updated
- Update django-allauth to 65.12.1 ([#6127](https://github.com/cookiecutter/cookiecutter-django/pull/6127))
- Update pillow to 12.0.0 ([#6122](https://github.com/cookiecutter/cookiecutter-django/pull/6122))
- Update sentry-sdk to 2.42.0 ([#6124](https://github.com/cookiecutter/cookiecutter-django/pull/6124))
- Update coverage to 7.11.0 ([#6123](https://github.com/cookiecutter/cookiecutter-django/pull/6123))
## 2025.10.15
### Updated
- Bump redis from 6 to 7.2 ([#6118](https://github.com/cookiecutter/cookiecutter-django/pull/6118))
## 2025.10.14
### Updated
- Update watchfiles to 1.1.1 ([#6120](https://github.com/cookiecutter/cookiecutter-django/pull/6120))
- Update hiredis to 3.3.0 ([#6119](https://github.com/cookiecutter/cookiecutter-django/pull/6119))
## 2025.10.13
### Changed
- Enable version updates for Docker Compose files ([#6116](https://github.com/cookiecutter/cookiecutter-django/pull/6116))
## 2025.10.10
### Updated
- Bump node from 24.9 to 24.10 ([#6107](https://github.com/cookiecutter/cookiecutter-django/pull/6107))
## 2025.10.09
### Updated
- Update sentry-sdk to 2.41.0 ([#6106](https://github.com/cookiecutter/cookiecutter-django/pull/6106))
## 2025.10.08
### Updated
- Update django-stubs to 5.2.7 ([#6104](https://github.com/cookiecutter/cookiecutter-django/pull/6104))
- Bump nginx from 1.29.1 to 1.29.2 ([#6103](https://github.com/cookiecutter/cookiecutter-django/pull/6103))
## 2025.10.07
### Updated
- Update ruff to 0.14.0 ([#6100](https://github.com/cookiecutter/cookiecutter-django/pull/6100))
## 2025.10.06
### Changed
- fix(project generation fails with docker --load flag) ([#6097](https://github.com/cookiecutter/cookiecutter-django/pull/6097))
### Updated
- Update sentry-sdk to 2.40.0 ([#6096](https://github.com/cookiecutter/cookiecutter-django/pull/6096))
- Update django-coverage-plugin to 3.2.0 ([#6095](https://github.com/cookiecutter/cookiecutter-django/pull/6095))
- Update django-stubs to 5.2.6 ([#6093](https://github.com/cookiecutter/cookiecutter-django/pull/6093))
- Update django-allauth to 65.12.0 ([#6092](https://github.com/cookiecutter/cookiecutter-django/pull/6092))
## 2025.10.02
### Updated
- Update ruff to 0.13.3 ([#6089](https://github.com/cookiecutter/cookiecutter-django/pull/6089))
## 2025.10.01
### Fixed
- Fix Docker error volume name is too short during project generation ([#6086](https://github.com/cookiecutter/cookiecutter-django/pull/6086))
### Updated
- Update django to 5.2.7 ([#6087](https://github.com/cookiecutter/cookiecutter-django/pull/6087))
## 2025.09.30
### Updated
- Bump node from 24.8 to 24.9 ([#6081](https://github.com/cookiecutter/cookiecutter-django/pull/6081))
- Bump traefik from 3.5.2 to 3.5.3 ([#6083](https://github.com/cookiecutter/cookiecutter-django/pull/6083))
- Update djangorestframework-stubs to 3.16.4 ([#6080](https://github.com/cookiecutter/cookiecutter-django/pull/6080))
## 2025.09.25
### Updated
- Update ruff to 0.13.2 ([#6078](https://github.com/cookiecutter/cookiecutter-django/pull/6078))
- Update sentry-sdk to 2.39.0 ([#6077](https://github.com/cookiecutter/cookiecutter-django/pull/6077))
## 2025.09.24
### Updated
- Bump amazon/aws-cli from 2.30.1 to 2.31.0 ([#6075](https://github.com/cookiecutter/cookiecutter-django/pull/6075))
## 2025.09.23
### Changed
- Added help command to sphinx Makefile ([#6024](https://github.com/cookiecutter/cookiecutter-django/pull/6024))
- Update RTD config to latest recommendation for uv ([#6072](https://github.com/cookiecutter/cookiecutter-django/pull/6072))
### Updated
- Update uvicorn to 0.37.0 ([#6073](https://github.com/cookiecutter/cookiecutter-django/pull/6073))
- Bump sass from 1.93.0 to 1.93.1 ([#6071](https://github.com/cookiecutter/cookiecutter-django/pull/6071))
## 2025.09.22
### Updated
- Update coverage to 7.10.7 ([#6070](https://github.com/cookiecutter/cookiecutter-django/pull/6070))
- Upgrade to Python 3.13 ([#6067](https://github.com/cookiecutter/cookiecutter-django/pull/6067))
## 2025.09.20
### Updated
- Update uvicorn-worker to 0.4.0 ([#6069](https://github.com/cookiecutter/cookiecutter-django/pull/6069))
- Update uvicorn to 0.36.0 ([#6068](https://github.com/cookiecutter/cookiecutter-django/pull/6068))
## 2025.09.19
### Updated
- Bump sass from 1.92.1 to 1.93.0 ([#6066](https://github.com/cookiecutter/cookiecutter-django/pull/6066))
- Update ruff to 0.13.1 ([#6065](https://github.com/cookiecutter/cookiecutter-django/pull/6065))
- Update mypy to 1.18.2 ([#6062](https://github.com/cookiecutter/cookiecutter-django/pull/6062))
## 2025.09.18
### Updated
- Update djangorestframework-stubs to 3.16.3 ([#6061](https://github.com/cookiecutter/cookiecutter-django/pull/6061))
- Update django-cors-headers to 4.9.0 ([#6060](https://github.com/cookiecutter/cookiecutter-django/pull/6060))
- Update whitenoise to 6.11.0 ([#6059](https://github.com/cookiecutter/cookiecutter-django/pull/6059))
## 2025.09.15
### Changed
- Upgrade to Django 5.2 ([#5962](https://github.com/cookiecutter/cookiecutter-django/pull/5962))
### Updated
- Update sentry-sdk to 2.38.0 ([#6057](https://github.com/cookiecutter/cookiecutter-django/pull/6057))
- Bump sass from 1.77.6 to 1.92.1 ([#6021](https://github.com/cookiecutter/cookiecutter-django/pull/6021))
- Bump amazon/aws-cli from 2.30.0 to 2.30.1 ([#6056](https://github.com/cookiecutter/cookiecutter-django/pull/6056))
## 2025.09.14
### Documentation
- Update documentation for deploying on PythonAnywhere with uv ([#6017](https://github.com/cookiecutter/cookiecutter-django/pull/6017))
### Updated
- Update django-stubs to 5.2.5 ([#6055](https://github.com/cookiecutter/cookiecutter-django/pull/6055))
## 2025.09.12
### Updated
- Bump amazon/aws-cli Docker image from 2.29.0 to 2.30.0 ([#6054](https://github.com/cookiecutter/cookiecutter-django/pull/6054))
## 2025.09.11
### Changed
- Enable collectfasta for Azure storage ([#6052](https://github.com/cookiecutter/cookiecutter-django/pull/6052))
### Updated
- Update ruff to 0.13.0 ([#6045](https://github.com/cookiecutter/cookiecutter-django/pull/6045))
- Bump ruff pre-commit hook from 0.12.12 to 0.13.0 ([#6046](https://github.com/cookiecutter/cookiecutter-django/pull/6046))
- Bump node from 24.7 to 24.8 ([#6047](https://github.com/cookiecutter/cookiecutter-django/pull/6047))
## 2025.09.10
### Updated
- Bump traefik from 3.5.1 to 3.5.2 ([#6041](https://github.com/cookiecutter/cookiecutter-django/pull/6041))
## 2025.09.09
### Updated
- Bump nginx from 1.17.8 to 1.29.1 ([#6036](https://github.com/cookiecutter/cookiecutter-django/pull/6036))
- Bump amazon/aws-cli image from 2.28.0 to 2.29.0 ([#6031](https://github.com/cookiecutter/cookiecutter-django/pull/6031))
- Update django-allauth to 65.11.2 ([#6030](https://github.com/cookiecutter/cookiecutter-django/pull/6030))
- Update sentry-sdk to 2.37.1 ([#6027](https://github.com/cookiecutter/cookiecutter-django/pull/6027))
- Update whitenoise to 6.10.0 ([#6026](https://github.com/cookiecutter/cookiecutter-django/pull/6026))
- Update django-upgrade pre-commit hook ([#6025](https://github.com/cookiecutter/cookiecutter-django/pull/6025))
## 2025.09.08
### Fixed
- Use `--locked` instead of `--frozen` when running `uv sync` ([#6018](https://github.com/cookiecutter/cookiecutter-django/pull/6018))
- Remove mentions of `pip` and `virtualenv` in the `install_python_dependencies.sh` utility script ([#6019](https://github.com/cookiecutter/cookiecutter-django/pull/6019))
### Updated
- Update psycopg to 3.2.10 ([#6023](https://github.com/cookiecutter/cookiecutter-django/pull/6023))
- Update django-cors-headers to 4.8.0 ([#6022](https://github.com/cookiecutter/cookiecutter-django/pull/6022))
## 2025.09.06
### Changed
- Migrate to `uv` as package manager for the generated project ([#5434](https://github.com/cookiecutter/cookiecutter-django/pull/5434))
## 2025.09.05
### Updated
- Update sentry-sdk to 2.37.0 ([#6015](https://github.com/cookiecutter/cookiecutter-django/pull/6015))
- Upgrade actions/setup-python to v6 in template ([#6012](https://github.com/cookiecutter/cookiecutter-django/pull/6012))
- Update django to 5.1.12 ([#6009](https://github.com/cookiecutter/cookiecutter-django/pull/6009))
- Update ruff to 0.12.12 ([#6013](https://github.com/cookiecutter/cookiecutter-django/pull/6013))
- Update pytest to 8.4.2 ([#6011](https://github.com/cookiecutter/cookiecutter-django/pull/6011))
## 2025.09.04
### Updated
- Update django-anymail to 13.1 ([#6007](https://github.com/cookiecutter/cookiecutter-django/pull/6007))
- Update sentry-sdk to 2.36.0 ([#6006](https://github.com/cookiecutter/cookiecutter-django/pull/6006))
## 2025.09.03
### Documentation
- Update PythonAnywhere deployment page ([#6003](https://github.com/cookiecutter/cookiecutter-django/pull/6003))
### Updated
- Bump traefik from 3.5.0 to 3.5.1 ([#6004](https://github.com/cookiecutter/cookiecutter-django/pull/6004))
## 2025.09.02
### Updated
- Update sentry-sdk to 2.35.2 ([#6002](https://github.com/cookiecutter/cookiecutter-django/pull/6002))
## 2025.08.31
### Updated
- Update coverage to 7.10.6 ([#5999](https://github.com/cookiecutter/cookiecutter-django/pull/5999))
## 2025.08.29
### Updated
- Bump node from 24.6-bookworm-slim to 24.7-bookworm-slim in /{{cookiecutter.project_slug}}/compose/local/node ([#5997](https://github.com/cookiecutter/cookiecutter-django/pull/5997))
- Update ruff to 0.12.11 ([#5998](https://github.com/cookiecutter/cookiecutter-django/pull/5998))
## 2025.08.28
### Updated
- Update django-allauth to 65.11.1 ([#5992](https://github.com/cookiecutter/cookiecutter-django/pull/5992))
- Auto-update pre-commit hooks ([#5993](https://github.com/cookiecutter/cookiecutter-django/pull/5993))
## 2025.08.27
### Updated
- Update django-upgrade pre-commit hook ([#5991](https://github.com/cookiecutter/cookiecutter-django/pull/5991))
## 2025.08.26
### Updated
- Update sentry-sdk to 2.35.1 ([#5988](https://github.com/cookiecutter/cookiecutter-django/pull/5988))
- Update sphinx-autobuild to 2025.8.25 ([#5989](https://github.com/cookiecutter/cookiecutter-django/pull/5989))
## 2025.08.25
### Updated
- Update collectfasta to 3.3.1 ([#5987](https://github.com/cookiecutter/cookiecutter-django/pull/5987))
- Update coverage to 7.10.5 ([#5986](https://github.com/cookiecutter/cookiecutter-django/pull/5986))
- Update pytest-sugar to 1.1.1 ([#5984](https://github.com/cookiecutter/cookiecutter-django/pull/5984))
## 2025.08.21
### Updated
- Update ruff to 0.12.10 ([#5983](https://github.com/cookiecutter/cookiecutter-django/pull/5983))
## 2025.08.18
### Updated
- Bump node from 24.5 to 24.6 ([#5981](https://github.com/cookiecutter/cookiecutter-django/pull/5981))
- Update coverage to 7.10.4 ([#5980](https://github.com/cookiecutter/cookiecutter-django/pull/5980))
- Update pytest-sugar to 1.1.0 ([#5979](https://github.com/cookiecutter/cookiecutter-django/pull/5979))
## 2025.08.15
### Updated
- Update django-allauth to 65.11.0 ([#5977](https://github.com/cookiecutter/cookiecutter-django/pull/5977))
- Update sentry-sdk to 2.35.0 ([#5976](https://github.com/cookiecutter/cookiecutter-django/pull/5976))
## 2025.08.14
### Updated
- Update ruff to 0.12.9 ([#5975](https://github.com/cookiecutter/cookiecutter-django/pull/5975))
## 2025.08.13
### Fixed
- Fix imagemin corruption with Gulp ([#5974](https://github.com/cookiecutter/cookiecutter-django/pull/5974))
## 2025.08.12
### Updated
- Update coverage to 7.10.3 ([#5972](https://github.com/cookiecutter/cookiecutter-django/pull/5972))
## 2025.08.10
### Updated
- Update pre-commit to 4.3.0 ([#5971](https://github.com/cookiecutter/cookiecutter-django/pull/5971))
- Auto-update pre-commit hooks ([#5970](https://github.com/cookiecutter/cookiecutter-django/pull/5970))
## 2025.08.08
### Changed
- Remove `project.css` when a bundler is used ([#5874](https://github.com/cookiecutter/cookiecutter-django/pull/5874))
### Updated
- Update redis to 6.4.0 ([#5968](https://github.com/cookiecutter/cookiecutter-django/pull/5968))
- Update ruff to 0.12.8 ([#5969](https://github.com/cookiecutter/cookiecutter-django/pull/5969))
## 2025.08.07
### Updated
- Update djangorestframework to 3.16.1 ([#5966](https://github.com/cookiecutter/cookiecutter-django/pull/5966))
## 2025.08.06
### Updated
- Update coverage to 7.10.2 ([#5964](https://github.com/cookiecutter/cookiecutter-django/pull/5964))
- Update redis to 6.3.0 ([#5963](https://github.com/cookiecutter/cookiecutter-django/pull/5963))
## 2025.08.05
### Changed
- Rename `master` branch to `main` ([#5961](https://github.com/cookiecutter/cookiecutter-django/pull/5961))
### Updated
- Bump node from 22.14 to 24.5 in local Docker image ([#5960](https://github.com/cookiecutter/cookiecutter-django/pull/5960))
## 2025.08.01
### Updated
- Update django-debug-toolbar to 6.0.0 ([#5945](https://github.com/cookiecutter/cookiecutter-django/pull/5945))
- Bump amazon/aws-cli from 2.27.12 to 2.28.0 ([#5957](https://github.com/cookiecutter/cookiecutter-django/pull/5957))
- Update mypy to 1.17.1 ([#5956](https://github.com/cookiecutter/cookiecutter-django/pull/5956))
## 2025.07.30
### Changed
- docs: remove `$` from shell command examples for easier copy-pasting ([#5948](https://github.com/cookiecutter/cookiecutter-django/pull/5948))
### Updated
- Update sentry-sdk to 2.34.1 ([#5955](https://github.com/cookiecutter/cookiecutter-django/pull/5955))
- Update ruff to 0.12.7 ([#5952](https://github.com/cookiecutter/cookiecutter-django/pull/5952))
## 2025.07.27
### Updated
- Update coverage to 7.10.1 ([#5947](https://github.com/cookiecutter/cookiecutter-django/pull/5947))
## 2025.07.25
### Updated
- Update django-anymail to 13.0.1 ([#5946](https://github.com/cookiecutter/cookiecutter-django/pull/5946))
## 2025.07.24
### Updated
- Update coverage to 7.10.0 ([#5944](https://github.com/cookiecutter/cookiecutter-django/pull/5944))
- Update ruff to 0.12.5 ([#5943](https://github.com/cookiecutter/cookiecutter-django/pull/5943))
- Bump traefik from 3.4.4 to 3.5.0 ([#5942](https://github.com/cookiecutter/cookiecutter-django/pull/5942))
## 2025.07.22
### Updated
- Update sentry-sdk to 2.33.2 ([#5941](https://github.com/cookiecutter/cookiecutter-django/pull/5941))
## 2025.07.21
### Updated
- Update sentry-sdk to 2.33.1 ([#5940](https://github.com/cookiecutter/cookiecutter-django/pull/5940))
## 2025.07.18
### Updated
- Update mypy to 1.17.0 ([#5937](https://github.com/cookiecutter/cookiecutter-django/pull/5937))
- Update django-stubs to 5.2.2 ([#5936](https://github.com/cookiecutter/cookiecutter-django/pull/5936))
## 2025.07.17
### Updated
- Update ruff to 0.12.4 ([#5935](https://github.com/cookiecutter/cookiecutter-django/pull/5935))
## 2025.07.16
### Updated
- Update sentry-sdk to 2.33.0 ([#5933](https://github.com/cookiecutter/cookiecutter-django/pull/5933))
## 2025.07.15
### Updated
- Update mypy to 1.16.1 ([#5901](https://github.com/cookiecutter/cookiecutter-django/pull/5901))
- Bump traefik from 3.4.3 to 3.4.4 ([#5930](https://github.com/cookiecutter/cookiecutter-django/pull/5930))
## 2025.07.14
### Changed
- Fix howto docker command ([#5929](https://github.com/cookiecutter/cookiecutter-django/pull/5929))
## 2025.07.11
### Updated
- Update ruff to 0.12.3 ([#5928](https://github.com/cookiecutter/cookiecutter-django/pull/5928))
- Update django-allauth to 65.10.0 ([#5927](https://github.com/cookiecutter/cookiecutter-django/pull/5927))
## 2025.07.05
### Updated
- Update coverage to 7.9.2 ([#5925](https://github.com/cookiecutter/cookiecutter-django/pull/5925))
## 2025.07.04
### Updated
- Update ruff to 0.12.2 ([#5923](https://github.com/cookiecutter/cookiecutter-django/pull/5923))
## 2025.07.02
### Updated
- Update pillow to 11.3.0 ([#5921](https://github.com/cookiecutter/cookiecutter-django/pull/5921))
## 2025.06.30
### Updated
- Bump traefik from 3.4.1 to 3.4.3 ([#5917](https://github.com/cookiecutter/cookiecutter-django/pull/5917))
- Update uvicorn to 0.35.0 ([#5919](https://github.com/cookiecutter/cookiecutter-django/pull/5919))
- Update sentry-sdk to 2.32.0 ([#5918](https://github.com/cookiecutter/cookiecutter-django/pull/5918))
## 2025.06.26
### Updated
- Update ruff to 0.12.1 ([#5916](https://github.com/cookiecutter/cookiecutter-django/pull/5916))
## 2025.06.24
### Updated
- Update sentry-sdk to 2.31.0 ([#5912](https://github.com/cookiecutter/cookiecutter-django/pull/5912))
## 2025.06.19
### Updated
- Update pytest to 8.4.1 ([#5907](https://github.com/cookiecutter/cookiecutter-django/pull/5907))
## 2025.06.18
### Updated
- Update ruff to 0.12.0 ([#5904](https://github.com/cookiecutter/cookiecutter-django/pull/5904))
- Update django-stubs to 5.2.1 ([#5905](https://github.com/cookiecutter/cookiecutter-django/pull/5905))
- Update django-redis to 6.0.0 ([#5903](https://github.com/cookiecutter/cookiecutter-django/pull/5903))
- Update django-webpack-loader to 3.2.1 ([#5902](https://github.com/cookiecutter/cookiecutter-django/pull/5902))
## 2025.06.17
### Updated
- Update django-coverage-plugin to 3.1.1 ([#5900](https://github.com/cookiecutter/cookiecutter-django/pull/5900))
- Update watchfiles to 1.1.0 ([#5899](https://github.com/cookiecutter/cookiecutter-django/pull/5899))
## 2025.06.15
### Updated
- Update coverage to 7.9.1 ([#5898](https://github.com/cookiecutter/cookiecutter-django/pull/5898))
## 2025.06.13
### Updated
- Update coverage to 7.9.0 ([#5897](https://github.com/cookiecutter/cookiecutter-django/pull/5897))
- Update sentry-sdk to 2.30.0 ([#5896](https://github.com/cookiecutter/cookiecutter-django/pull/5896))
## 2025.06.11
### Updated
- Update collectfasta to 3.3.0 ([#5892](https://github.com/cookiecutter/cookiecutter-django/pull/5892))
## 2025.06.10
### Updated
- Update django to 5.1.11 ([#5891](https://github.com/cookiecutter/cookiecutter-django/pull/5891))
- Update crispy-bootstrap5 to 2025.6 ([#5888](https://github.com/cookiecutter/cookiecutter-django/pull/5888))
## 2025.06.06
### Updated
- Update ruff to 0.11.13 ([#5887](https://github.com/cookiecutter/cookiecutter-django/pull/5887))
## 2025.06.05
### Updated
- Bump python from 3.12.10 to 3.12.11 in docs Docker ([#5883](https://github.com/cookiecutter/cookiecutter-django/pull/5883))
- Bump python from 3.12.10 to 3.12.11 in production Docker ([#5884](https://github.com/cookiecutter/cookiecutter-django/pull/5884))
- Bump python from 3.12.10 3.12.11 in local Docker ([#5885](https://github.com/cookiecutter/cookiecutter-django/pull/5885))
- Update django to 5.1.10 ([#5882](https://github.com/cookiecutter/cookiecutter-django/pull/5882))
## 2025.06.04
### Updated
- Update argon2-cffi to 25.1.0 ([#5880](https://github.com/cookiecutter/cookiecutter-django/pull/5880))
- Update pytest to 8.4.0 ([#5881](https://github.com/cookiecutter/cookiecutter-django/pull/5881))
## 2025.06.02
### Updated
- Update django-allauth to 65.9.0 ([#5879](https://github.com/cookiecutter/cookiecutter-django/pull/5879))
- Update uvicorn to 0.34.3 ([#5878](https://github.com/cookiecutter/cookiecutter-django/pull/5878))
- Update celery to 5.5.3 ([#5877](https://github.com/cookiecutter/cookiecutter-django/pull/5877))
- Update ruff to 0.11.12 ([#5872](https://github.com/cookiecutter/cookiecutter-django/pull/5872))
## 2025.05.28
### Updated
- Update redis to 6.2.0 ([#5871](https://github.com/cookiecutter/cookiecutter-django/pull/5871))
- Bump traefik from 3.4.0 to 3.4.1 ([#5870](https://github.com/cookiecutter/cookiecutter-django/pull/5870))
## 2025.05.27
### Updated
- Update coverage to 7.8.2 ([#5868](https://github.com/cookiecutter/cookiecutter-django/pull/5868))
- Update hiredis to 3.2.1 ([#5867](https://github.com/cookiecutter/cookiecutter-django/pull/5867))
## 2025.05.24
### Updated
- Auto-update pre-commit hooks ([#5866](https://github.com/cookiecutter/cookiecutter-django/pull/5866))
## 2025.05.23
### Updated
- Update hiredis to 3.2.0 ([#5864](https://github.com/cookiecutter/cookiecutter-django/pull/5864))
- Update ruff to 0.11.11 ([#5865](https://github.com/cookiecutter/cookiecutter-django/pull/5865))
## 2025.05.22
### Changed
- Remove pin for fido2 library ([#5861](https://github.com/cookiecutter/cookiecutter-django/pull/5861))
### Updated
- Update coverage to 7.8.1 ([#5860](https://github.com/cookiecutter/cookiecutter-django/pull/5860))
- Update django-allauth to 65.8.1 ([#5859](https://github.com/cookiecutter/cookiecutter-django/pull/5859))
## 2025.05.21
### Updated
- Auto-update pre-commit hooks ([#5858](https://github.com/cookiecutter/cookiecutter-django/pull/5858))
## 2025.05.20
### Fixed
- Pin fido2<2 ([#5854](https://github.com/cookiecutter/cookiecutter-django/pull/5854))
### Updated
- Update sentry-sdk to 2.29.1 ([#5853](https://github.com/cookiecutter/cookiecutter-django/pull/5853))
- Update django-webpack-loader to 3.2.0 ([#5852](https://github.com/cookiecutter/cookiecutter-django/pull/5852))
## 2025.05.16
### Updated
- Update django-celery-beat to 2.8.1 ([#5841](https://github.com/cookiecutter/cookiecutter-django/pull/5841))
- Update ruff to 0.11.10 ([#5847](https://github.com/cookiecutter/cookiecutter-django/pull/5847))
## 2025.05.14
### Updated
- Auto-update pre-commit hooks ([#5846](https://github.com/cookiecutter/cookiecutter-django/pull/5846))
## 2025.05.13
### Changed
- Remove redundant `use_celery` condition in local compose file ([#5845](https://github.com/cookiecutter/cookiecutter-django/pull/5845))
### Updated
- Update psycopg to 3.2.9 ([#5844](https://github.com/cookiecutter/cookiecutter-django/pull/5844))
- Update redis to 6.1.0 ([#5842](https://github.com/cookiecutter/cookiecutter-django/pull/5842))
## 2025.05.12
### Changed
- Remove extra spaces in Dockerfile `COPY` instruction paths ([#5822](https://github.com/cookiecutter/cookiecutter-django/pull/5822))
- Add support for PostgreSQL 17 ([#5805](https://github.com/cookiecutter/cookiecutter-django/pull/5805))
### Fixed
- Fix media folder permissions prod dockerfile ([#5831](https://github.com/cookiecutter/cookiecutter-django/pull/5831))
### Updated
- Update sentry-sdk to 2.28.0 ([#5839](https://github.com/cookiecutter/cookiecutter-django/pull/5839))
- Update djangorestframework-stubs to 3.16.0 ([#5806](https://github.com/cookiecutter/cookiecutter-django/pull/5806))
- Bump traefik from 3.3.5 to 3.4.0 ([#5824](https://github.com/cookiecutter/cookiecutter-django/pull/5824))
- Bump python from 3.12.9 to 3.12.10 in production Dockerfile ([#5774](https://github.com/cookiecutter/cookiecutter-django/pull/5774))
- Bump python from 3.12.9 to 3.12.10 in docs Dockerfile ([#5773](https://github.com/cookiecutter/cookiecutter-django/pull/5773))
- Bump python from 3.12.9 to 3.12.10 local Dockerfile ([#5772](https://github.com/cookiecutter/cookiecutter-django/pull/5772))
- Update redis to 6.0.0 ([#5814](https://github.com/cookiecutter/cookiecutter-django/pull/5814))
- Update psycopg to 3.2.8 ([#5836](https://github.com/cookiecutter/cookiecutter-django/pull/5836))
- Update django-stubs to 5.2.0 ([#5804](https://github.com/cookiecutter/cookiecutter-django/pull/5804))
- Bump amazon/aws-cli from 2.25.0 to 2.27.12 ([#5838](https://github.com/cookiecutter/cookiecutter-django/pull/5838))
- Update ruff to 0.11.9 ([#5834](https://github.com/cookiecutter/cookiecutter-django/pull/5834))
- Update hiredis to 3.1.1 ([#5833](https://github.com/cookiecutter/cookiecutter-django/pull/5833))
## 2025.05.09
### Updated
- Update django-debug-toolbar to 5.2.0 ([#5816](https://github.com/cookiecutter/cookiecutter-django/pull/5816))
- Update django-allauth to 65.8.0 ([#5830](https://github.com/cookiecutter/cookiecutter-django/pull/5830))
- Update django to 5.1.9 ([#5828](https://github.com/cookiecutter/cookiecutter-django/pull/5828))
## 2025.05.02
### Updated
- Update ruff to 0.11.8 ([#5819](https://github.com/cookiecutter/cookiecutter-django/pull/5819))
## 2025.04.30
### Updated
- Update celery to 5.5.2 ([#5803](https://github.com/cookiecutter/cookiecutter-django/pull/5803))
- Update ruff to 0.11.7 ([#5815](https://github.com/cookiecutter/cookiecutter-django/pull/5815))
- Update sentry-sdk to 2.27.0 ([#5799](https://github.com/cookiecutter/cookiecutter-django/pull/5799))
- Update uvicorn to 0.34.2 ([#5791](https://github.com/cookiecutter/cookiecutter-django/pull/5791))
- Update django-crispy-forms to 2.4 ([#5780](https://github.com/cookiecutter/cookiecutter-django/pull/5780))
- Update pillow to 11.2.1 ([#5779](https://github.com/cookiecutter/cookiecutter-django/pull/5779))
- Update django-extensions to 4.1 ([#5776](https://github.com/cookiecutter/cookiecutter-django/pull/5776))
- Update watchfiles to 1.0.5 ([#5771](https://github.com/cookiecutter/cookiecutter-django/pull/5771))
- Update ruff to 0.11.6 ([#5789](https://github.com/cookiecutter/cookiecutter-django/pull/5789))
- Update psycopg to 3.2.7 ([#5811](https://github.com/cookiecutter/cookiecutter-django/pull/5811))
- Update redis to 5.3.0 ([#5813](https://github.com/cookiecutter/cookiecutter-django/pull/5813))
## 2025.04.08
### Updated
- Update django-extensions to 4.0 ([#5770](https://github.com/cookiecutter/cookiecutter-django/pull/5770))
## 2025.04.05
### Changed
- Add Docker build caching on GitHub Actions ([#5700](https://github.com/cookiecutter/cookiecutter-django/pull/5700))
- Pin Pillow and Sphinx to non yanked release ([#5765](https://github.com/cookiecutter/cookiecutter-django/pull/5765))
### Updated
- Update ruff to 0.11.4 ([#5767](https://github.com/cookiecutter/cookiecutter-django/pull/5767))
## 2025.04.03
### Updated
- Update django-anymail to 13.0 ([#5763](https://github.com/cookiecutter/cookiecutter-django/pull/5763))
- Update pytest-django to 4.11.1 ([#5762](https://github.com/cookiecutter/cookiecutter-django/pull/5762))
- Update ruff to 0.11.3 ([#5761](https://github.com/cookiecutter/cookiecutter-django/pull/5761))
- Update django-allauth to 65.7.0 ([#5760](https://github.com/cookiecutter/cookiecutter-django/pull/5760))
## 2025.04.02
### Fixed
- Fix line endings for dotenv merge script on Windows ([#5754](https://github.com/cookiecutter/cookiecutter-django/pull/5754))
### Updated
- Update crispy-bootstrap5 to 2025.4 ([#5756](https://github.com/cookiecutter/cookiecutter-django/pull/5756))
- Update Django from 5.0 to 5.1 ([#5740](https://github.com/cookiecutter/cookiecutter-django/pull/5740))
- Update sentry-sdk to 2.25.1 ([#5757](https://github.com/cookiecutter/cookiecutter-django/pull/5757))
- Update django-storages to 1.14.6 ([#5753](https://github.com/cookiecutter/cookiecutter-django/pull/5753))
- Update pytest-django to 4.11.0 ([#5752](https://github.com/cookiecutter/cookiecutter-django/pull/5752))
## 2025.04.01
### Updated
- Update pillow to 11.2.0 ([#5751](https://github.com/cookiecutter/cookiecutter-django/pull/5751))
- Bump traefik from 3.3.4 to 3.3.5 ([#5750](https://github.com/cookiecutter/cookiecutter-django/pull/5750))
- Update celery to 5.5.0 ([#5748](https://github.com/cookiecutter/cookiecutter-django/pull/5748))
## 2025.03.31
### Updated
- Update django-allauth to 65.6.0 ([#5741](https://github.com/cookiecutter/cookiecutter-django/pull/5741))
- Update sentry-sdk to 2.25.0 ([#5747](https://github.com/cookiecutter/cookiecutter-django/pull/5747))
- Update coverage to 7.8.0 ([#5745](https://github.com/cookiecutter/cookiecutter-django/pull/5745))
## 2025.03.28
### Updated
- Update djangorestframework to 3.16.0 ([#5743](https://github.com/cookiecutter/cookiecutter-django/pull/5743))
- Update django-upgrade pre-commit hook to v1.24.0 ([#5742](https://github.com/cookiecutter/cookiecutter-django/pull/5742))
## 2025.03.24
### Updated
- Update django-allauth to 65.5.0 ([#5723](https://github.com/cookiecutter/cookiecutter-django/pull/5723))
- Update sentry-sdk to 2.24.1 ([#5739](https://github.com/cookiecutter/cookiecutter-django/pull/5739))
## 2025.03.22
### Updated
- Update coverage to 7.7.1 ([#5736](https://github.com/cookiecutter/cookiecutter-django/pull/5736))
## 2025.03.21
### Updated
- Update sentry-sdk to 2.24.0 ([#5734](https://github.com/cookiecutter/cookiecutter-django/pull/5734))
- Update django-debug-toolbar to 5.1.0 ([#5732](https://github.com/cookiecutter/cookiecutter-django/pull/5732))
- Update ruff to 0.11.2 ([#5735](https://github.com/cookiecutter/cookiecutter-django/pull/5735))
- Bump amazon/aws-cli from 2.24.0 to 2.25.0 ([#5733](https://github.com/cookiecutter/cookiecutter-django/pull/5733))
- Auto-update pre-commit hooks ([#5657](https://github.com/cookiecutter/cookiecutter-django/pull/5657))
## 2025.03.19
### Updated
- Update pre-commit to 4.2.0 ([#5730](https://github.com/cookiecutter/cookiecutter-django/pull/5730))
## 2025.03.17
### Updated
- Update sentry-sdk to 2.23.1 ([#5727](https://github.com/cookiecutter/cookiecutter-django/pull/5727))
- Update coverage to 7.7.0 ([#5725](https://github.com/cookiecutter/cookiecutter-django/pull/5725))
## 2025.03.15
### Updated
- Update psycopg to 3.2.6 ([#5721](https://github.com/cookiecutter/cookiecutter-django/pull/5721))
- Update ruff to 0.11.0 ([#5724](https://github.com/cookiecutter/cookiecutter-django/pull/5724))
## 2025.03.08
### Updated
- Update ruff to 0.9.10 ([#5720](https://github.com/cookiecutter/cookiecutter-django/pull/5720))
## 2025.03.06
### Updated
- Update django to 5.0.13 ([#5719](https://github.com/cookiecutter/cookiecutter-django/pull/5719))
## 2025.03.04
### Changed
- Add groups for dependabot updates ([#5709](https://github.com/cookiecutter/cookiecutter-django/pull/5709))
### Updated
- Update sphinx to 8.3.0 ([#5714](https://github.com/cookiecutter/cookiecutter-django/pull/5714))
- Update pytest to 8.3.5 ([#5713](https://github.com/cookiecutter/cookiecutter-django/pull/5713))
## 2025.03.01
### Updated
- Update ruff to 0.9.9 ([#5711](https://github.com/cookiecutter/cookiecutter-django/pull/5711))
## 2025.02.28
### Updated
- Update ruff to 0.9.8 ([#5708](https://github.com/cookiecutter/cookiecutter-django/pull/5708))
- Bump babel-loader from 9.2.1 to 10.0.0 ([#5710](https://github.com/cookiecutter/cookiecutter-django/pull/5710))
## 2025.02.26
### Updated
- Bump traefik from 3.3.3 to 3.3.4 ([#5705](https://github.com/cookiecutter/cookiecutter-django/pull/5705))
## 2025.02.25
### Documentation
- Fix links to FAQ about `contrib.sites` directory ([#5704](https://github.com/cookiecutter/cookiecutter-django/pull/5704))
## 2025.02.23
### Changed
- Group dependabot docker directories ([#5698](https://github.com/cookiecutter/cookiecutter-django/pull/5698))
### Updated
- Update sphinx to 8.2.1 ([#5696](https://github.com/cookiecutter/cookiecutter-django/pull/5696))
- Update psycopg to 3.2.5 ([#5697](https://github.com/cookiecutter/cookiecutter-django/pull/5697))
## 2025.02.21
### Updated
- Update djangorestframework-stubs to 3.15.3 ([#5695](https://github.com/cookiecutter/cookiecutter-django/pull/5695))
- Update sphinx to 8.2.0 ([#5693](https://github.com/cookiecutter/cookiecutter-django/pull/5693))
- Update ruff to 0.9.7 ([#5694](https://github.com/cookiecutter/cookiecutter-django/pull/5694))
## 2025.02.17
### Updated
- Update sentry-sdk to 2.22.0 ([#5692](https://github.com/cookiecutter/cookiecutter-django/pull/5692))
- Update django-storages to 1.14.5 ([#5690](https://github.com/cookiecutter/cookiecutter-django/pull/5690))
## 2025.02.14
### Updated
- Bump node from 22.13 to 22.14 ([#5688](https://github.com/cookiecutter/cookiecutter-django/pull/5688))
## 2025.02.13
### Updated
- Update sentry-sdk to 2.21.0 ([#5687](https://github.com/cookiecutter/cookiecutter-django/pull/5687))
## 2025.02.11
### Updated
- Update coverage to 7.6.12 ([#5686](https://github.com/cookiecutter/cookiecutter-django/pull/5686))
## 2025.02.10
### Updated
- Update pytest-django to 4.10.0 ([#5684](https://github.com/cookiecutter/cookiecutter-django/pull/5684))
- Update ruff to 0.9.6 ([#5683](https://github.com/cookiecutter/cookiecutter-django/pull/5683))
- Bump amazon/aws-cli from 2.23.0 to 2.24.0 ([#5682](https://github.com/cookiecutter/cookiecutter-django/pull/5682))
## 2025.02.08
### Updated
- Update coverage to 7.6.11 ([#5681](https://github.com/cookiecutter/cookiecutter-django/pull/5681))
## 2025.02.07
### Updated
- Update mypy to 1.15.0 ([#5664](https://github.com/cookiecutter/cookiecutter-django/pull/5664))
- Update django-stubs to 5.1.3 ([#5680](https://github.com/cookiecutter/cookiecutter-django/pull/5680))
- Bump python from 3.12.8 to 3.12.9 in local Docker image ([#5678](https://github.com/cookiecutter/cookiecutter-django/pull/5678))
- Bump python from 3.12.8 to 3.12.9 in production Docker image ([#5677](https://github.com/cookiecutter/cookiecutter-django/pull/5677))
- Bump python from 3.12.8 to 3.12.9 in docs Docker image ([#5676](https://github.com/cookiecutter/cookiecutter-django/pull/5676))
- Update django-allauth to 65.4.1 ([#5679](https://github.com/cookiecutter/cookiecutter-django/pull/5679))
- Update django-cors-headers to 4.7.0 ([#5675](https://github.com/cookiecutter/cookiecutter-django/pull/5675))
- Update whitenoise to 6.9.0 ([#5674](https://github.com/cookiecutter/cookiecutter-django/pull/5674))
## 2025.02.06
### Fixed
- Bump node version in production Dockerfile from 20 to 22.13 ([#5672](https://github.com/cookiecutter/cookiecutter-django/pull/5672))
### Updated
- Update ruff to 0.9.5 ([#5673](https://github.com/cookiecutter/cookiecutter-django/pull/5673))
## 2025.02.05
### Changed
- Add missing trailing slash in test `MEDIA_URL` ([#5666](https://github.com/cookiecutter/cookiecutter-django/pull/5666))
### Updated
- Update django to 5.0.12 ([#5667](https://github.com/cookiecutter/cookiecutter-django/pull/5667))
## 2025.02.03
### Updated
- Bump traefik from 3.3.2 to 3.3.3 ([#5660](https://github.com/cookiecutter/cookiecutter-django/pull/5660))
- Update factory-boy to 3.3.2 ([#5661](https://github.com/cookiecutter/cookiecutter-django/pull/5661))
## 2025.01.30
### Updated
- Update ruff to 0.9.4 ([#5659](https://github.com/cookiecutter/cookiecutter-django/pull/5659))
## 2025.01.26
### Changed
- Migrate generated project from `runtime.txt` to `.python-version` ([#5652](https://github.com/cookiecutter/cookiecutter-django/pull/5652))
### Documentation
- Update Heroku deployment guide ([#5656](https://github.com/cookiecutter/cookiecutter-django/pull/5656))
## 2025.01.24
### Updated
- Update ruff to 0.9.3 ([#5654](https://github.com/cookiecutter/cookiecutter-django/pull/5654))
## 2025.01.21
### Changed
- Update linter error code from TCH to TC ([#5651](https://github.com/cookiecutter/cookiecutter-django/pull/5651))
### Updated
- Update pre-commit to 4.1.0 ([#5650](https://github.com/cookiecutter/cookiecutter-django/pull/5650))
## 2025.01.20
### Changed
- Group all API tests under a `tests.api` namespace ([#5615](https://github.com/cookiecutter/cookiecutter-django/pull/5615))
- Migrate post-generation hook to pathlib ([#5648](https://github.com/cookiecutter/cookiecutter-django/pull/5648))
## 2025.01.16
### Updated
- Update ruff to 0.9.2 ([#5646](https://github.com/cookiecutter/cookiecutter-django/pull/5646))
- Bump amazon/aws-cli from 2.22.1 to 2.23.0 ([#5645](https://github.com/cookiecutter/cookiecutter-django/pull/5645))
## 2025.01.15
### Fixed
- Fix setting for to `CELERY_WORKER_HIJACK_ROOT_LOGGER` ([#5643](https://github.com/cookiecutter/cookiecutter-django/pull/5643))
### Updated
- Update psycopg to 3.2.4 ([#5644](https://github.com/cookiecutter/cookiecutter-django/pull/5644))
- Update django-stubs to 5.1.2 ([#5639](https://github.com/cookiecutter/cookiecutter-django/pull/5639))
- Bump traefik from 3.3.1 to 3.3.2 ([#5642](https://github.com/cookiecutter/cookiecutter-django/pull/5642))
## 2025.01.14
### Updated
- Update django to 5.0.11 ([#5640](https://github.com/cookiecutter/cookiecutter-django/pull/5640))
- Update sentry-sdk to 2.20.0 ([#5638](https://github.com/cookiecutter/cookiecutter-django/pull/5638))
- Update django-debug-toolbar to 5.0.1 ([#5636](https://github.com/cookiecutter/cookiecutter-django/pull/5636))
## 2025.01.13
### Updated
- Update django-environ to 0.12.0 ([#5635](https://github.com/cookiecutter/cookiecutter-django/pull/5635))
- Bump traefik from 3.3.0 to 3.3.1 ([#5634](https://github.com/cookiecutter/cookiecutter-django/pull/5634))
## 2025.01.11
### Updated
- Update ruff to 0.9.1 ([#5633](https://github.com/cookiecutter/cookiecutter-django/pull/5633))
## 2025.01.10
### Updated
- Update watchfiles to 1.0.4 ([#5631](https://github.com/cookiecutter/cookiecutter-django/pull/5631))
## 2025.01.09
### Changed
- Drop support for Python 2 in template generation hooks ([#5614](https://github.com/cookiecutter/cookiecutter-django/pull/5614))
### Updated
- Bump node from 22.12 to 22.13 ([#5627](https://github.com/cookiecutter/cookiecutter-django/pull/5627))
## 2025.01.07
### Fixed
- Set `minimum_pre_commit_version` in pre-commit config ([#5626](https://github.com/cookiecutter/cookiecutter-django/pull/5626))
### Updated
- Bump traefik from 3.2.3 to 3.3.0 ([#5625](https://github.com/cookiecutter/cookiecutter-django/pull/5625))
## 2025.01.06
### Changed
- Add justfile for use with docker ([#5621](https://github.com/cookiecutter/cookiecutter-django/pull/5621))
## 2025.01.04
### Updated
- Update ruff to 0.8.6 ([#5622](https://github.com/cookiecutter/cookiecutter-django/pull/5622))
## 2025.01.02
### Fixed
- Fix logging configuration for Celery tasks ([#5563](https://github.com/cookiecutter/cookiecutter-django/pull/5563))
### Updated
- Update ruff to 0.8.5 ([#5619](https://github.com/cookiecutter/cookiecutter-django/pull/5619))
- Update pillow to 11.1.0 ([#5617](https://github.com/cookiecutter/cookiecutter-django/pull/5617))
## 2024.12.27
### Updated
- Update coverage to 7.6.10 ([#5608](https://github.com/cookiecutter/cookiecutter-django/pull/5608))
- Update uvicorn-worker to 0.3.0 ([#5607](https://github.com/cookiecutter/cookiecutter-django/pull/5607))
## 2024.12.26
### Updated
- Update collectfasta to 3.2.1 ([#5606](https://github.com/cookiecutter/cookiecutter-django/pull/5606))
- Update django-allauth to 65.3.1 ([#5605](https://github.com/cookiecutter/cookiecutter-django/pull/5605))
## 2024.12.24
### Updated
- Update djlint to 1.36.4 ([#5603](https://github.com/cookiecutter/cookiecutter-django/pull/5603))
- Update uvicorn to 0.34.0 ([#5592](https://github.com/cookiecutter/cookiecutter-django/pull/5592))
## 2024.12.23
### Updated
- Bump webpack-cli from 5.1.4 to 6.0.1 ([#5601](https://github.com/cookiecutter/cookiecutter-django/pull/5601))
## 2024.12.20
### Updated
- Update ruff to 0.8.4 ([#5595](https://github.com/cookiecutter/cookiecutter-django/pull/5595))
## 2024.12.17
### Updated
- Update djangorestframework-stubs to 3.15.2 ([#5591](https://github.com/cookiecutter/cookiecutter-django/pull/5591))
- Bump traefik from 3.2.2 to 3.2.3 ([#5594](https://github.com/cookiecutter/cookiecutter-django/pull/5594))
## 2024.12.12
### Updated
- Update ruff to 0.8.3 ([#5587](https://github.com/cookiecutter/cookiecutter-django/pull/5587))
## 2024.12.11
### Updated
- Bump traefik from 3.2.1 to 3.2.2 ([#5586](https://github.com/cookiecutter/cookiecutter-django/pull/5586))
## 2024.12.10
### Updated
- Update watchfiles to 1.0.3 ([#5585](https://github.com/cookiecutter/cookiecutter-django/pull/5585))
- Bump node from 22.11 to 22.12 ([#5583](https://github.com/cookiecutter/cookiecutter-django/pull/5583))
## 2024.12.08
### Fixed
- Pin node to version 22.11 ([#5582](https://github.com/cookiecutter/cookiecutter-django/pull/5582))
### Updated
- Update ruff to 0.8.2 ([#5576](https://github.com/cookiecutter/cookiecutter-django/pull/5576))
- Update coverage to 7.6.9 ([#5581](https://github.com/cookiecutter/cookiecutter-django/pull/5581))
- Update sentry-sdk to 2.19.2 ([#5579](https://github.com/cookiecutter/cookiecutter-django/pull/5579))
- Bump python from 3.12.7 to 3.12.8 in production Docker image ([#5575](https://github.com/cookiecutter/cookiecutter-django/pull/5575))
- Bump python from 3.12.7 to 3.12.8 in local Docker image ([#5574](https://github.com/cookiecutter/cookiecutter-django/pull/5574))
- Bump python from 3.12.7 to 3.12.8 in docs Docker image ([#5573](https://github.com/cookiecutter/cookiecutter-django/pull/5573))
- Update hiredis to 3.1.0 ([#5571](https://github.com/cookiecutter/cookiecutter-django/pull/5571))
- Update redis to 5.2.1 ([#5580](https://github.com/cookiecutter/cookiecutter-django/pull/5580))
- Update django to 5.0.10 ([#5572](https://github.com/cookiecutter/cookiecutter-django/pull/5572))
- Update drf-spectacular to 0.28.0 ([#5564](https://github.com/cookiecutter/cookiecutter-django/pull/5564))
## 2024.12.03
### Updated
- Update django-upgrade to 1.22.2 ([#5567](https://github.com/cookiecutter/cookiecutter-django/pull/5567))
## 2024.12.02
### Updated
- Update pytest to 8.3.4 ([#5566](https://github.com/cookiecutter/cookiecutter-django/pull/5566))
## 2024.12.01
### Updated
- Update django-allauth to 65.3.0 ([#5565](https://github.com/cookiecutter/cookiecutter-django/pull/5565))
## 2024.11.29
### Updated
- Update ruff to 0.8.1 ([#5557](https://github.com/cookiecutter/cookiecutter-django/pull/5557))
- Update djlint to 1.36.3 ([#5558](https://github.com/cookiecutter/cookiecutter-django/pull/5558))
## 2024.11.28
### Updated
- Update djlint to 1.36.2 ([#5555](https://github.com/cookiecutter/cookiecutter-django/pull/5555))
## 2024.11.27
### Fixed
- Pin dart-sass to 1.77.6 to avoid deprecation warnings ([#5552](https://github.com/cookiecutter/cookiecutter-django/pull/5552))
### Updated
- Bump gulp-imagemin from 7.1.0 to 9.1.0 ([#5052](https://github.com/cookiecutter/cookiecutter-django/pull/5052))
- Bump gulp from 4.0.2 to 5.0.0 ([#4949](https://github.com/cookiecutter/cookiecutter-django/pull/4949))
## 2024.11.26
### Updated
- Update coverage to 7.6.8 ([#5547](https://github.com/cookiecutter/cookiecutter-django/pull/5547))
- Update watchfiles to 1.0.0 ([#5548](https://github.com/cookiecutter/cookiecutter-django/pull/5548))
## 2024.11.22
### Updated
- Update ruff to 0.8.0 ([#5545](https://github.com/cookiecutter/cookiecutter-django/pull/5545))
## 2024.11.21
### Changed
- Add support for secure Redis (TLS support) ([#5526](https://github.com/cookiecutter/cookiecutter-django/pull/5526))
### Updated
- Update sentry-sdk to 2.19.0 ([#5543](https://github.com/cookiecutter/cookiecutter-django/pull/5543))
- Update uvicorn to 0.32.1 ([#5539](https://github.com/cookiecutter/cookiecutter-django/pull/5539))
- Bump traefik from 3.2.0 to 3.2.1 ([#5541](https://github.com/cookiecutter/cookiecutter-django/pull/5541))
## 2024.11.20
### Fixed
- Fix typos in translation instructions in README ([#5538](https://github.com/cookiecutter/cookiecutter-django/pull/5538))
### Updated
- Bump amazon/aws-cli from 2.21.0 to 2.22.1 ([#5537](https://github.com/cookiecutter/cookiecutter-django/pull/5537))
## 2024.11.16
### Updated
- Update ruff to 0.7.4 ([#5531](https://github.com/cookiecutter/cookiecutter-django/pull/5531))
## 2024.11.15
### Updated
- Update coverage to 7.6.5 ([#5529](https://github.com/cookiecutter/cookiecutter-django/pull/5529))
## 2024.11.14
### Updated
- Bump amazon/aws-cli from 2.20.0 to 2.21.0 ([#5528](https://github.com/cookiecutter/cookiecutter-django/pull/5528))
## 2024.11.13
### Updated
- Update werkzeug to 3.1.3 ([#5524](https://github.com/cookiecutter/cookiecutter-django/pull/5524))
- Update ruff to 0.7.3 ([#5521](https://github.com/cookiecutter/cookiecutter-django/pull/5521))
- Bump amazon/aws-cli from 2.19.0 to 2.20.0 ([#5527](https://github.com/cookiecutter/cookiecutter-django/pull/5527))
- Update django-allauth to 65.2.0 ([#5523](https://github.com/cookiecutter/cookiecutter-django/pull/5523))
## 2024.11.08
### Updated
- Update ruff pre-commit hook to 0.7.3 ([#5522](https://github.com/cookiecutter/cookiecutter-django/pull/5522))
## 2024.11.07
### Updated
- Update djlint to 1.36.1 ([#5519](https://github.com/cookiecutter/cookiecutter-django/pull/5519))
## 2024.11.05
### Updated
- Update djlint to 1.36.0 ([#5517](https://github.com/cookiecutter/cookiecutter-django/pull/5517))
## 2024.11.04
### Updated
- Update sentry-sdk to 2.18.0 ([#5515](https://github.com/cookiecutter/cookiecutter-django/pull/5515))
## 2024.11.02
### Updated
- Update ruff to 0.7.2 ([#5510](https://github.com/cookiecutter/cookiecutter-django/pull/5510))
## 2024.11.01
### Updated
- Update djlint to 1.35.4 ([#5508](https://github.com/cookiecutter/cookiecutter-django/pull/5508))
- Bump amazon/aws-cli from 2.18.1 to 2.19.0 ([#5507](https://github.com/cookiecutter/cookiecutter-django/pull/5507))
## 2024.10.30
### Documentation
- Small spelling correction in comment ([#5502](https://github.com/cookiecutter/cookiecutter-django/pull/5502))
### Updated
- Update djlint to 1.35.3 ([#5503](https://github.com/cookiecutter/cookiecutter-django/pull/5503))
- Update whitenoise to 6.8.2 ([#5501](https://github.com/cookiecutter/cookiecutter-django/pull/5501))
## 2024.10.29
### Updated
- Update django-cors-headers to 4.6.0 ([#5499](https://github.com/cookiecutter/cookiecutter-django/pull/5499))
- Update whitenoise to 6.8.1 ([#5497](https://github.com/cookiecutter/cookiecutter-django/pull/5497))
- Bump traefik from 3.1.6 to 3.2.0 ([#5498](https://github.com/cookiecutter/cookiecutter-django/pull/5498))
## 2024.10.26
### Updated
- Update django-stubs to 5.1.1 ([#5495](https://github.com/cookiecutter/cookiecutter-django/pull/5495))
- Update mypy to 1.13.0 ([#5484](https://github.com/cookiecutter/cookiecutter-django/pull/5484))
- Update werkzeug to 3.0.6 ([#5492](https://github.com/cookiecutter/cookiecutter-django/pull/5492))
## 2024.10.25
### Updated
- Update werkzeug to 3.0.5 and unpin watchdog<5 ([#5489](https://github.com/cookiecutter/cookiecutter-django/pull/5489))
## 2024.10.24
### Updated
- Update ruff to 0.7.1 ([#5487](https://github.com/cookiecutter/cookiecutter-django/pull/5487))
- Update redis to 5.2.0 ([#5486](https://github.com/cookiecutter/cookiecutter-django/pull/5486))
- Update django-allauth to 65.1.0 ([#5485](https://github.com/cookiecutter/cookiecutter-django/pull/5485))
## 2024.10.22
### Changed
- Fix broken links in generated README ([#5482](https://github.com/cookiecutter/cookiecutter-django/pull/5482))
### Updated
- Auto-update pre-commit hooks ([#5483](https://github.com/cookiecutter/cookiecutter-django/pull/5483))
## 2024.10.21
### Changed
- Remove CELERY_BROKER_URL in favor of REDIS_URL ([#4861](https://github.com/cookiecutter/cookiecutter-django/pull/4861))
### Fixed
- Fix a number of issues with Azure storage ([#5476](https://github.com/cookiecutter/cookiecutter-django/pull/5476))
### Updated
- Update coverage to 7.6.4 ([#5480](https://github.com/cookiecutter/cookiecutter-django/pull/5480))
## 2024.10.17
### Updated
- Update ruff to 0.7.0 ([#5474](https://github.com/cookiecutter/cookiecutter-django/pull/5474))
- Update uvicorn to 0.32.0 ([#5471](https://github.com/cookiecutter/cookiecutter-django/pull/5471))
- Update pillow to 11.0.0 ([#5470](https://github.com/cookiecutter/cookiecutter-django/pull/5470))
- Update sentry-sdk to 2.17.0 ([#5473](https://github.com/cookiecutter/cookiecutter-django/pull/5473))
## 2024.10.15
### Changed
- [pre-commit.ci] pre-commit autoupdate ([#5468](https://github.com/cookiecutter/cookiecutter-django/pull/5468))
## 2024.10.14
### Changed
- Add requirements for ubuntu 24.04 ([#5467](https://github.com/cookiecutter/cookiecutter-django/pull/5467))
### Updated
- Update sphinx to 8.1.3 ([#5463](https://github.com/cookiecutter/cookiecutter-django/pull/5463))
- Update coverage to 7.6.3 ([#5464](https://github.com/cookiecutter/cookiecutter-django/pull/5464))
## 2024.10.12
### Changed
- Pin Python version to 3.12 ([#5456](https://github.com/cookiecutter/cookiecutter-django/pull/5456))
### Updated
- Update sphinx to 8.1.1 ([#5457](https://github.com/cookiecutter/cookiecutter-django/pull/5457))
- Auto-update pre-commit hooks ([#5458](https://github.com/cookiecutter/cookiecutter-django/pull/5458))
- Update django-cors-headers to 4.5.0 ([#5459](https://github.com/cookiecutter/cookiecutter-django/pull/5459))
## 2024.10.11
### Changed
- Update README.md broken links ([#5454](https://github.com/cookiecutter/cookiecutter-django/pull/5454))
- wait-for-it as dependency in the run stage ([#5452](https://github.com/cookiecutter/cookiecutter-django/pull/5452))
### Updated
- Auto-update pre-commit hooks ([#5450](https://github.com/cookiecutter/cookiecutter-django/pull/5450))
## 2024.10.10
### Updated
- Update sentry-sdk to 2.16.0 ([#5444](https://github.com/cookiecutter/cookiecutter-django/pull/5444))
- Bump traefik from 3.1.5 to 3.1.6 ([#5449](https://github.com/cookiecutter/cookiecutter-django/pull/5449))
## 2024.10.09
### Updated
- Update coverage to 7.6.2 ([#5448](https://github.com/cookiecutter/cookiecutter-django/pull/5448))
## 2024.10.08
### Changed
- [pre-commit.ci] pre-commit autoupdate ([#5441](https://github.com/cookiecutter/cookiecutter-django/pull/5441))
### Updated
- Update pre-commit to 4.0.1 ([#5445](https://github.com/cookiecutter/cookiecutter-django/pull/5445))
- Bump amazon/aws-cli from 2.18.0 to 2.18.1 in /{{cookiecutter.project_slug}}/compose/production/aws ([#5443](https://github.com/cookiecutter/cookiecutter-django/pull/5443))
- Auto-update pre-commit hooks ([#5442](https://github.com/cookiecutter/cookiecutter-django/pull/5442))
## 2024.10.07
### Documentation
- Docs: fix Mailgun include in troubleshooting sections ([#5439](https://github.com/cookiecutter/cookiecutter-django/pull/5439))
### Updated
- Update sphinx to 8.0.2 ([#5263](https://github.com/cookiecutter/cookiecutter-django/pull/5263))
- Update pre-commit to 4.0.0 ([#5432](https://github.com/cookiecutter/cookiecutter-django/pull/5432))
- Auto-update pre-commit hooks ([#5433](https://github.com/cookiecutter/cookiecutter-django/pull/5433))
- Update sphinx-rtd-theme to 3.0.0 ([#5437](https://github.com/cookiecutter/cookiecutter-django/pull/5437))
- Bump amazon/aws-cli from 2.17.0 to 2.18.0 in /{{cookiecutter.project_slug}}/compose/production/aws ([#5436](https://github.com/cookiecutter/cookiecutter-django/pull/5436))
## 2024.10.05
### Changed
- Replace pip with uv for the project files ([#5356](https://github.com/cookiecutter/cookiecutter-django/pull/5356))
- Use wait-for-it in favor of the custom python script when waiting for postgres ([#5327](https://github.com/cookiecutter/cookiecutter-django/pull/5327))
### Documentation
- Spit docs into sections ([#5426](https://github.com/cookiecutter/cookiecutter-django/pull/5426))
### Updated
- Update crispy-bootstrap5 to 2024.10 ([#5430](https://github.com/cookiecutter/cookiecutter-django/pull/5430))
## 2024.10.04
### Updated
- Update ruff to 0.6.9 ([#5428](https://github.com/cookiecutter/cookiecutter-django/pull/5428))
- Update redis to 5.1.1 ([#5427](https://github.com/cookiecutter/cookiecutter-django/pull/5427))
## 2024.10.03
### Updated
- Update sphinx-autobuild to 2024.10.3 ([#5420](https://github.com/cookiecutter/cookiecutter-django/pull/5420))
- Bump traefik from 3.1.4 to 3.1.5 ([#5423](https://github.com/cookiecutter/cookiecutter-django/pull/5423))
## 2024.10.02
### Updated
- Bump python from 3.12.6 to 3.12.7 in docs Docker image ([#5416](https://github.com/cookiecutter/cookiecutter-django/pull/5416))
- Bump python from 3.12.6 to 3.12.7 in local Docker image ([#5415](https://github.com/cookiecutter/cookiecutter-django/pull/5415))
- Bump python from 3.12.6 to 3.12.7 production Docker ([#5414](https://github.com/cookiecutter/cookiecutter-django/pull/5414))
## 2024.10.01
### Updated
- Update sentry-sdk to 2.15.0 ([#5413](https://github.com/cookiecutter/cookiecutter-django/pull/5413))
## 2024.09.29
### Updated
- Update psycopg to 3.2.3 ([#5411](https://github.com/cookiecutter/cookiecutter-django/pull/5411))
## 2024.09.28
### Updated
- Update uvicorn to 0.31.0 ([#5408](https://github.com/cookiecutter/cookiecutter-django/pull/5408))
## 2024.09.27
### Updated
- Update redis to 5.1.0 ([#5406](https://github.com/cookiecutter/cookiecutter-django/pull/5406))
- Update django-allauth to 65.0.2 ([#5405](https://github.com/cookiecutter/cookiecutter-django/pull/5405))
## 2024.09.26
### Updated
- Update ruff to 0.6.8 ([#5402](https://github.com/cookiecutter/cookiecutter-django/pull/5402))
## 2024.09.24
### Updated
- Update django-stubs to 5.1.0 ([#5400](https://github.com/cookiecutter/cookiecutter-django/pull/5400))
## 2024.09.23
### Changed
- Fix Makefile and make.bat files used for automatic generation of documentation. ([#5347](https://github.com/cookiecutter/cookiecutter-django/pull/5347))
### Updated
- Update django-allauth to 65.0.1 ([#5399](https://github.com/cookiecutter/cookiecutter-django/pull/5399))
- Auto-update pre-commit hooks ([#5392](https://github.com/cookiecutter/cookiecutter-django/pull/5392))
- Update django-allauth to 65.0.0 ([#5393](https://github.com/cookiecutter/cookiecutter-django/pull/5393))
- Update ruff to 0.6.7 ([#5394](https://github.com/cookiecutter/cookiecutter-django/pull/5394))
## 2024.09.21
### Updated
- Auto-update pre-commit hooks ([#5391](https://github.com/cookiecutter/cookiecutter-django/pull/5391))
## 2024.09.20
### Updated
- Update sphinx-autobuild to 2024.9.19 ([#5386](https://github.com/cookiecutter/cookiecutter-django/pull/5386))
- Bump traefik from 3.1.3 to 3.1.4 in /{{cookiecutter.project_slug}}/compose/production/traefik ([#5389](https://github.com/cookiecutter/cookiecutter-django/pull/5389))
- Update ruff to 0.6.6 ([#5388](https://github.com/cookiecutter/cookiecutter-django/pull/5388))
- Update tox to 4.20.0 ([#5387](https://github.com/cookiecutter/cookiecutter-django/pull/5387))
## 2024.09.17
### Fixed
- Set allauth email subject prefix ([#5278](https://github.com/cookiecutter/cookiecutter-django/pull/5278))
### Documentation
- Update postgres plan in Heroku deployment docs ([#5383](https://github.com/cookiecutter/cookiecutter-django/pull/5383))
### Updated
- Update sphinx-autobuild to 2024.9.17 ([#5382](https://github.com/cookiecutter/cookiecutter-django/pull/5382))
- Bump traefik from 3.1.2 to 3.1.3 ([#5380](https://github.com/cookiecutter/cookiecutter-django/pull/5380))
## 2024.09.16
### Updated
- Update psycopg to 3.2.2 ([#5378](https://github.com/cookiecutter/cookiecutter-django/pull/5378))
## 2024.09.15
### Updated
- Update ruff to 0.6.5 ([#5373](https://github.com/cookiecutter/cookiecutter-django/pull/5373))
## 2024.09.11
### Updated
- Update djangorestframework-stubs to 3.15.1 ([#5372](https://github.com/cookiecutter/cookiecutter-django/pull/5372))
- Update django-anymail to 12.0 ([#5366](https://github.com/cookiecutter/cookiecutter-django/pull/5366))
## 2024.09.10
### Changed
- Add nginx container to dependabot automation ([#5345](https://github.com/cookiecutter/cookiecutter-django/pull/5345))
### Updated
- Update pytest to 8.3.3 ([#5371](https://github.com/cookiecutter/cookiecutter-django/pull/5371))
- Bump postcss-preset-env from 9.6.0 to 10.0.3 ([#5368](https://github.com/cookiecutter/cookiecutter-django/pull/5368))
- Bump concurrently from 8.2.2 to 9.0.0 ([#5363](https://github.com/cookiecutter/cookiecutter-django/pull/5363))
- Bump python to 3.12.6 in local Docker ([#5370](https://github.com/cookiecutter/cookiecutter-django/pull/5370))
- Bump python to 3.12.6 in production Docker ([#5367](https://github.com/cookiecutter/cookiecutter-django/pull/5367))
- Bump python to 3.12.6 in docs Docker image ([#5369](https://github.com/cookiecutter/cookiecutter-django/pull/5369))
## 2024.09.09
### Updated
- Update sentry-sdk to 2.14.0 ([#5365](https://github.com/cookiecutter/cookiecutter-django/pull/5365))
## 2024.09.08
### Changed
- Remove "storages" from `INSTALLED_APPS` ([#5361](https://github.com/cookiecutter/cookiecutter-django/pull/5361))
## 2024.09.07
### Changed
- Fix Requires Python to allow minor versions ([#5360](https://github.com/cookiecutter/cookiecutter-django/pull/5360))
## 2024.09.06
### Updated
- Update ruff to 0.6.4 ([#5354](https://github.com/cookiecutter/cookiecutter-django/pull/5354))
- Update django-allauth to 64.2.1 ([#5352](https://github.com/cookiecutter/cookiecutter-django/pull/5352))
- Auto-update pre-commit hooks ([#5353](https://github.com/cookiecutter/cookiecutter-django/pull/5353))
## 2024.09.05
### Updated
- Update django-upgrade to 1.21.0 ([#5348](https://github.com/cookiecutter/cookiecutter-django/pull/5348))
## 2024.09.04
### Updated
- Update django-model-utils to 5.0.0 ([#5343](https://github.com/cookiecutter/cookiecutter-django/pull/5343))
## 2024.09.03
### Fixed
- Pin watchdog to 4.0.2 ([#5335](https://github.com/cookiecutter/cookiecutter-django/pull/5335))
### Updated
- Update django to 5.0.9 ([#5341](https://github.com/cookiecutter/cookiecutter-django/pull/5341))
- Update sphinx-autobuild to 2024.9.3 ([#5340](https://github.com/cookiecutter/cookiecutter-django/pull/5340))
## 2024.09.02
### Updated
- Auto-update pre-commit hooks ([#5334](https://github.com/cookiecutter/cookiecutter-django/pull/5334))
- Update django-allauth to 64.2.0 ([#5337](https://github.com/cookiecutter/cookiecutter-django/pull/5337))
- Update pytest-django to 4.9.0 ([#5338](https://github.com/cookiecutter/cookiecutter-django/pull/5338))
## 2024.08.30
### Updated
- Update django-webpack-loader to 3.1.1 ([#5336](https://github.com/cookiecutter/cookiecutter-django/pull/5336))
## 2024.08.29
### Updated
- Update ruff to 0.6.3 ([#5333](https://github.com/cookiecutter/cookiecutter-django/pull/5333))
- Update djlint to 1.35.2 ([#5332](https://github.com/cookiecutter/cookiecutter-django/pull/5332))
- Update djlint pre-commit hook to v1.34.2 ([#5331](https://github.com/cookiecutter/cookiecutter-django/pull/5331))
## 2024.08.28
### Updated
- Update watchfiles to 0.24.0 ([#5330](https://github.com/cookiecutter/cookiecutter-django/pull/5330))
- Update djlint to 1.34.2 ([#5329](https://github.com/cookiecutter/cookiecutter-django/pull/5329))
## 2024.08.26
### Changed
- Check DB migrations in GitHub CI ([#5322](https://github.com/cookiecutter/cookiecutter-django/pull/5322))
### Updated
- Update mypy to 1.11.2 ([#5320](https://github.com/cookiecutter/cookiecutter-django/pull/5320))
## 2024.08.23
### Updated
- Update werkzeug to 3.0.4 ([#5313](https://github.com/cookiecutter/cookiecutter-django/pull/5313))
- Update ruff to 0.6.2 ([#5316](https://github.com/cookiecutter/cookiecutter-django/pull/5316))
## 2024.08.22
### Updated
- Update django-celery-beat to 2.7.0 ([#5315](https://github.com/cookiecutter/cookiecutter-django/pull/5315))
## 2024.08.21
### Changed
- Add type hint for UserFactory ([#5312](https://github.com/cookiecutter/cookiecutter-django/pull/5312))
## 2024.08.20
### Fixed
- Add missing extra_body block in allauth entrance.html ([#5308](https://github.com/cookiecutter/cookiecutter-django/pull/5308))
### Updated
- Bump sass-loader from 14.2.1 to 16.0.1 ([#5309](https://github.com/cookiecutter/cookiecutter-django/pull/5309))
- Bump node from 20 to 22 ([#5039](https://github.com/cookiecutter/cookiecutter-django/pull/5039))
- Bump webpack-merge from 5.10.0 to 6.0.1 ([#5187](https://github.com/cookiecutter/cookiecutter-django/pull/5187))
- Bump css-loader from 6.11.0 to 7.1.2 ([#5089](https://github.com/cookiecutter/cookiecutter-django/pull/5089))
- Bump traefik from 2.11.2 to 3.1.2 ([#5282](https://github.com/cookiecutter/cookiecutter-django/pull/5282))
## 2024.08.19
### Updated
- Update factory-boy to 3.3.1 ([#5307](https://github.com/cookiecutter/cookiecutter-django/pull/5307))
## 2024.08.17
### Updated
- Update ruff to 0.6.1 ([#5303](https://github.com/cookiecutter/cookiecutter-django/pull/5303))
## 2024.08.16
### Updated
- Update django-allauth to 64.1.0 ([#5302](https://github.com/cookiecutter/cookiecutter-django/pull/5302))
## 2024.08.15
### Updated
- Update ruff to 0.6.0 ([#5300](https://github.com/cookiecutter/cookiecutter-django/pull/5300))
## 2024.08.13
### Updated
- Update tox to 4.18.0 ([#5299](https://github.com/cookiecutter/cookiecutter-django/pull/5299))
- Update sentry-sdk to 2.13.0 ([#5298](https://github.com/cookiecutter/cookiecutter-django/pull/5298))
- Update uvicorn to 0.30.6 ([#5295](https://github.com/cookiecutter/cookiecutter-django/pull/5295))
## 2024.08.12
### Updated
- Update gunicorn to 23.0.0 ([#5294](https://github.com/cookiecutter/cookiecutter-django/pull/5294))
## 2024.08.09
### Updated
- Update Ruff pre-commit hook to v0.5.7 ([#5293](https://github.com/cookiecutter/cookiecutter-django/pull/5293))
## 2024.08.08
### Updated
- Update ruff to 0.5.7 ([#5291](https://github.com/cookiecutter/cookiecutter-django/pull/5291))
- Bump python from 3.12.4 to 3.12.5 in docs Docker image ([#5287](https://github.com/cookiecutter/cookiecutter-django/pull/5287))
- Bump python from 3.12.4 to 3.12.5 in local Docker image ([#5289](https://github.com/cookiecutter/cookiecutter-django/pull/5289))
- Bump python from 3.12.4 to 3.12.5 in production Docker image ([#5290](https://github.com/cookiecutter/cookiecutter-django/pull/5290))
## 2024.08.07
### Updated
- Update tox to 4.17.1 ([#5285](https://github.com/cookiecutter/cookiecutter-django/pull/5285))
- Update django-anymail to 11.1 ([#5286](https://github.com/cookiecutter/cookiecutter-django/pull/5286))
## 2024.08.06
### Updated
- Update django to 5.0.8 ([#5281](https://github.com/cookiecutter/cookiecutter-django/pull/5281))
## 2024.08.05
### Documentation
- Simplify documentation for https in local development ([#5252](https://github.com/cookiecutter/cookiecutter-django/pull/5252))
- Add Medium story in the Articles section ([#5275](https://github.com/cookiecutter/cookiecutter-django/pull/5275))
### Updated
- Update coverage to 7.6.1 ([#5276](https://github.com/cookiecutter/cookiecutter-django/pull/5276))
- Auto-update pre-commit hooks ([#5277](https://github.com/cookiecutter/cookiecutter-django/pull/5277))
## 2024.08.04
### Updated
- Update uvicorn to 0.30.5 ([#5272](https://github.com/cookiecutter/cookiecutter-django/pull/5272))
- Update ruff to 0.5.6 ([#5273](https://github.com/cookiecutter/cookiecutter-django/pull/5273))
- Auto-update pre-commit hooks ([#5274](https://github.com/cookiecutter/cookiecutter-django/pull/5274))
## 2024.07.31
### Updated
- Update uvicorn to 0.30.4 ([#5271](https://github.com/cookiecutter/cookiecutter-django/pull/5271))
- Update mypy to 1.11.1 ([#5270](https://github.com/cookiecutter/cookiecutter-django/pull/5270))
- Update pre-commit to 3.8.0 ([#5257](https://github.com/cookiecutter/cookiecutter-django/pull/5257))
- Update pyupgrade pre-commit hook to v3.17.0 ([#5258](https://github.com/cookiecutter/cookiecutter-django/pull/5258))
- Update redis to 5.0.8 ([#5265](https://github.com/cookiecutter/cookiecutter-django/pull/5265))
- Update django-stubs to 5.0.4 ([#5256](https://github.com/cookiecutter/cookiecutter-django/pull/5256))
- Update mypy to 1.11.0 ([#5231](https://github.com/cookiecutter/cookiecutter-django/pull/5231))
- Update django-allauth to 64.0.0 ([#5269](https://github.com/cookiecutter/cookiecutter-django/pull/5269))
- Update sentry-sdk to 2.12.0 ([#5268](https://github.com/cookiecutter/cookiecutter-django/pull/5268))
## 2024.07.26
### Updated
- Update ruff to 0.5.5 ([#5250](https://github.com/cookiecutter/cookiecutter-django/pull/5250))
## 2024.07.25
### Changed
- Upgrade to Django 5.0 ([#5199](https://github.com/cookiecutter/cookiecutter-django/pull/5199))
### Updated
- Update pytest to 8.3.2 ([#5249](https://github.com/cookiecutter/cookiecutter-django/pull/5249))
- Update sentry-sdk to 2.11.0 ([#5247](https://github.com/cookiecutter/cookiecutter-django/pull/5247))
## 2024.07.24
### Changed
- fix non existent of two scoops of django image ([#5248](https://github.com/cookiecutter/cookiecutter-django/pull/5248))
## 2024.07.23
### Changed
- Ensure that awscli service has a CMD to fix #5241 ([#5245](https://github.com/cookiecutter/cookiecutter-django/pull/5245))
### Fixed
- Downgrade watchfiles ([#5243](https://github.com/cookiecutter/cookiecutter-django/pull/5243))
## 2024.07.22
### Updated
- Update django-compressor to 4.5.1 ([#5240](https://github.com/cookiecutter/cookiecutter-django/pull/5240))
## 2024.07.21
### Updated
- Update ruff to 0.5.4 ([#5237](https://github.com/cookiecutter/cookiecutter-django/pull/5237))
- Update pytest to 8.3.1 ([#5236](https://github.com/cookiecutter/cookiecutter-django/pull/5236))
- Update sphinx to 7.4.7 ([#5235](https://github.com/cookiecutter/cookiecutter-django/pull/5235))
## 2024.07.20
### Updated
- Update hiredis to 3.0.0 ([#5228](https://github.com/cookiecutter/cookiecutter-django/pull/5228))
- Update uvicorn to 0.30.3 ([#5234](https://github.com/cookiecutter/cookiecutter-django/pull/5234))
- Update django-crispy-forms to 2.3 ([#5229](https://github.com/cookiecutter/cookiecutter-django/pull/5229))
- Auto-update pre-commit hooks ([#5232](https://github.com/cookiecutter/cookiecutter-django/pull/5232))
## 2024.07.19
### Changed
- Use "ENV key=value" instead of "ENV key value" in Dockerfiles ([#5225](https://github.com/cookiecutter/cookiecutter-django/pull/5225))
### Updated
- Update django-upgrade to 1.20.0 ([#5227](https://github.com/cookiecutter/cookiecutter-django/pull/5227))
- Update ruff to 0.5.3 ([#5224](https://github.com/cookiecutter/cookiecutter-django/pull/5224))
## 2024.07.18
### Updated
- Update sphinx to 7.4.6 ([#5223](https://github.com/cookiecutter/cookiecutter-django/pull/5223))
## 2024.07.17
### Updated
- Update sphinx to 7.4.5 ([#5222](https://github.com/cookiecutter/cookiecutter-django/pull/5222))
## 2024.07.16
### Fixed
- Clear `ENTRYPOINT` in `awscli` image to allow script execution ([#5221](https://github.com/cookiecutter/cookiecutter-django/pull/5221))
### Updated
- Update sphinx to 7.4.4 ([#5218](https://github.com/cookiecutter/cookiecutter-django/pull/5218))
## 2024.07.15
### Updated
- Update sentry-sdk to 2.10.0 ([#5216](https://github.com/cookiecutter/cookiecutter-django/pull/5216))
- Update sphinx to 7.4.2 ([#5215](https://github.com/cookiecutter/cookiecutter-django/pull/5215))
- Update ruff to 0.5.2 ([#5211](https://github.com/cookiecutter/cookiecutter-django/pull/5211))
- Update sphinx to 7.4.0 ([#5214](https://github.com/cookiecutter/cookiecutter-django/pull/5214))
## 2024.07.12
### Updated
- Update django-allauth to 0.63.6 ([#5210](https://github.com/cookiecutter/cookiecutter-django/pull/5210))
- Update django-allauth to 0.63.5 ([#5206](https://github.com/cookiecutter/cookiecutter-django/pull/5206))
- Update coverage to 7.6.0 ([#5207](https://github.com/cookiecutter/cookiecutter-django/pull/5207))
- Update django-anymail to 11.0.1 ([#5208](https://github.com/cookiecutter/cookiecutter-django/pull/5208))
## 2024.07.10
### Updated
- Update django-allauth to 0.63.4 ([#5204](https://github.com/cookiecutter/cookiecutter-django/pull/5204))
- Update django to 4.2.14 ([#5200](https://github.com/cookiecutter/cookiecutter-django/pull/5200))
- Update collectfasta to 3.2.0 ([#5201](https://github.com/cookiecutter/cookiecutter-django/pull/5201))
- Update sentry-sdk to 2.9.0 ([#5202](https://github.com/cookiecutter/cookiecutter-django/pull/5202))
- Update django-debug-toolbar to 4.4.6 ([#5203](https://github.com/cookiecutter/cookiecutter-django/pull/5203))
## 2024.07.09
### Changed
- Migrate from Collectfast to Collestfasta ([#5172](https://github.com/cookiecutter/cookiecutter-django/pull/5172))
### Documentation
- Fix a typo in the `--all` option of the `makemessages` command ([#5198](https://github.com/cookiecutter/cookiecutter-django/pull/5198))
### Updated
- Update django-storages to 1.14.4 ([#5197](https://github.com/cookiecutter/cookiecutter-django/pull/5197))
## 2024.07.08
### Updated
- Update ruff to 0.5.1 ([#5190](https://github.com/cookiecutter/cookiecutter-django/pull/5190))
- Update django-debug-toolbar to 4.4.5 ([#5192](https://github.com/cookiecutter/cookiecutter-django/pull/5192))
- Update sentry-sdk to 2.8.0 ([#5195](https://github.com/cookiecutter/cookiecutter-django/pull/5195))
## 2024.07.05
### Updated
- Update django-debug-toolbar to 4.4.3 ([#5189](https://github.com/cookiecutter/cookiecutter-django/pull/5189))
## 2024.07.02
### Updated
- Update pillow to 10.4.0 ([#5182](https://github.com/cookiecutter/cookiecutter-django/pull/5182))
## 2024.07.01
### Updated
- Update ruff to 0.5.0 ([#5181](https://github.com/cookiecutter/cookiecutter-django/pull/5181))
- Update sentry-sdk to 2.7.1 ([#5174](https://github.com/cookiecutter/cookiecutter-django/pull/5174))
- Auto-update pre-commit hooks ([#5175](https://github.com/cookiecutter/cookiecutter-django/pull/5175))
- Update psycopg to 3.2.1 ([#5180](https://github.com/cookiecutter/cookiecutter-django/pull/5180))
## 2024.06.30
### Updated
- Update django-upgrade to 1.19.0 ([#5171](https://github.com/cookiecutter/cookiecutter-django/pull/5171))
## 2024.06.26
### Fixed
- Fix keywords case warning in Dockerfile ([#5164](https://github.com/cookiecutter/cookiecutter-django/pull/5164))
### Updated
- Update redis to 5.0.7 ([#5170](https://github.com/cookiecutter/cookiecutter-django/pull/5170))
- Update sentry-sdk to 2.7.0 ([#5169](https://github.com/cookiecutter/cookiecutter-django/pull/5169))
## 2024.06.24
### Updated
- Update django-anymail to 11.0 ([#5163](https://github.com/cookiecutter/cookiecutter-django/pull/5163))
- Update coverage to 7.5.4 ([#5162](https://github.com/cookiecutter/cookiecutter-django/pull/5162))
## 2024.06.22
### Updated
- Bump amazon/aws-cli from 2.16.10 to 2.17.0 ([#5161](https://github.com/cookiecutter/cookiecutter-django/pull/5161))
- Auto-update pre-commit hooks ([#5160](https://github.com/cookiecutter/cookiecutter-django/pull/5160))
- Update ruff to 0.4.10 ([#5159](https://github.com/cookiecutter/cookiecutter-django/pull/5159))
## 2024.06.20
### Fixed
- Remove deprecated docker and python tags from GitLab CI config ([#5158](https://github.com/cookiecutter/cookiecutter-django/pull/5158))
## 2024.06.19
### Updated
- Update djangorestframework to 3.15.2 ([#5156](https://github.com/cookiecutter/cookiecutter-django/pull/5156))
- Update django-cors-headers to 4.4.0 ([#5154](https://github.com/cookiecutter/cookiecutter-django/pull/5154))
- Update sentry-sdk to 2.6.0 ([#5153](https://github.com/cookiecutter/cookiecutter-django/pull/5153))
- Update whitenoise to 6.7.0 ([#5155](https://github.com/cookiecutter/cookiecutter-django/pull/5155))
## 2024.06.18
### Updated
- Bump amazon/aws-cli from 2.16.8 to 2.16.10 ([#5149](https://github.com/cookiecutter/cookiecutter-django/pull/5149))
## 2024.06.17
### Updated
- Update django-compressor to 4.5 ([#5145](https://github.com/cookiecutter/cookiecutter-django/pull/5145))
- Update rcssmin to 1.1.2 ([#4614](https://github.com/cookiecutter/cookiecutter-django/pull/4614))
## 2024.06.15
### Changed
- Update start-flower in flower to wait until all celery workers are online ([#5012](https://github.com/cookiecutter/cookiecutter-django/pull/5012))
- Enhancing the security of cookies ([#5102](https://github.com/cookiecutter/cookiecutter-django/pull/5102))
### Updated
- Update django-crispy-forms to 2.2 ([#5143](https://github.com/cookiecutter/cookiecutter-django/pull/5143))
- Update sentry-sdk to 2.5.1 ([#5142](https://github.com/cookiecutter/cookiecutter-django/pull/5142))
- Auto-update pre-commit hooks ([#5140](https://github.com/cookiecutter/cookiecutter-django/pull/5140))
- Update django-allauth to 0.63.3 ([#5111](https://github.com/cookiecutter/cookiecutter-django/pull/5111))
## 2024.06.14
### Updated
- Bump python from 3.12.3-slim-bookworm to 3.12.4-slim-bookworm in /{{cookiecutter.project_slug}}/compose/local/docs ([#5129](https://github.com/cookiecutter/cookiecutter-django/pull/5129))
- Bump python from 3.12.3-slim-bookworm to 3.12.4-slim-bookworm in /{{cookiecutter.project_slug}}/compose/local/django ([#5130](https://github.com/cookiecutter/cookiecutter-django/pull/5130))
- Bump python from 3.12.3-slim-bookworm to 3.12.4-slim-bookworm in /{{cookiecutter.project_slug}}/compose/production/django ([#5132](https://github.com/cookiecutter/cookiecutter-django/pull/5132))
- Bump amazon/aws-cli from 2.16.6 to 2.16.8 in /{{cookiecutter.project_slug}}/compose/production/aws ([#5138](https://github.com/cookiecutter/cookiecutter-django/pull/5138))
- Update ruff to 0.4.9 ([#5139](https://github.com/cookiecutter/cookiecutter-django/pull/5139))
## 2024.06.13
### Updated
- Update redis to 5.0.6 ([#5137](https://github.com/cookiecutter/cookiecutter-django/pull/5137))
## 2024.06.12
### Updated
- Bump amazon/aws-cli Docker image from 2.15.58 to 2.16.6 ([#5135](https://github.com/cookiecutter/cookiecutter-django/pull/5135))
## 2024.06.08
### Changed
- Replace deprecated `uvicorn.workers` with `uvicorn-worker` ([#5110](https://github.com/cookiecutter/cookiecutter-django/pull/5110))
- Change aws-cli docker image to use official amazon image ([#5116](https://github.com/cookiecutter/cookiecutter-django/pull/5116))
## 2024.06.06
### Updated
- Update sentry-sdk to 2.5.0 ([#5126](https://github.com/cookiecutter/cookiecutter-django/pull/5126))
- Update ruff to 0.4.8 ([#5122](https://github.com/cookiecutter/cookiecutter-django/pull/5122))
- Update redis to 5.0.5 ([#5125](https://github.com/cookiecutter/cookiecutter-django/pull/5125))
## 2024.06.04
### Updated
- Update pytest to 8.2.2 ([#5120](https://github.com/cookiecutter/cookiecutter-django/pull/5120))
- Update sh to 2.0.7 ([#5114](https://github.com/cookiecutter/cookiecutter-django/pull/5114))
- Update sentry-sdk to 2.4.0 ([#5119](https://github.com/cookiecutter/cookiecutter-django/pull/5119))
## 2024.06.02
### Updated
- Update uvicorn to 0.30.1 ([#5115](https://github.com/cookiecutter/cookiecutter-django/pull/5115))
## 2024.06.01
### Updated
- Update ruff to 0.4.7 ([#5112](https://github.com/cookiecutter/cookiecutter-django/pull/5112))
## 2024.05.30
### Updated
- Update uvicorn to 0.30.0 ([#5101](https://github.com/cookiecutter/cookiecutter-django/pull/5101))
## 2024.05.29
### Updated
- Update requests to 2.32.3 ([#5108](https://github.com/cookiecutter/cookiecutter-django/pull/5108))
- Update ruff to 0.4.6 ([#5107](https://github.com/cookiecutter/cookiecutter-django/pull/5107))
- Auto-update pre-commit hooks ([#5106](https://github.com/cookiecutter/cookiecutter-django/pull/5106))
- Update coverage to 7.5.3 ([#5104](https://github.com/cookiecutter/cookiecutter-django/pull/5104))
- Update django-upgrade to 1.18.0 ([#5105](https://github.com/cookiecutter/cookiecutter-django/pull/5105))
## 2024.05.27
### Changed
- Rename SendInBlue ESP to Brevo ([#5094](https://github.com/cookiecutter/cookiecutter-django/pull/5094))
### Updated
- Update django-stubs to 5.0.2 ([#5100](https://github.com/cookiecutter/cookiecutter-django/pull/5100))
- Update watchfiles to 0.22.0 ([#5099](https://github.com/cookiecutter/cookiecutter-django/pull/5099))
- Update django-allauth to 0.63.2 ([#5092](https://github.com/cookiecutter/cookiecutter-django/pull/5092))
- Update coverage to 7.5.2 ([#5095](https://github.com/cookiecutter/cookiecutter-django/pull/5095))
- Update django-debug-toolbar to 4.4.2 ([#5098](https://github.com/cookiecutter/cookiecutter-django/pull/5098))
## 2024.05.23
### Updated
- Update sentry-sdk to 2.3.1 ([#5091](https://github.com/cookiecutter/cookiecutter-django/pull/5091))
- Auto-update pre-commit hooks ([#5087](https://github.com/cookiecutter/cookiecutter-django/pull/5087))
- Update ruff to 0.4.5 ([#5086](https://github.com/cookiecutter/cookiecutter-django/pull/5086))
## 2024.05.21
### Updated
- Update sentry-sdk to 2.2.1 ([#5083](https://github.com/cookiecutter/cookiecutter-django/pull/5083))
## 2024.05.20
### Fixed
- Fix PyCharm Run Configurations After local.yml Rename ([#5080](https://github.com/cookiecutter/cookiecutter-django/pull/5080))
### Updated
- Update pytest to 8.2.1 ([#5079](https://github.com/cookiecutter/cookiecutter-django/pull/5079))
## 2024.05.18
### Fixed
- Fix redirect error when forcing allauth login in admin site ([#5078](https://github.com/cookiecutter/cookiecutter-django/pull/5078))
## 2024.05.17
### Updated
- Update django-allauth to 0.63.1 ([#5076](https://github.com/cookiecutter/cookiecutter-django/pull/5076))
## 2024.05.16
### Documentation
- Update Two scoops of Django book link & image ([#5073](https://github.com/cookiecutter/cookiecutter-django/pull/5073))
### Updated
- Update sentry-sdk to 2.2.0 ([#5074](https://github.com/cookiecutter/cookiecutter-django/pull/5074))
- Update django-allauth to 0.63.0 ([#5070](https://github.com/cookiecutter/cookiecutter-django/pull/5070))
## 2024.05.15
### Fixed
- Disable DDT profiling panel ([#5069](https://github.com/cookiecutter/cookiecutter-django/pull/5069))
## 2024.05.13
### Changed
- Rename docker compose files to include 'docker-compose' ([#4995](https://github.com/cookiecutter/cookiecutter-django/pull/4995))
- Remove obsolete `version` element from docker compose files ([#5059](https://github.com/cookiecutter/cookiecutter-django/pull/5059))
- Add Redis persistent storage when using celery ([#5063](https://github.com/cookiecutter/cookiecutter-django/pull/5063))
### Fixed
- Add noqa to ignore ruff false positive ([#5068](https://github.com/cookiecutter/cookiecutter-django/pull/5068))
- Fix staticfile settings with cloud provider and whitenoise ([#5057](https://github.com/cookiecutter/cookiecutter-django/pull/5057))
### Updated
- Update djangorestframework-stubs to 3.15.0 ([#5041](https://github.com/cookiecutter/cookiecutter-django/pull/5041))
- Update django-stubs to 5.0.0 ([#5040](https://github.com/cookiecutter/cookiecutter-django/pull/5040))
- Update mypy to 1.10.0 ([#5022](https://github.com/cookiecutter/cookiecutter-django/pull/5022))
- Update werkzeug to 3.0.3 ([#5050](https://github.com/cookiecutter/cookiecutter-django/pull/5050))
## 2024.05.11
### Updated
- Update pre-commit to 3.7.1 ([#5066](https://github.com/cookiecutter/cookiecutter-django/pull/5066))
- Auto-update pre-commit hooks ([#5067](https://github.com/cookiecutter/cookiecutter-django/pull/5067))
## 2024.05.10
### Updated
- Update psycopg to 3.1.19 ([#5064](https://github.com/cookiecutter/cookiecutter-django/pull/5064))
- Update django-upgrade to 1.17.0 ([#5065](https://github.com/cookiecutter/cookiecutter-django/pull/5065))
- Auto-update pre-commit hooks ([#5062](https://github.com/cookiecutter/cookiecutter-django/pull/5062))
- Update ruff to 0.4.4 ([#5061](https://github.com/cookiecutter/cookiecutter-django/pull/5061))
## 2024.05.07
### Updated
- Update django to 4.2.13 ([#5058](https://github.com/cookiecutter/cookiecutter-django/pull/5058))
## 2024.05.06
### Fixed
- Fix nginx image name in production.yml ([#5053](https://github.com/cookiecutter/cookiecutter-django/pull/5053))
### Updated
- Update django-model-utils to 4.5.1 ([#5044](https://github.com/cookiecutter/cookiecutter-django/pull/5044))
- Update django to 4.2.12 ([#5056](https://github.com/cookiecutter/cookiecutter-django/pull/5056))
- Update sentry-sdk to 2.1.1 ([#5055](https://github.com/cookiecutter/cookiecutter-django/pull/5055))
- Update ruff to 0.4.3 ([#5049](https://github.com/cookiecutter/cookiecutter-django/pull/5049))
## 2024.05.05
### Updated
- Auto-update pre-commit hooks ([#5046](https://github.com/cookiecutter/cookiecutter-django/pull/5046))
- Update django-storages to 1.14.3 ([#5047](https://github.com/cookiecutter/cookiecutter-django/pull/5047))
- Update coverage to 7.5.1 ([#5048](https://github.com/cookiecutter/cookiecutter-django/pull/5048))
## 2024.04.28
### Updated
- Update pytest to 8.2.0 ([#5034](https://github.com/cookiecutter/cookiecutter-django/pull/5034))
## 2024.04.27
### Updated
- Update sentry-sdk to 2.0.1 ([#5030](https://github.com/cookiecutter/cookiecutter-django/pull/5030))
## 2024.04.26
### Updated
- Auto-update pre-commit hooks ([#5029](https://github.com/cookiecutter/cookiecutter-django/pull/5029))
- Update ruff to 0.4.2 ([#5028](https://github.com/cookiecutter/cookiecutter-django/pull/5028))
## 2024.04.25
### Updated
- Update coverage to 7.5.0 ([#5025](https://github.com/cookiecutter/cookiecutter-django/pull/5025))
- Bump cssnano from 6.1.2 to 7.0.0 ([#5024](https://github.com/cookiecutter/cookiecutter-django/pull/5024))
- Auto-update pre-commit hooks ([#5023](https://github.com/cookiecutter/cookiecutter-django/pull/5023))
## 2024.04.24
### Changed
- Disable UP038 Ruff rule to avoid introducing slower code ([#5020](https://github.com/cookiecutter/cookiecutter-django/pull/5020))
### Updated
- Update django-allauth to 0.62.1 ([#5021](https://github.com/cookiecutter/cookiecutter-django/pull/5021))
## 2024.04.23
### Changed
- Update link to djlint on pyproject.toml ([#5019](https://github.com/cookiecutter/cookiecutter-django/pull/5019))
### Updated
- Update redis to 5.0.4 ([#5018](https://github.com/cookiecutter/cookiecutter-django/pull/5018))
- Update django-allauth to 0.62.0 ([#5016](https://github.com/cookiecutter/cookiecutter-django/pull/5016))
## 2024.04.22
### Fixed
- Fix broken link for sphinx-doc in generated docs ([#5015](https://github.com/cookiecutter/cookiecutter-django/pull/5015))
## 2024.04.20
### Updated
- Auto-update pre-commit hooks ([#5014](https://github.com/cookiecutter/cookiecutter-django/pull/5014))
- Update pytest-xdist to 3.6.0 ([#5013](https://github.com/cookiecutter/cookiecutter-django/pull/5013))
## 2024.04.19
### Updated
- Update ruff to 0.4.1 ([#5011](https://github.com/cookiecutter/cookiecutter-django/pull/5011))
- Update ruff to 0.4.0 ([#5007](https://github.com/cookiecutter/cookiecutter-django/pull/5007))
- Auto-update pre-commit hooks ([#5008](https://github.com/cookiecutter/cookiecutter-django/pull/5008))
- Update sphinx to 7.3.7 ([#5010](https://github.com/cookiecutter/cookiecutter-django/pull/5010))
## 2024.04.18
### Updated
- Update celery to 5.4.0 ([#5005](https://github.com/cookiecutter/cookiecutter-django/pull/5005))
- Update sphinx to 7.3.6 ([#5004](https://github.com/cookiecutter/cookiecutter-django/pull/5004))
## 2024.04.17
### Updated
- Update sphinx to 7.3.5 ([#5003](https://github.com/cookiecutter/cookiecutter-django/pull/5003))
- Update gunicorn to 22.0.0 ([#5001](https://github.com/cookiecutter/cookiecutter-django/pull/5001))
- Update sphinx to 7.3.3 ([#5000](https://github.com/cookiecutter/cookiecutter-django/pull/5000))
## 2024.04.16
### Changed
- Add a prefix setting so that swagger tags are generated in a readable way ([#4975](https://github.com/cookiecutter/cookiecutter-django/pull/4975))
### Fixed
- Fix `runserver_plus` hot-reload when under Windows + Docker ([#4971](https://github.com/cookiecutter/cookiecutter-django/pull/4971))
### Documentation
- Update docs for `test_bare.sh` ([#4996](https://github.com/cookiecutter/cookiecutter-django/pull/4996))
### Updated
- Bump traefik from 2.11.0 to 2.11.2 ([#4993](https://github.com/cookiecutter/cookiecutter-django/pull/4993))
- Update sphinx-autobuild to 2024.4.16 ([#4999](https://github.com/cookiecutter/cookiecutter-django/pull/4999))
- Update sphinx-autobuild to 2024.4.13 ([#4991](https://github.com/cookiecutter/cookiecutter-django/pull/4991))
- Update sentry-sdk to 1.45.0 ([#4982](https://github.com/cookiecutter/cookiecutter-django/pull/4982))
- Update ruff to 0.3.7 ([#4989](https://github.com/cookiecutter/cookiecutter-django/pull/4989))
- Auto-update pre-commit hooks ([#4988](https://github.com/cookiecutter/cookiecutter-django/pull/4988))
## 2024.04.10
### Updated
- Bump python from 3.12.2 to 3.12.3 in docs ([#4979](https://github.com/cookiecutter/cookiecutter-django/pull/4979))
- Bump python from 3.12.2 to 3.12.3 in local ([#4981](https://github.com/cookiecutter/cookiecutter-django/pull/4981))
- Bump python from 3.12.2 to 3.12.3 in production ([#4980](https://github.com/cookiecutter/cookiecutter-django/pull/4980))
## 2024.04.09
### Documentation
- Fix start command for docs ([#4978](https://github.com/cookiecutter/cookiecutter-django/pull/4978))
## 2024.04.07
### Updated
- Auto-update pre-commit hooks ([#4974](https://github.com/cookiecutter/cookiecutter-django/pull/4974))
## 2024.04.06
### Fixed
- Fix syntax error in GitHub CI workflow ([#4972](https://github.com/cookiecutter/cookiecutter-django/pull/4972))
## 2024.04.05
### Updated
- Update django-webpack-loader to 3.1.0 ([#4965](https://github.com/cookiecutter/cookiecutter-django/pull/4965))
## 2024.04.03
### Changed
- Update GH actions to resolve deprecation warnings ([#4964](https://github.com/cookiecutter/cookiecutter-django/pull/4964))
### Updated
- Update sentry-sdk to 1.44.1 ([#4963](https://github.com/cookiecutter/cookiecutter-django/pull/4963))
## 2024.04.02
### Changed
- Change pytest import mode to importlib ([#4950](https://github.com/cookiecutter/cookiecutter-django/pull/4950))
- Use main over master for branch name in deployment-on-heroku instruction ([#4954](https://github.com/cookiecutter/cookiecutter-django/pull/4954))
- change obsolete docker image "docker/compose:1.29.2" to "docker:25.0" ([#4961](https://github.com/cookiecutter/cookiecutter-django/pull/4961))
### Updated
- Update sentry-sdk to 1.44.0 ([#4948](https://github.com/cookiecutter/cookiecutter-django/pull/4948))
- Update ruff to 0.3.5 ([#4955](https://github.com/cookiecutter/cookiecutter-django/pull/4955))
- Update gitpython to 3.1.43 ([#4951](https://github.com/cookiecutter/cookiecutter-django/pull/4951))
- Update pillow to 10.3.0 ([#4953](https://github.com/cookiecutter/cookiecutter-django/pull/4953))
- Update django-model-utils to 4.5.0 ([#4956](https://github.com/cookiecutter/cookiecutter-django/pull/4956))
- Update drf-spectacular to 0.27.2 ([#4957](https://github.com/cookiecutter/cookiecutter-django/pull/4957))
- Update werkzeug to 3.0.2 ([#4958](https://github.com/cookiecutter/cookiecutter-django/pull/4958))
- Auto-update pre-commit hooks ([#4959](https://github.com/cookiecutter/cookiecutter-django/pull/4959))
## 2024.03.29
### Documentation
- Add instruction for adding a django app ([#4944](https://github.com/cookiecutter/cookiecutter-django/pull/4944))
## 2024.03.27
### Updated
- Update pre-commit to 3.7.0 ([#4943](https://github.com/cookiecutter/cookiecutter-django/pull/4943))
- Update djangorestframework to 3.15.1 ([#4941](https://github.com/cookiecutter/cookiecutter-django/pull/4941))
- Update ruff to 0.3.4 ([#4936](https://github.com/cookiecutter/cookiecutter-django/pull/4936))
- Auto-update pre-commit hooks ([#4937](https://github.com/cookiecutter/cookiecutter-django/pull/4937))
## 2024.03.26
### Documentation
- Update mentions of psycopg in comments ([#4947](https://github.com/cookiecutter/cookiecutter-django/pull/4947))
## 2024.03.21
### Changed
- Add PostgreSQL 16, remove Postgres 10 and 11 ([#4935](https://github.com/cookiecutter/cookiecutter-django/pull/4935))
### Updated
- Update uvicorn to 0.29.0 ([#4933](https://github.com/cookiecutter/cookiecutter-django/pull/4933))
- Update sentry-sdk to 1.43.0 ([#4934](https://github.com/cookiecutter/cookiecutter-django/pull/4934))
## 2024.03.19
### Changed
- Add documentation to upgrade Postgres in Docker environment. Fix: #461 ([#4898](https://github.com/cookiecutter/cookiecutter-django/pull/4898))
- Upgrade Python to version 3.12 ([#4930](https://github.com/cookiecutter/cookiecutter-django/pull/4930))
## 2024.03.18
### Changed
- Split the docs from local.yml and build the service in CI ([#4909](https://github.com/cookiecutter/cookiecutter-django/pull/4909))
### Updated
- Update django-anymail to 10.3 ([#4919](https://github.com/cookiecutter/cookiecutter-django/pull/4919))
- Update sentry-sdk to 1.42.0 ([#4921](https://github.com/cookiecutter/cookiecutter-django/pull/4921))
- Update coverage to 7.4.4 ([#4926](https://github.com/cookiecutter/cookiecutter-django/pull/4926))
- Update ruff to 0.3.3 ([#4927](https://github.com/cookiecutter/cookiecutter-django/pull/4927))
- Auto-update pre-commit hooks ([#4928](https://github.com/cookiecutter/cookiecutter-django/pull/4928))
## 2024.03.17
### Updated
- Update djangorestframework to 3.15.0 ([#4929](https://github.com/cookiecutter/cookiecutter-django/pull/4929))
## 2024.03.10
### Updated
- Auto-update pre-commit hooks ([#4912](https://github.com/cookiecutter/cookiecutter-django/pull/4912))
- Update ruff to 0.3.2 ([#4911](https://github.com/cookiecutter/cookiecutter-django/pull/4911))
- Update uvicorn to 0.28.0 ([#4913](https://github.com/cookiecutter/cookiecutter-django/pull/4913))
- Update redis to 5.0.3 ([#4916](https://github.com/cookiecutter/cookiecutter-django/pull/4916))
- Update pytest to 8.1.1 ([#4914](https://github.com/cookiecutter/cookiecutter-django/pull/4914))
## 2024.03.07
### Updated
- Auto-update pre-commit hooks ([#4907](https://github.com/cookiecutter/cookiecutter-django/pull/4907))
- Update sentry-sdk to 1.41.0 ([#4908](https://github.com/cookiecutter/cookiecutter-django/pull/4908))
## 2024.03.06
### Fixed
- Fix fully qualified docker images ([#4905](https://github.com/cookiecutter/cookiecutter-django/pull/4905))
## 2024.03.04
### Updated
- Update pytest to 8.1.0 ([#4900](https://github.com/cookiecutter/cookiecutter-django/pull/4900))
- Update django to 4.2.11 ([#4901](https://github.com/cookiecutter/cookiecutter-django/pull/4901))
## 2024.03.03
### Updated
- Update django-celery-beat to 2.6.0 ([#4899](https://github.com/cookiecutter/cookiecutter-django/pull/4899))
## 2024.03.01
### Changed
- Add a maintainer guide to the docs ([#4884](https://github.com/cookiecutter/cookiecutter-django/pull/4884))
### Updated
- Auto-update pre-commit hooks ([#4897](https://github.com/cookiecutter/cookiecutter-django/pull/4897))
- Update ruff to 0.3.0 ([#4896](https://github.com/cookiecutter/cookiecutter-django/pull/4896))
## 2024.02.28
### Fixed
- Fix invalid HTML in django-allauth field element template ([#4894](https://github.com/cookiecutter/cookiecutter-django/pull/4894))
- Fix permissions for media files when served by nginx ([#4889](https://github.com/cookiecutter/cookiecutter-django/pull/4889))
### Documentation
- Fix broken "Two scoops of django" link in FAQ ([#4892](https://github.com/cookiecutter/cookiecutter-django/pull/4892))
### Updated
- Update redis to 5.0.2 ([#4895](https://github.com/cookiecutter/cookiecutter-django/pull/4895))
- Update sentry-sdk to 1.40.6 ([#4893](https://github.com/cookiecutter/cookiecutter-django/pull/4893))
## 2024.02.26
### Changed
- Allauth elements & MFA ([#4843](https://github.com/cookiecutter/cookiecutter-django/pull/4843))
### Updated
- Update pytest to 8.0.2 ([#4890](https://github.com/cookiecutter/cookiecutter-django/pull/4890))
- Update crispy-bootstrap5 to 2024.2 ([#4891](https://github.com/cookiecutter/cookiecutter-django/pull/4891))
## 2024.02.24
### Updated
- Update coverage to 7.4.3 ([#4888](https://github.com/cookiecutter/cookiecutter-django/pull/4888))
## 2024.02.23
### Changed
- Switch to local imports within app ([#4883](https://github.com/cookiecutter/cookiecutter-django/pull/4883))
- Install ruff extension in `devcontainer.json` ([#4887](https://github.com/cookiecutter/cookiecutter-django/pull/4887))
### Updated
- Bump webpack-dev-server to 5.0.2 ([#4875](https://github.com/cookiecutter/cookiecutter-django/pull/4875))
## 2024.02.21
### Changed
- Switch to `celery.shared_task` to define tasks ([#4881](https://github.com/cookiecutter/cookiecutter-django/pull/4881))
- Replace usages of `get_user_model` by importing model directly ([#4879](https://github.com/cookiecutter/cookiecutter-django/pull/4879))
### Updated
- Auto-update pre-commit hooks ([#4873](https://github.com/cookiecutter/cookiecutter-django/pull/4873))
- Update pre-commit to 3.6.2 ([#4874](https://github.com/cookiecutter/cookiecutter-django/pull/4874))
- Update ruff to 0.2.2 ([#4871](https://github.com/cookiecutter/cookiecutter-django/pull/4871))
## 2024.02.19
### Updated
- Update sentry-sdk to 1.40.5 ([#4876](https://github.com/cookiecutter/cookiecutter-django/pull/4876))
## 2024.02.17
### Updated
- Update pytest to 8.0.1 ([#4870](https://github.com/cookiecutter/cookiecutter-django/pull/4870))
## 2024.02.16
### Changed
- Speed up GitHub CI for Docker setup ([#4863](https://github.com/cookiecutter/cookiecutter-django/pull/4863))
### Documentation
- Add link to the ruff repository in requirements ([#4866](https://github.com/cookiecutter/cookiecutter-django/pull/4866))
## 2024.02.13
### Changed
- Ruff linting & formatting ([#4834](https://github.com/cookiecutter/cookiecutter-django/pull/4834))
### Updated
- Update uvicorn to 0.27.1 ([#4848](https://github.com/cookiecutter/cookiecutter-django/pull/4848))
- Update sentry-sdk to 1.40.4 ([#4858](https://github.com/cookiecutter/cookiecutter-django/pull/4858))
- Bump traefik to 2.11.0 ([#4857](https://github.com/cookiecutter/cookiecutter-django/pull/4857))
- Auto-update pre-commit hooks ([#4855](https://github.com/cookiecutter/cookiecutter-django/pull/4855))
- Update black to 24.2.0 ([#4853](https://github.com/cookiecutter/cookiecutter-django/pull/4853))
## 2024.02.12
### Updated
- Update django-model-utils to 4.4.0 ([#4850](https://github.com/cookiecutter/cookiecutter-django/pull/4850))
- Update pre-commit to 3.6.1 ([#4849](https://github.com/cookiecutter/cookiecutter-django/pull/4849))
- Update django-upgrade to 1.16.0 ([#4851](https://github.com/cookiecutter/cookiecutter-django/pull/4851))
- Auto-update pre-commit hooks ([#4852](https://github.com/cookiecutter/cookiecutter-django/pull/4852))
## 2024.02.09
### Updated
- Update sentry-sdk to 1.40.3 ([#4847](https://github.com/cookiecutter/cookiecutter-django/pull/4847))
- Update django-allauth to 0.61.1 ([#4846](https://github.com/cookiecutter/cookiecutter-django/pull/4846))
- Update python-slugify to 8.0.4 ([#4844](https://github.com/cookiecutter/cookiecutter-django/pull/4844))
## 2024.02.08
### Updated
- Bump python to 3.11.8 in compose/local/docs ([#4840](https://github.com/cookiecutter/cookiecutter-django/pull/4840))
- Bump python to 3.11.8 in compose/local/django ([#4841](https://github.com/cookiecutter/cookiecutter-django/pull/4841))
- Bump python to 3.11.8 in compose/production/django ([#4842](https://github.com/cookiecutter/cookiecutter-django/pull/4842))
## 2024.02.07
### Changed
- Extend docker test with deploy check ([#4838](https://github.com/cookiecutter/cookiecutter-django/pull/4838))
- Generic UserManager ([#4836](https://github.com/cookiecutter/cookiecutter-django/pull/4836))
### Updated
- Update django-allauth to 0.61.0 ([#4839](https://github.com/cookiecutter/cookiecutter-django/pull/4839))
- Bump gulp-postcss to 10.0.0 ([#4835](https://github.com/cookiecutter/cookiecutter-django/pull/4835))
- Update sentry-sdk to 1.40.2 ([#4837](https://github.com/cookiecutter/cookiecutter-django/pull/4837))
- Update django to 4.2.10 ([#4833](https://github.com/cookiecutter/cookiecutter-django/pull/4833))
## 2024.02.05
### Updated
- Update pytest to 8.0.0 ([#4813](https://github.com/cookiecutter/cookiecutter-django/pull/4813))
- Update pytest-sugar to 1.0.0 ([#4828](https://github.com/cookiecutter/cookiecutter-django/pull/4828))
- Update sphinx-autobuild to 2024.2.4 ([#4830](https://github.com/cookiecutter/cookiecutter-django/pull/4830))
- Update django-debug-toolbar to 4.3.0 ([#4829](https://github.com/cookiecutter/cookiecutter-django/pull/4829))
- Update psycopg to 3.1.18 ([#4831](https://github.com/cookiecutter/cookiecutter-django/pull/4831))
## 2024.01.31
### Updated
- Update python-slugify to 8.0.3 ([#4826](https://github.com/cookiecutter/cookiecutter-django/pull/4826))
## 2024.01.30
### Updated
- Update pytest-django to 4.8.0 ([#4823](https://github.com/cookiecutter/cookiecutter-django/pull/4823))
- Update sentry-sdk to 1.40.0 ([#4822](https://github.com/cookiecutter/cookiecutter-django/pull/4822))
- Update uvicorn to 0.27.0.post1 ([#4818](https://github.com/cookiecutter/cookiecutter-django/pull/4818))
## 2024.01.29
### Changed
- Fix deprecation warning about renaming of `webpack_loader.loader` to `webpack_loader.loaders` ([#4815](https://github.com/cookiecutter/cookiecutter-django/pull/4815))
### Documentation
- Update mention of coverage config file to `pyproject.toml` in documentation ([#4816](https://github.com/cookiecutter/cookiecutter-django/pull/4816))
### Updated
- Update black to 24.1.1 ([#4814](https://github.com/cookiecutter/cookiecutter-django/pull/4814))
- Auto-update pre-commit hooks ([#4817](https://github.com/cookiecutter/cookiecutter-django/pull/4817))
## 2024.01.27
### Changed
- Do not show webpack devserver overlay for warnings ([#4809](https://github.com/cookiecutter/cookiecutter-django/pull/4809))
### Updated
- Update python-slugify to 8.0.2 ([#4805](https://github.com/cookiecutter/cookiecutter-django/pull/4805))
- Update coverage to 7.4.1 ([#4807](https://github.com/cookiecutter/cookiecutter-django/pull/4807))
## 2024.01.26
### Updated
- Update black to 24.1.0 ([#4806](https://github.com/cookiecutter/cookiecutter-django/pull/4806))
## 2024.01.25
### Changed
- Replace custom static & media storage classes by passing options in the `STORAGES` setting ([#4803](https://github.com/cookiecutter/cookiecutter-django/pull/4803))
- Add registry to Docker images names ([#4804](https://github.com/cookiecutter/cookiecutter-django/pull/4804))
## 2024.01.24
### Changed
- Migrate to the unified `STORAGES` setting added in Django 4.2 ([#4477](https://github.com/cookiecutter/cookiecutter-django/pull/4477))
### Updated
- Update uvicorn to 0.27.0 ([#4800](https://github.com/cookiecutter/cookiecutter-django/pull/4800))
## 2024.01.21
### Documentation
- Update traefik doc links ([#4798](https://github.com/cookiecutter/cookiecutter-django/pull/4798))
### Updated
- Bump browser-sync from 2.29.3 to 3.0.2 in /{{cookiecutter.project_slug}} ([#4765](https://github.com/cookiecutter/cookiecutter-django/pull/4765))
## 2024.01.19
### Updated
- Update drf-spectacular to 0.27.1 ([#4797](https://github.com/cookiecutter/cookiecutter-django/pull/4797))
## 2024.01.17
### Changed
- Add a test to cover `DJANGO_ADMIN_FORCE_ALLAUTH` ([#4790](https://github.com/cookiecutter/cookiecutter-django/pull/4790))
### Updated
- Bump webpack-bundle-tracker to 3.0.1 ([#4781](https://github.com/cookiecutter/cookiecutter-django/pull/4781))
- Update django-webpack-loader to 3.0.1 ([#4793](https://github.com/cookiecutter/cookiecutter-django/pull/4793))
- Bump postcss-loader to 8.0.0 ([#4795](https://github.com/cookiecutter/cookiecutter-django/pull/4795))
- Update uvicorn to 0.26.0 ([#4794](https://github.com/cookiecutter/cookiecutter-django/pull/4794))
## 2024.01.16
### Updated
- Bump sass-loader from 13.3.3 to 14.0.0 in /{{cookiecutter.project_slug}} ([#4791](https://github.com/cookiecutter/cookiecutter-django/pull/4791))
## 2024.01.15
### Documentation
- Update allauth documentation links ([#4786](https://github.com/cookiecutter/cookiecutter-django/pull/4786))
### Updated
- Update django-allauth to 0.60.1 ([#4787](https://github.com/cookiecutter/cookiecutter-django/pull/4787))
## 2024.01.11
### Updated
- Update jinja2 to 3.1.3 ([#4784](https://github.com/cookiecutter/cookiecutter-django/pull/4784))
## 2024.01.10
### Updated
- Update sentry-sdk to 1.39.2 ([#4782](https://github.com/cookiecutter/cookiecutter-django/pull/4782))
## 2024.01.09
### Documentation
- Update allauth settings documentation links ([#4769](https://github.com/cookiecutter/cookiecutter-django/pull/4769))
### Updated
- Update django-allauth to 0.60.0 ([#4776](https://github.com/cookiecutter/cookiecutter-django/pull/4776))
- Update psycopg to 3.1.17 ([#4777](https://github.com/cookiecutter/cookiecutter-django/pull/4777))
## 2024.01.05
### Updated
- Auto-update pre-commit hooks ([#4774](https://github.com/cookiecutter/cookiecutter-django/pull/4774))
- Update flake8 to 7.0.0 ([#4775](https://github.com/cookiecutter/cookiecutter-django/pull/4775))
## 2024.01.02
### Updated
- Update psycopg to 3.1.16 ([#4753](https://github.com/cookiecutter/cookiecutter-django/pull/4753))
- Update djlint to 1.34.1 ([#4773](https://github.com/cookiecutter/cookiecutter-django/pull/4773))
- Update uvicorn to 0.25.0 ([#4760](https://github.com/cookiecutter/cookiecutter-django/pull/4760))
- Auto-update pre-commit hooks ([#4749](https://github.com/cookiecutter/cookiecutter-django/pull/4749))
- Update black to 23.12.1 ([#4772](https://github.com/cookiecutter/cookiecutter-django/pull/4772))
- Update pillow to 10.2.0 ([#4770](https://github.com/cookiecutter/cookiecutter-django/pull/4770))
- Update django to 4.2.9 ([#4771](https://github.com/cookiecutter/cookiecutter-django/pull/4771))
- Update pytest to 7.4.4 ([#4767](https://github.com/cookiecutter/cookiecutter-django/pull/4767))
- Update coverage to 7.4.0 ([#4764](https://github.com/cookiecutter/cookiecutter-django/pull/4764))
## 2023.12.19
### Changed
- Upgrade debian to 12 bookworm ([#4745](https://github.com/cookiecutter/cookiecutter-django/pull/4745))
### Updated
- Update hiredis to 2.3.2 ([#4750](https://github.com/cookiecutter/cookiecutter-django/pull/4750))
## 2023.12.15
### Updated
- Update coverage to 7.3.3 ([#4748](https://github.com/cookiecutter/cookiecutter-django/pull/4748))
- Update psycopg to 3.1.15 ([#4747](https://github.com/cookiecutter/cookiecutter-django/pull/4747))
- Update sentry-sdk to 1.39.1 ([#4746](https://github.com/cookiecutter/cookiecutter-django/pull/4746))
- Auto-update pre-commit hooks ([#4743](https://github.com/cookiecutter/cookiecutter-django/pull/4743))
## 2023.12.13
### Updated
- Auto-update pre-commit hooks ([#4740](https://github.com/cookiecutter/cookiecutter-django/pull/4740))
## 2023.12.12
### Updated
- Update django-allauth to 0.59.0 ([#4739](https://github.com/cookiecutter/cookiecutter-django/pull/4739))
- Update sentry-sdk to 1.39.0 ([#4738](https://github.com/cookiecutter/cookiecutter-django/pull/4738))
- Update black to 23.12.0 ([#4737](https://github.com/cookiecutter/cookiecutter-django/pull/4737))
- Auto-update pre-commit hooks ([#4736](https://github.com/cookiecutter/cookiecutter-django/pull/4736))
- Update drf-spectacular to 0.27.0 ([#4735](https://github.com/cookiecutter/cookiecutter-django/pull/4735))
## 2023.12.11
### Updated
- Auto-update pre-commit hooks ([#4730](https://github.com/cookiecutter/cookiecutter-django/pull/4730))
## 2023.12.10
### Updated
- Update pre-commit to 3.6.0 ([#4728](https://github.com/cookiecutter/cookiecutter-django/pull/4728))
- Auto-update pre-commit hooks ([#4729](https://github.com/cookiecutter/cookiecutter-django/pull/4729))
## 2023.12.09
### Changed
- Add missing __init__.py file to api module ([#4726](https://github.com/cookiecutter/cookiecutter-django/pull/4726))
## 2023.12.07
### Updated
- Bump actions/setup-python from 4 to 5 ([#4723](https://github.com/cookiecutter/cookiecutter-django/pull/4723))
- Auto-update pre-commit hooks ([#4709](https://github.com/cookiecutter/cookiecutter-django/pull/4709))
- Bump traefik from 2.10.6 to 2.10.7 ([#4722](https://github.com/cookiecutter/cookiecutter-django/pull/4722))
## 2023.12.06
### Updated
- Bump python from 3.11.6 to 3.11.7 ([#4719](https://github.com/cookiecutter/cookiecutter-django/pull/4719))
- Update mypy to 1.7.1, django-stubs to 4.2.7 and djangorestframework-stubs to 3.14.5 ([#4694](https://github.com/cookiecutter/cookiecutter-django/pull/4694))
## 2023.12.04
### Updated
- Update django to 4.2.8 ([#4713](https://github.com/cookiecutter/cookiecutter-django/pull/4713))
- Bump node from 18 to 20 ([#4283](https://github.com/cookiecutter/cookiecutter-django/pull/4283))
- Update psycopg to 3.1.14 ([#4711](https://github.com/cookiecutter/cookiecutter-django/pull/4711))
## 2023.12.02
### Updated
- Update mailpit to latest ([#4710](https://github.com/cookiecutter/cookiecutter-django/pull/4710))
## 2023.11.30
### Fixed
- Removed tmp mount in devcontainer.json. Fix #4686 ([#4708](https://github.com/cookiecutter/cookiecutter-django/pull/4708))
### Updated
- Bump traefik from 2.10.5 to 2.10.6 ([#4706](https://github.com/cookiecutter/cookiecutter-django/pull/4706))
## 2023.11.29
### Updated
- Update sentry-sdk to 1.38.0 ([#4705](https://github.com/cookiecutter/cookiecutter-django/pull/4705))
## 2023.11.28
### Fixed
- Excludes devcontainer.json from the pre-commit ([#4702](https://github.com/cookiecutter/cookiecutter-django/pull/4702))
### Updated
- Update sphinx-rtd-theme to 2.0.0 ([#4700](https://github.com/cookiecutter/cookiecutter-django/pull/4700))
## 2023.11.24
### Updated
- Update sentry-sdk to 1.37.1 ([#4696](https://github.com/cookiecutter/cookiecutter-django/pull/4696))
- Update sentry-sdk to 1.37.0 ([#4695](https://github.com/cookiecutter/cookiecutter-django/pull/4695))
## 2023.11.22
### Updated
- Update celery to 5.3.6 ([#4693](https://github.com/cookiecutter/cookiecutter-django/pull/4693))
## 2023.11.21
### Updated
- Update sentry-sdk to 1.36.0 ([#4687](https://github.com/cookiecutter/cookiecutter-django/pull/4687))
## 2023.11.20
### Fixed
- Fix bug with social account adapter name override, in very specific conditions ([#4650](https://github.com/cookiecutter/cookiecutter-django/pull/4650))
### Updated
- Update django-cors-headers to 4.3.1 ([#4684](https://github.com/cookiecutter/cookiecutter-django/pull/4684))
- Update psycopg to 3.1.13 ([#4685](https://github.com/cookiecutter/cookiecutter-django/pull/4685))
## 2023.11.14
### Updated
- Update sentry-sdk to 1.35.0 ([#4681](https://github.com/cookiecutter/cookiecutter-django/pull/4681))
- Auto-update pre-commit hooks ([#4683](https://github.com/cookiecutter/cookiecutter-django/pull/4683))
## 2023.11.11
### Updated
- Update celery to 5.3.5 ([#4678](https://github.com/cookiecutter/cookiecutter-django/pull/4678))
## 2023.11.09
### Updated
- Auto-update pre-commit hooks ([#4673](https://github.com/cookiecutter/cookiecutter-django/pull/4673))
- Update black to 23.11.0 ([#4674](https://github.com/cookiecutter/cookiecutter-django/pull/4674))
## 2023.11.08
### Updated
- Update pytest-django to 4.7.0 ([#4672](https://github.com/cookiecutter/cookiecutter-django/pull/4672))
## 2023.11.06
### Changed
- Add `rmbackup` script to remove backups from `postgres/backups`. Fixes: #4663 ([#4664](https://github.com/cookiecutter/cookiecutter-django/pull/4664))
### Updated
- Update django-allauth to 0.58.2 ([#4667](https://github.com/cookiecutter/cookiecutter-django/pull/4667))
- Update uvicorn to 0.24.0.post1 ([#4666](https://github.com/cookiecutter/cookiecutter-django/pull/4666))
## 2023.11.04
### Updated
- Update uvicorn to 0.24.0 ([#4665](https://github.com/cookiecutter/cookiecutter-django/pull/4665))
## 2023.11.03
### Updated
- Update flake8-isort to 6.1.1 ([#4662](https://github.com/cookiecutter/cookiecutter-django/pull/4662))
## 2023.11.02
### Updated
- Update sentry-sdk to 1.34.0 ([#4660](https://github.com/cookiecutter/cookiecutter-django/pull/4660))
## 2023.11.01
### Updated
- Update django to 4.2.7 ([#4658](https://github.com/cookiecutter/cookiecutter-django/pull/4658))
- Update django-stubs to 4.2.6 ([#4657](https://github.com/cookiecutter/cookiecutter-django/pull/4657))
## 2023.10.31
### Updated
- Update pytest-django to 4.6.0 ([#4656](https://github.com/cookiecutter/cookiecutter-django/pull/4656))
- Update pytest to 7.4.3 ([#4654](https://github.com/cookiecutter/cookiecutter-django/pull/4654))
- Update werkzeug to 3.0.1 ([#4655](https://github.com/cookiecutter/cookiecutter-django/pull/4655))
- Update sentry-sdk to 1.33.1 ([#4653](https://github.com/cookiecutter/cookiecutter-django/pull/4653))
- Update sentry-sdk to 1.33.0 ([#4652](https://github.com/cookiecutter/cookiecutter-django/pull/4652))
- Update crispy-bootstrap5 to 2023.10 ([#4651](https://github.com/cookiecutter/cookiecutter-django/pull/4651))
## 2023.10.26
### Updated
- Update django-anymail to 10.2 ([#4645](https://github.com/cookiecutter/cookiecutter-django/pull/4645))
## 2023.10.24
### Updated
- Update black to 23.10.1 ([#4639](https://github.com/cookiecutter/cookiecutter-django/pull/4639))
- Auto-update pre-commit hooks ([#4641](https://github.com/cookiecutter/cookiecutter-django/pull/4641))
## 2023.10.23
### Updated
- Update pylint-django to 2.5.5 ([#4638](https://github.com/cookiecutter/cookiecutter-django/pull/4638))
## 2023.10.19
### Updated
- Update mypy to 1.6.1 ([#4634](https://github.com/cookiecutter/cookiecutter-django/pull/4634))
- Update djangorestframework-stubs to 3.14.4 ([#4637](https://github.com/cookiecutter/cookiecutter-django/pull/4637))
- Update django-stubs to 4.2.5 ([#4636](https://github.com/cookiecutter/cookiecutter-django/pull/4636))
## 2023.10.17
### Updated
- Auto-update pre-commit hooks ([#4633](https://github.com/cookiecutter/cookiecutter-django/pull/4633))
- Update black to 23.10.0 ([#4632](https://github.com/cookiecutter/cookiecutter-django/pull/4632))
- Update pillow to 10.1.0 ([#4630](https://github.com/cookiecutter/cookiecutter-django/pull/4630))
- Update django-crispy-forms to 2.1 ([#4629](https://github.com/cookiecutter/cookiecutter-django/pull/4629))
## 2023.10.13
### Updated
- Update pre-commit to 3.5.0 ([#4628](https://github.com/cookiecutter/cookiecutter-django/pull/4628))
- Update watchfiles to 0.21.0 ([#4627](https://github.com/cookiecutter/cookiecutter-django/pull/4627))
## 2023.10.12
### Updated
- Update django-cors-headers to 4.3.0 ([#4625](https://github.com/cookiecutter/cookiecutter-django/pull/4625))
- Update whitenoise to 6.6.0 ([#4624](https://github.com/cookiecutter/cookiecutter-django/pull/4624))
- Update sentry-sdk to 1.32.0 ([#4623](https://github.com/cookiecutter/cookiecutter-django/pull/4623))
- Bump traefik from 2.10.4 to 2.10.5 ([#4626](https://github.com/cookiecutter/cookiecutter-django/pull/4626))
## 2023.10.09
### Updated
- Bump stefanzweifel/git-auto-commit-action from 4.16.0 to 5.0.0 ([#4621](https://github.com/cookiecutter/cookiecutter-django/pull/4621))
- Update django-storages to 1.14.2 ([#4620](https://github.com/cookiecutter/cookiecutter-django/pull/4620))
## 2023.10.08
### Updated
- Auto-update pre-commit hooks ([#4619](https://github.com/cookiecutter/cookiecutter-django/pull/4619))
## 2023.10.05
### Updated
- Update djangorestframework-stubs to 3.14.3 ([#4618](https://github.com/cookiecutter/cookiecutter-django/pull/4618))
- Update django-stubs to 4.2.4 ([#4566](https://github.com/cookiecutter/cookiecutter-django/pull/4566))
- Update mypy to 1.5.1 ([#4568](https://github.com/cookiecutter/cookiecutter-django/pull/4568))
## 2023.10.04
### Updated
- Update django to 4.2.6 ([#4617](https://github.com/cookiecutter/cookiecutter-django/pull/4617))
- Update coverage to 7.3.2 ([#4616](https://github.com/cookiecutter/cookiecutter-django/pull/4616))
- Update werkzeug to 3.0.0 ([#4608](https://github.com/cookiecutter/cookiecutter-django/pull/4608))
- Update django-redis to 5.4.0 ([#4609](https://github.com/cookiecutter/cookiecutter-django/pull/4609))
- Bump docs Python docker image from 3.11.5 to 3.11.6 ([#4615](https://github.com/cookiecutter/cookiecutter-django/pull/4615))
## 2023.10.03
### Changed
- [pre-commit.ci] pre-commit autoupdate ([#4613](https://github.com/cookiecutter/cookiecutter-django/pull/4613))
### Updated
- Bump prod Python docker image from 3.11.5 to 3.11.6 ([#4611](https://github.com/cookiecutter/cookiecutter-django/pull/4611))
- Bump local Python docker image from 3.11.5 to 3.11.6 ([#4612](https://github.com/cookiecutter/cookiecutter-django/pull/4612))
- Auto-update pre-commit hooks ([#4610](https://github.com/cookiecutter/cookiecutter-django/pull/4610))
## 2023.09.29
### Updated
- Update django-storages to 1.14.1 ([#4604](https://github.com/cookiecutter/cookiecutter-django/pull/4604))
## 2023.09.28
### Updated
- Update psycopg to
gitextract_c7d8xipx/
├── .editorconfig
├── .gitattributes
├── .github/
│ ├── CONTRIBUTORS-template.md
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug.md
│ │ ├── feature.md
│ │ ├── paid-support.md
│ │ └── question.md
│ ├── PULL_REQUEST_TEMPLATE.md
│ ├── changelog-template.md
│ ├── contributors.json
│ ├── dependabot.yml
│ └── workflows/
│ ├── align-versions.yml
│ ├── ci.yml
│ ├── dependabot-uv-lock.yml
│ ├── django-issue-checker.yml
│ ├── issue-manager.yml
│ ├── pre-commit-autoupdate.yml
│ ├── update-changelog.yml
│ └── update-contributors.yml
├── .gitignore
├── .pre-commit-config.yaml
├── .pyup.yml
├── .readthedocs.yaml
├── AGENTS.md
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── CONTRIBUTORS.md
├── LICENSE
├── README.md
├── cookiecutter.json
├── docs/
│ ├── 1-getting-started/
│ │ ├── project-generation-options.rst
│ │ └── settings.rst
│ ├── 2-local-development/
│ │ ├── developing-locally-docker.rst
│ │ ├── developing-locally.rst
│ │ └── generate-project-block.rst
│ ├── 3-deployment/
│ │ ├── deployment-on-heroku.rst
│ │ ├── deployment-on-pythonanywhere.rst
│ │ └── deployment-with-docker.rst
│ ├── 4-guides/
│ │ ├── docker-postgres-backups.rst
│ │ ├── document.rst
│ │ ├── linters.rst
│ │ ├── testing.rst
│ │ └── websocket.rst
│ ├── 5-help/
│ │ ├── faq.rst
│ │ └── troubleshooting.rst
│ ├── 6-about/
│ │ ├── contributing.md
│ │ ├── generative-ai.md
│ │ └── maintainer-guide.md
│ ├── Makefile
│ ├── __init__.py
│ ├── _static/
│ │ └── .gitkeep
│ ├── conf.py
│ ├── includes/
│ │ └── mailgun.rst
│ ├── index.rst
│ └── make.bat
├── hooks/
│ ├── __init__.py
│ ├── post_gen_project.py
│ └── pre_gen_project.py
├── pyproject.toml
├── scripts/
│ ├── __init__.py
│ ├── create_django_issue.py
│ ├── node_version.py
│ ├── ruff_version.py
│ ├── update_changelog.py
│ └── update_contributors.py
├── tests/
│ ├── __init__.py
│ ├── test_bare.sh
│ ├── test_cookiecutter_generation.py
│ ├── test_docker.sh
│ └── test_hooks.py
├── tox.ini
└── {{cookiecutter.project_slug}}/
├── .devcontainer/
│ ├── bash_history
│ ├── bashrc.override.sh
│ └── devcontainer.json
├── .dockerignore
├── .drone.yml
├── .editorconfig
├── .envs/
│ ├── .local/
│ │ ├── .django
│ │ └── .postgres
│ └── .production/
│ ├── .django
│ └── .postgres
├── .gitattributes
├── .github/
│ ├── dependabot.yml
│ └── workflows/
│ └── ci.yml
├── .gitignore
├── .gitlab-ci.yml
├── .pre-commit-config.yaml
├── .readthedocs.yml
├── .travis.yml
├── CONTRIBUTORS.txt
├── COPYING
├── LICENSE
├── Procfile
├── README.md
├── bin/
│ └── post_compile
├── compose/
│ ├── local/
│ │ ├── django/
│ │ │ ├── Dockerfile
│ │ │ ├── celery/
│ │ │ │ ├── beat/
│ │ │ │ │ └── start
│ │ │ │ ├── flower/
│ │ │ │ │ └── start
│ │ │ │ └── worker/
│ │ │ │ └── start
│ │ │ └── start
│ │ ├── docs/
│ │ │ ├── Dockerfile
│ │ │ └── start
│ │ ├── node/
│ │ │ └── Dockerfile
│ │ └── uv/
│ │ └── Dockerfile
│ └── production/
│ ├── aws/
│ │ ├── Dockerfile
│ │ └── maintenance/
│ │ ├── download
│ │ └── upload
│ ├── django/
│ │ ├── Dockerfile
│ │ ├── celery/
│ │ │ ├── beat/
│ │ │ │ └── start
│ │ │ ├── flower/
│ │ │ │ └── start
│ │ │ └── worker/
│ │ │ └── start
│ │ ├── entrypoint
│ │ └── start
│ ├── nginx/
│ │ ├── Dockerfile
│ │ └── default.conf
│ ├── postgres/
│ │ ├── Dockerfile
│ │ └── maintenance/
│ │ ├── _sourced/
│ │ │ ├── constants.sh
│ │ │ ├── countdown.sh
│ │ │ ├── messages.sh
│ │ │ └── yes_no.sh
│ │ ├── backup
│ │ ├── backups
│ │ ├── restore
│ │ └── rmbackup
│ └── traefik/
│ ├── Dockerfile
│ └── traefik.yml
├── config/
│ ├── __init__.py
│ ├── api.py
│ ├── api_router.py
│ ├── asgi.py
│ ├── celery_app.py
│ ├── settings/
│ │ ├── __init__.py
│ │ ├── base.py
│ │ ├── local.py
│ │ ├── production.py
│ │ └── test.py
│ ├── urls.py
│ ├── websocket.py
│ └── wsgi.py
├── docker-compose.docs.yml
├── docker-compose.local.yml
├── docker-compose.production.yml
├── docs/
│ ├── Makefile
│ ├── __init__.py
│ ├── conf.py
│ ├── howto.rst
│ ├── index.rst
│ ├── make.bat
│ ├── pycharm/
│ │ └── configuration.rst
│ └── users.rst
├── gulpfile.mjs
├── justfile
├── locale/
│ ├── README.md
│ ├── en_US/
│ │ └── LC_MESSAGES/
│ │ └── django.po
│ ├── fr_FR/
│ │ └── LC_MESSAGES/
│ │ └── django.po
│ └── pt_BR/
│ └── LC_MESSAGES/
│ └── django.po
├── manage.py
├── merge_production_dotenvs_in_dotenv.py
├── package.json
├── pyproject.toml
├── requirements/
│ ├── base.txt
│ ├── local.txt
│ └── production.txt
├── tests/
│ ├── __init__.py
│ └── test_merge_production_dotenvs_in_dotenv.py
├── utility/
│ ├── install_os_dependencies.sh
│ ├── install_python_dependencies.sh
│ ├── requirements-bionic.apt
│ ├── requirements-bookworm.apt
│ ├── requirements-bullseye.apt
│ ├── requirements-buster.apt
│ ├── requirements-focal.apt
│ ├── requirements-jammy.apt
│ ├── requirements-jessie.apt
│ ├── requirements-noble.apt
│ ├── requirements-stretch.apt
│ ├── requirements-trusty.apt
│ └── requirements-xenial.apt
├── webpack/
│ ├── common.config.js
│ ├── dev.config.js
│ └── prod.config.js
└── {{cookiecutter.project_slug}}/
├── __init__.py
├── conftest.py
├── contrib/
│ ├── __init__.py
│ └── sites/
│ ├── __init__.py
│ └── migrations/
│ ├── 0001_initial.py
│ ├── 0002_alter_domain_unique.py
│ ├── 0003_set_site_domain_and_name.py
│ ├── 0004_alter_options_ordering_domain.py
│ └── __init__.py
├── static/
│ ├── fonts/
│ │ └── .gitkeep
│ ├── js/
│ │ └── project.js
│ └── sass/
│ ├── custom_bootstrap_vars.scss
│ └── project.scss
├── templates/
│ ├── 403.html
│ ├── 403_csrf.html
│ ├── 404.html
│ ├── 500.html
│ ├── account/
│ │ └── base_manage_password.html
│ ├── allauth/
│ │ ├── elements/
│ │ │ ├── alert.html
│ │ │ ├── badge.html
│ │ │ ├── button.html
│ │ │ ├── field.html
│ │ │ ├── fields.html
│ │ │ ├── panel.html
│ │ │ └── table.html
│ │ └── layouts/
│ │ ├── entrance.html
│ │ └── manage.html
│ ├── base.html
│ ├── pages/
│ │ ├── about.html
│ │ └── home.html
│ └── users/
│ ├── user_detail.html
│ └── user_form.html
└── users/
├── __init__.py
├── adapters.py
├── admin.py
├── api/
│ ├── __init__.py
│ ├── schema.py
│ ├── serializers.py
│ └── views.py
├── apps.py
├── context_processors.py
├── forms.py
├── managers.py
├── migrations/
│ ├── 0001_initial.py
│ └── __init__.py
├── models.py
├── tasks.py
├── tests/
│ ├── __init__.py
│ ├── api/
│ │ ├── __init__.py
│ │ ├── test_openapi.py
│ │ ├── test_urls.py
│ │ └── test_views.py
│ ├── factories.py
│ ├── test_admin.py
│ ├── test_forms.py
│ ├── test_managers.py
│ ├── test_models.py
│ ├── test_tasks.py
│ ├── test_urls.py
│ └── test_views.py
├── urls.py
└── views.py
SYMBOL INDEX (237 symbols across 44 files)
FILE: hooks/post_gen_project.py
function remove_open_source_files (line 28) | def remove_open_source_files():
function remove_gplv3_files (line 34) | def remove_gplv3_files():
function remove_custom_user_manager_files (line 40) | def remove_custom_user_manager_files():
function remove_pycharm_files (line 46) | def remove_pycharm_files():
function remove_docker_files (line 56) | def remove_docker_files():
function remove_nginx_docker_files (line 74) | def remove_nginx_docker_files():
function remove_utility_files (line 78) | def remove_utility_files():
function remove_heroku_files (line 82) | def remove_heroku_files():
function remove_sass_files (line 92) | def remove_sass_files():
function remove_gulp_files (line 96) | def remove_gulp_files():
function remove_webpack_files (line 102) | def remove_webpack_files():
function remove_vendors_js (line 107) | def remove_vendors_js():
function remove_project_css (line 113) | def remove_project_css():
function remove_packagejson_file (line 119) | def remove_packagejson_file():
function update_package_json (line 125) | def update_package_json(remove_dev_deps=None, remove_keys=None, scripts=...
function handle_js_runner (line 140) | def handle_js_runner(choice, use_docker, use_async):
function remove_prettier_pre_commit (line 200) | def remove_prettier_pre_commit():
function remove_repo_from_pre_commit_config (line 204) | def remove_repo_from_pre_commit_config(repo_to_remove: str):
function remove_celery_files (line 221) | def remove_celery_files():
function remove_async_files (line 231) | def remove_async_files():
function remove_dottravisyml_file (line 240) | def remove_dottravisyml_file():
function remove_dotgitlabciyml_file (line 244) | def remove_dotgitlabciyml_file():
function remove_dotgithub_folder (line 248) | def remove_dotgithub_folder():
function remove_dotdrone_file (line 252) | def remove_dotdrone_file():
function generate_random_string (line 256) | def generate_random_string(length, using_digits=False, using_ascii_lette...
function set_flag (line 279) | def set_flag(file_path: Path, flag, value=None, formatted=None, *args, *...
function set_django_secret_key (line 301) | def set_django_secret_key(file_path: Path):
function set_django_admin_url (line 311) | def set_django_admin_url(file_path: Path):
function generate_random_user (line 322) | def generate_random_user():
function generate_postgres_user (line 326) | def generate_postgres_user(debug=False): # noqa: FBT002
function set_postgres_user (line 330) | def set_postgres_user(file_path, value):
function set_postgres_password (line 334) | def set_postgres_password(file_path, value=None):
function set_celery_flower_user (line 345) | def set_celery_flower_user(file_path, value):
function set_celery_flower_password (line 349) | def set_celery_flower_password(file_path, value=None):
function append_to_gitignore_file (line 360) | def append_to_gitignore_file(ignored_line):
function set_flags_in_envs (line 366) | def set_flags_in_envs(postgres_user, celery_flower_user, debug=False): ...
function set_flags_in_settings_files (line 386) | def set_flags_in_settings_files():
function remove_envs_and_associated_files (line 391) | def remove_envs_and_associated_files():
function remove_celery_compose_dirs (line 397) | def remove_celery_compose_dirs():
function remove_node_dockerfile (line 402) | def remove_node_dockerfile():
function remove_aws_dockerfile (line 406) | def remove_aws_dockerfile():
function remove_drf_starter_files (line 410) | def remove_drf_starter_files():
function remove_ninja_starter_files (line 415) | def remove_ninja_starter_files():
function remove_rest_api_files (line 420) | def remove_rest_api_files():
function main (line 427) | def main(): # noqa: C901, PLR0912, PLR0915
function setup_dependencies (line 530) | def setup_dependencies():
FILE: scripts/create_django_issue.py
class DjVersion (line 35) | class DjVersion(NamedTuple):
method __str__ (line 45) | def __str__(self) -> str:
method parse (line 50) | def parse(cls, version_str: str) -> DjVersion:
method parse_to_tuple (line 56) | def parse_to_tuple(cls, version_str: str):
function get_package_info (line 61) | def get_package_info(package: str) -> dict:
function get_django_versions (line 71) | def get_django_versions() -> Iterable[DjVersion]:
function get_name_and_version (line 81) | def get_name_and_version(requirements_line: str) -> tuple[str, ...]:
function get_all_latest_django_versions (line 88) | def get_all_latest_django_versions(
class GitHubManager (line 133) | class GitHubManager:
method __init__ (line 134) | def __init__(self, base_dj_version: DjVersion, needed_dj_versions: lis...
method setup (line 150) | def setup(self) -> None:
method load_requirements (line 154) | def load_requirements(self):
method load_existing_issues (line 172) | def load_existing_issues(self):
method get_compatibility (line 194) | def get_compatibility(self, package_name: str, package_info: dict, nee...
method _get_md_home_page_url (line 243) | def _get_md_home_page_url(self, package_info: dict):
method generate_markdown (line 250) | def generate_markdown(self, needed_dj_version: DjVersion):
method create_or_edit_issue (line 266) | def create_or_edit_issue(self, needed_dj_version: DjVersion, descripti...
method close_issue (line 276) | def close_issue(issue: Issue):
method generate (line 280) | def generate(self):
function main (line 288) | def main(django_max_version=None) -> None:
FILE: scripts/node_version.py
function main (line 13) | def main() -> None:
function get_version_from_dockerfile (line 21) | def get_version_from_dockerfile() -> str:
function get_version_from_package_json (line 34) | def get_version_from_package_json() -> str:
function update_package_json_version (line 39) | def update_package_json_version(old_version: str, new_version: str) -> N...
function update_production_node_version (line 48) | def update_production_node_version(old_version: str, new_version: str) -...
FILE: scripts/ruff_version.py
function main (line 16) | def main() -> None:
function get_requirements_txt_version (line 26) | def get_requirements_txt_version() -> str:
function get_pyproject_toml_version (line 34) | def get_pyproject_toml_version() -> str:
function update_ruff_version (line 42) | def update_ruff_version(old_version: str, new_version: str) -> None:
FILE: scripts/update_changelog.py
function main (line 21) | def main() -> None:
function iter_pulls (line 71) | def iter_pulls(
function group_pulls_by_change_type (line 86) | def group_pulls_by_change_type(
function generate_md (line 113) | def generate_md(grouped_pulls: dict[str, list[github.PullRequest.PullReq...
function write_changelog (line 120) | def write_changelog(file_path: Path, release: str, content: str) -> None:
function update_version (line 131) | def update_version(file_path: Path, release: str) -> None:
function update_git_repo (line 142) | def update_git_repo(paths: list[Path], release: str) -> None:
FILE: scripts/update_contributors.py
function main (line 16) | def main() -> None:
function iter_recent_authors (line 39) | def iter_recent_authors():
class ContributorsJSONFile (line 53) | class ContributorsJSONFile:
method __init__ (line 59) | def __init__(self) -> None:
method __contains__ (line 63) | def __contains__(self, github_login: str):
method add_contributor (line 71) | def add_contributor(self, user: NamedUser):
method save (line 80) | def save(self):
function write_md_file (line 86) | def write_md_file(contributors):
FILE: tests/test_cookiecutter_generation.py
function context (line 35) | def context():
function _fixture_id (line 148) | def _fixture_id(ctx):
function build_files_list (line 153) | def build_files_list(base_path: Path):
function check_paths (line 165) | def check_paths(paths: Iterable[Path]):
function test_project_generation (line 178) | def test_project_generation(cookies, context, context_override):
function test_ruff_check_passes (line 193) | def test_ruff_check_passes(cookies, context_override):
function test_ruff_format_passes (line 205) | def test_ruff_format_passes(cookies, context_override):
function test_django_upgrade_passes (line 221) | def test_django_upgrade_passes(cookies, context_override):
function test_djlint_lint_passes (line 241) | def test_djlint_lint_passes(cookies, context_override):
function test_djlint_check_passes (line 262) | def test_djlint_check_passes(cookies, context_override):
function test_travis_invokes_pytest (line 279) | def test_travis_invokes_pytest(cookies, context, use_docker, expected_te...
function test_gitlab_invokes_precommit_and_pytest (line 304) | def test_gitlab_invokes_precommit_and_pytest(cookies, context, use_docke...
function test_github_invokes_linter_and_pytest (line 331) | def test_github_invokes_linter_and_pytest(cookies, context, use_docker, ...
function test_invalid_slug (line 359) | def test_invalid_slug(cookies, context, slug):
function test_error_if_incompatible (line 370) | def test_error_if_incompatible(cookies, context, invalid_context):
function test_pycharm_docs_removed (line 387) | def test_pycharm_docs_removed(cookies, context, editor, pycharm_docs_exi...
function test_trim_domain_email (line 396) | def test_trim_domain_email(cookies, context):
function test_pyproject_toml (line 416) | def test_pyproject_toml(cookies, context):
function test_pre_commit_without_heroku (line 440) | def test_pre_commit_without_heroku(cookies, context):
FILE: tests/test_hooks.py
function working_directory (line 12) | def working_directory(tmp_path):
function test_append_to_gitignore_file (line 21) | def test_append_to_gitignore_file(working_directory):
FILE: {{cookiecutter.project_slug}}/config/asgi.py
function application (line 32) | async def application(scope, receive, send):
FILE: {{cookiecutter.project_slug}}/config/celery_app.py
function config_loggers (line 19) | def config_loggers(*args, **kwargs):
FILE: {{cookiecutter.project_slug}}/config/websocket.py
function websocket_application (line 1) | async def websocket_application(scope, receive, send):
FILE: {{cookiecutter.project_slug}}/gulpfile.mjs
function pathsConfig (line 30) | function pathsConfig() {
function styles (line 56) | function styles() {
function scripts (line 82) | function scripts() {
function vendorScripts (line 91) | function vendorScripts() {
function imgCompression (line 102) | async function imgCompression() {
function runServer (line 123) | function runServer(cb) {
FILE: {{cookiecutter.project_slug}}/manage.py
function main (line 9) | def main():
FILE: {{cookiecutter.project_slug}}/merge_production_dotenvs_in_dotenv.py
function merge (line 13) | def merge(
FILE: {{cookiecutter.project_slug}}/tests/test_merge_production_dotenvs_in_dotenv.py
function test_merge (line 19) | def test_merge(
FILE: {{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/conftest.py
function _media_storage (line 8) | def _media_storage(settings, tmpdir) -> None:
function user (line 13) | def user(db) -> User:
FILE: {{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/contrib/sites/migrations/0001_initial.py
class Migration (line 7) | class Migration(migrations.Migration):
FILE: {{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/contrib/sites/migrations/0002_alter_domain_unique.py
class Migration (line 6) | class Migration(migrations.Migration):
FILE: {{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/contrib/sites/migrations/0003_set_site_domain_and_name.py
function _update_or_create_site_with_sequence (line 10) | def _update_or_create_site_with_sequence(site_model, connection, domain,...
function update_site_forward (line 37) | def update_site_forward(apps, schema_editor):
function update_site_backward (line 48) | def update_site_backward(apps, schema_editor):
class Migration (line 59) | class Migration(migrations.Migration):
FILE: {{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/contrib/sites/migrations/0004_alter_options_ordering_domain.py
class Migration (line 6) | class Migration(migrations.Migration):
FILE: {{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/adapters.py
class AccountAdapter (line 16) | class AccountAdapter(DefaultAccountAdapter):
method is_open_for_signup (line 17) | def is_open_for_signup(self, request: HttpRequest) -> bool:
class SocialAccountAdapter (line 21) | class SocialAccountAdapter(DefaultSocialAccountAdapter):
method is_open_for_signup (line 22) | def is_open_for_signup(
method populate_user (line 29) | def populate_user(
FILE: {{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/admin.py
class UserAdmin (line 19) | class UserAdmin(auth_admin.UserAdmin):
FILE: {{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/api/schema.py
class UpdateUserSchema (line 7) | class UpdateUserSchema(ModelSchema):
class Meta (line 8) | class Meta:
class UserSchema (line 17) | class UserSchema(ModelSchema):
class Meta (line 20) | class Meta:
method resolve_url (line 29) | def resolve_url(obj: User):
FILE: {{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/api/serializers.py
class UserSerializer (line 6) | class UserSerializer(serializers.ModelSerializer[User]):
class Meta (line 7) | class Meta:
FILE: {{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/api/views.py
class UserViewSet (line 15) | class UserViewSet(RetrieveModelMixin, ListModelMixin, UpdateModelMixin, ...
method get_queryset (line 24) | def get_queryset(self, *args, **kwargs):
method me (line 29) | def me(self, request):
function _get_users_queryset (line 44) | def _get_users_queryset(request) -> QuerySet[User]:
function list_users (line 49) | def list_users(request):
function retrieve_current_user (line 55) | def retrieve_current_user(request):
function retrieve_user (line 60) | def retrieve_user(request, pk: int):
function retrieve_current_user (line 67) | def retrieve_current_user(request):
function retrieve_user (line 72) | def retrieve_user(request, username: str):
function update_current_user (line 79) | def update_current_user(request, data: UpdateUserSchema):
function update_user (line 91) | def update_user(request, pk: int, data: UpdateUserSchema):
function update_user (line 101) | def update_user(request, username: str, data: UpdateUserSchema):
FILE: {{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/apps.py
class UsersConfig (line 5) | class UsersConfig(AppConfig):
method ready (line 9) | def ready(self):
FILE: {{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/context_processors.py
function allauth_settings (line 4) | def allauth_settings(request):
FILE: {{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/forms.py
class UserAdminChangeForm (line 12) | class UserAdminChangeForm(admin_forms.UserChangeForm):
class Meta (line 13) | class Meta(admin_forms.UserChangeForm.Meta):
class UserAdminCreationForm (line 20) | class UserAdminCreationForm(admin_forms.AdminUserCreationForm):
class Meta (line 26) | class Meta(admin_forms.UserCreationForm.Meta):
class UserSignupForm (line 41) | class UserSignupForm(SignupForm):
class UserSocialSignupForm (line 49) | class UserSocialSignupForm(SocialSignupForm):
FILE: {{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/managers.py
class UserManager (line 10) | class UserManager(DjangoUserManager["User"]):
method _create_user (line 13) | def _create_user(self, email: str, password: str | None, **extra_fields):
method create_user (line 26) | def create_user(self, email: str, password: str | None = None, **extra...
method create_superuser (line 31) | def create_superuser(self, email: str, password: str | None = None, **...
FILE: {{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/migrations/0001_initial.py
class Migration (line 10) | class Migration(migrations.Migration):
FILE: {{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/models.py
class User (line 18) | class User(AbstractUser):
method get_absolute_url (line 39) | def get_absolute_url(self) -> str:
FILE: {{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tasks.py
function get_users_count (line 7) | def get_users_count():
FILE: {{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/api/test_openapi.py
function test_api_docs_accessible_by_admin (line 7) | def test_api_docs_accessible_by_admin(admin_client):
function test_api_docs_not_accessible_by_anonymous_users (line 18) | def test_api_docs_not_accessible_by_anonymous_users(client):
function test_api_schema_generated_successfully (line 31) | def test_api_schema_generated_successfully(admin_client):
FILE: {{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/api/test_urls.py
function test_user_detail (line 8) | def test_user_detail(user: User):
function test_user_list (line 23) | def test_user_list():
function test_user_me (line 28) | def test_user_me():
function test_user_detail (line 34) | def test_user_detail(user: User):
function test_user_list (line 49) | def test_user_list():
function test_current_user (line 54) | def test_current_user():
function test_update_user (line 59) | def test_update_user():
FILE: {{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/api/test_views.py
class TestUserViewSet (line 9) | class TestUserViewSet:
method api_rf (line 11) | def api_rf(self) -> APIRequestFactory:
method test_get_queryset (line 14) | def test_get_queryset(self, user: User, api_rf: APIRequestFactory):
method test_me (line 23) | def test_me(self, user: User, api_rf: APIRequestFactory):
function user (line 55) | def user():
function test_list_users_as_anonymous_user (line 59) | def test_list_users_as_anonymous_user(client: Client):
function test_list_users_as_authenticated_user (line 65) | def test_list_users_as_authenticated_user(client: Client, user: User):
function test_retrieve_current_user (line 88) | def test_retrieve_current_user(client: Client, user: User):
function test_retrieve_user (line 103) | def test_retrieve_user(client: Client, user: User):
function test_retrieve_current_user (line 119) | def test_retrieve_current_user(client: Client, user: User):
function test_retrieve_user (line 135) | def test_retrieve_user(client: Client, user: User):
function test_retrieve_another_user (line 152) | def test_retrieve_another_user(client: Client, user: User):
function test_update_current_user (line 168) | def test_update_current_user(client: Client):
function test_update_user (line 198) | def test_update_user(client: Client):
function test_update_user (line 217) | def test_update_user(client: Client):
FILE: {{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/factories.py
class UserFactory (line 10) | class UserFactory(DjangoModelFactory[User]):
method password (line 18) | def password(self: User, create: bool, extracted: str | None, **kwargs...
class Meta (line 35) | class Meta:
FILE: {{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_admin.py
class TestUserAdmin (line 14) | class TestUserAdmin:
method test_changelist (line 15) | def test_changelist(self, admin_client):
method test_search (line 20) | def test_search(self, admin_client):
method test_add (line 25) | def test_add(self, admin_client):
function test_view_user (line 49) | def test_view_user(self, admin_client):
function _force_allauth (line 60) | def _force_allauth(self, settings):
function test_allauth_login (line 70) | def test_allauth_login(self, rf, settings):
FILE: {{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_forms.py
class TestUserAdminCreationForm (line 9) | class TestUserAdminCreationForm:
method test_username_validation_error_msg (line 14) | def test_username_validation_error_msg(self, user: User):
FILE: {{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_managers.py
class TestUserManager (line 10) | class TestUserManager:
method test_create_user (line 11) | def test_create_user(self):
method test_create_superuser (line 22) | def test_create_superuser(self):
method test_create_superuser_username_ignored (line 32) | def test_create_superuser_username_ignored(self):
function test_createsuperuser_command (line 41) | def test_createsuperuser_command():
FILE: {{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_models.py
function test_user_get_absolute_url (line 4) | def test_user_get_absolute_url(user: User):
FILE: {{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_tasks.py
function test_user_count (line 10) | def test_user_count(settings):
FILE: {{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_urls.py
function test_detail (line 7) | def test_detail(user: User):
function test_update (line 20) | def test_update():
function test_redirect (line 25) | def test_redirect():
FILE: {{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_views.py
class TestUserUpdateView (line 25) | class TestUserUpdateView:
method dummy_get_response (line 34) | def dummy_get_response(self, request: HttpRequest):
method test_get_success_url (line 37) | def test_get_success_url(self, user: User, rf: RequestFactory):
method test_get_object (line 50) | def test_get_object(self, user: User, rf: RequestFactory):
method test_form_valid (line 59) | def test_form_valid(self, user: User, rf: RequestFactory):
class TestUserRedirectView (line 80) | class TestUserRedirectView:
method test_get_redirect_url (line 81) | def test_get_redirect_url(self, user: User, rf: RequestFactory):
class TestUserDetailView (line 95) | class TestUserDetailView:
method test_authenticated (line 96) | def test_authenticated(self, user: User, rf: RequestFactory):
method test_not_authenticated (line 108) | def test_not_authenticated(self, user: User, rf: RequestFactory):
FILE: {{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/views.py
class UserDetailView (line 13) | class UserDetailView(LoginRequiredMixin, DetailView):
class UserUpdateView (line 27) | class UserUpdateView(LoginRequiredMixin, SuccessMessageMixin, UpdateView):
method get_success_url (line 32) | def get_success_url(self) -> str:
method get_object (line 36) | def get_object(self, queryset: QuerySet | None = None) -> User:
class UserRedirectView (line 44) | class UserRedirectView(LoginRequiredMixin, RedirectView):
method get_redirect_url (line 47) | def get_redirect_url(self) -> str:
Condensed preview — 245 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (965K chars).
[
{
"path": ".editorconfig",
"chars": 391,
"preview": "# http://editorconfig.org\n\nroot = true\n\n[*]\ncharset = utf-8\nend_of_line = lf\ninsert_final_newline = true\ntrim_trailing_w"
},
{
"path": ".gitattributes",
"chars": 12,
"preview": "* text=auto\n"
},
{
"path": ".github/CONTRIBUTORS-template.md",
"chars": 1194,
"preview": "# Contributors\n\n## Core Developers\n\nThese contributors have commit flags for the repository, and are able to\naccept and "
},
{
"path": ".github/FUNDING.yml",
"chars": 141,
"preview": "# These are supported funding model platforms\n\ngithub: [pydanny, browniebroke, luzfcb]\npatreon: feldroy\nopen_collective:"
},
{
"path": ".github/ISSUE_TEMPLATE/bug.md",
"chars": 1387,
"preview": "---\nname: Bug Report\nabout: Report a bug\nlabels: bug\n---\n\n## What happened?\n\n## What should've happened instead?\n\n## Add"
},
{
"path": ".github/ISSUE_TEMPLATE/feature.md",
"chars": 210,
"preview": "---\nname: New Feature Proposal\nabout: Propose a new feature\nlabels: enhancement\n---\n\n## Description\n\nWhat are you propos"
},
{
"path": ".github/ISSUE_TEMPLATE/paid-support.md",
"chars": 740,
"preview": "---\nname: Paid Support Request\nabout: Ask Core Team members to help you out\n---\n\nProvided your question goes beyond [reg"
},
{
"path": ".github/ISSUE_TEMPLATE/question.md",
"chars": 775,
"preview": "---\nname: Question\nabout: Please ask your question on StackOverflow, Discord or GitHub Discussions.\nlabels: question\n---"
},
{
"path": ".github/PULL_REQUEST_TEMPLATE.md",
"chars": 545,
"preview": "<!-- Thank you for helping us out: your efforts mean a great deal to the project and the community as a whole! -->\n\n## D"
},
{
"path": ".github/changelog-template.md",
"chars": 264,
"preview": "{%- for change_type, pulls in grouped_pulls.items() %}\n{%- if pulls %}\n\n### {{ change_type }}\n\n{%- for pull_request in p"
},
{
"path": ".github/contributors.json",
"chars": 35377,
"preview": "[\n {\n \"name\": \"Daniel Roy Greenfeld\",\n \"github_login\": \"pydanny\",\n \"twitter_username\": \"pydanny\",\n \"is_core"
},
{
"path": ".github/dependabot.yml",
"chars": 1614,
"preview": "# Config for Dependabot updates. See Documentation here:\n# https://docs.github.com/en/code-security/dependabot/dependabo"
},
{
"path": ".github/workflows/align-versions.yml",
"chars": 1378,
"preview": "name: align versions\n\non:\n pull_request:\n paths:\n - \"{{cookiecutter.project_slug}}/requirements/local.txt\"\n "
},
{
"path": ".github/workflows/ci.yml",
"chars": 3117,
"preview": "name: CI\n\non:\n push:\n branches: [\"main\"]\n pull_request:\n\nconcurrency:\n group: ${{ github.head_ref || github.run_id"
},
{
"path": ".github/workflows/dependabot-uv-lock.yml",
"chars": 903,
"preview": "name: uv\n\non:\n pull_request:\n paths:\n - \"pyproject.toml\"\n # Manual trigger\n workflow_dispatch:\n\npermissions:\n"
},
{
"path": ".github/workflows/django-issue-checker.yml",
"chars": 775,
"preview": "# Creates a new issue for Major/Minor Django updates that keeps track\n# of all dependencies that need to be updated/merg"
},
{
"path": ".github/workflows/issue-manager.yml",
"chars": 1502,
"preview": "# Automatically close issues or pull requests that have a label, after a custom delay, if no one replies.\n# https://gith"
},
{
"path": ".github/workflows/pre-commit-autoupdate.yml",
"chars": 1359,
"preview": "# Run pre-commit autoupdate every day at midnight\n# and create a pull request if any changes\n\nname: Pre-commit auto-upda"
},
{
"path": ".github/workflows/update-changelog.yml",
"chars": 752,
"preview": "name: Update Changelog\n\non:\n # Every day at 2am\n schedule:\n - cron: \"0 2 * * *\"\n # Manual trigger\n workflow_dispa"
},
{
"path": ".github/workflows/update-contributors.yml",
"chars": 871,
"preview": "name: Update Contributors\n\non:\n push:\n branches:\n - main\n\npermissions:\n contents: read\n\njobs:\n build:\n # D"
},
{
"path": ".gitignore",
"chars": 3338,
"preview": "### Python template\n# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n# C extensions\n*.so\n\n# Di"
},
{
"path": ".pre-commit-config.yaml",
"chars": 1073,
"preview": "exclude: \"{{cookiecutter.project_slug}}|.github/contributors.json|CHANGELOG.md|CONTRIBUTORS.md\"\ndefault_stages: [pre-com"
},
{
"path": ".pyup.yml",
"chars": 519,
"preview": "# configure updates globally\n# default: all\n# allowed: all, insecure, False\nupdate: all\n\n# configure dependency pinning "
},
{
"path": ".readthedocs.yaml",
"chars": 535,
"preview": "# Read the Docs configuration file\n# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details\n\nversion:"
},
{
"path": "AGENTS.md",
"chars": 4318,
"preview": "# AGENTS.md\n\nThis file provides guidance to AI coding agents when working with code in this repository.\n\n## What This Pr"
},
{
"path": "CHANGELOG.md",
"chars": 308989,
"preview": "# Change Log\nAll enhancements and patches to Cookiecutter Django will be documented in this file.\n\n<!-- GENERATOR_PLACEH"
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 214,
"preview": "## Code of Conduct\n\nEveryone who interacts in the Cookiecutter project's codebase, issue trackers, chat rooms, and maili"
},
{
"path": "CONTRIBUTING.md",
"chars": 3011,
"preview": "# How to Contribute\n\nAlways happy to get issues identified and pull requests!\n\n## General considerations\n\n1. Keep it sma"
},
{
"path": "CONTRIBUTORS.md",
"chars": 48460,
"preview": "# Contributors\n\n## Core Developers\n\nThese contributors have commit flags for the repository, and are able to\naccept and "
},
{
"path": "LICENSE",
"chars": 1502,
"preview": "Copyright (c) 2013-2020, Daniel Roy Greenfeld\nAll rights reserved.\n\nRedistribution and use in source and binary forms, w"
},
{
"path": "README.md",
"chars": 13958,
"preview": "# Cookiecutter Django\n\n[|replace(' ', '_')|repl"
},
{
"path": "docs/1-getting-started/project-generation-options.rst",
"chars": 5917,
"preview": ".. _template-options:\n\nProject Generation Options\n==========================\n\nThis page describes all the template optio"
},
{
"path": "docs/1-getting-started/settings.rst",
"chars": 9270,
"preview": ".. _settings:\n\nSettings\n========\n\nThis project relies extensively on environment settings which **will not work with Apa"
},
{
"path": "docs/2-local-development/developing-locally-docker.rst",
"chars": 15109,
"preview": "Getting Up and Running Locally With Docker\n==========================================\n\n.. index:: Docker\n\n.. note::\n\n "
},
{
"path": "docs/2-local-development/developing-locally.rst",
"chars": 8831,
"preview": "Getting Up and Running Locally\n==============================\n\n.. index:: PostgreSQL\n\n\nSetting Up Development Environmen"
},
{
"path": "docs/2-local-development/generate-project-block.rst",
"chars": 188,
"preview": "Generate a new cookiecutter-django project: ::\n\n $ cookiecutter gh:cookiecutter/cookiecutter-django\n\nFor more informa"
},
{
"path": "docs/3-deployment/deployment-on-heroku.rst",
"chars": 3664,
"preview": "Deployment on Heroku\n====================\n\n.. index:: Heroku\n\nScript\n------\n\nRun these commands to deploy the project to"
},
{
"path": "docs/3-deployment/deployment-on-pythonanywhere.rst",
"chars": 6186,
"preview": "Deployment on PythonAnywhere\n============================\n\n.. index:: PythonAnywhere\n\n\nOverview\n--------\n\nFull instructi"
},
{
"path": "docs/3-deployment/deployment-with-docker.rst",
"chars": 8707,
"preview": "Deployment with Docker\n======================\n\n.. index:: deployment, docker, docker compose, compose\n\n\nPrerequisites\n--"
},
{
"path": "docs/4-guides/docker-postgres-backups.rst",
"chars": 5271,
"preview": "PostgreSQL Backups with Docker\n==============================\n\n.. note:: For brevity it is assumed that you will be runn"
},
{
"path": "docs/4-guides/document.rst",
"chars": 1749,
"preview": ".. _document:\n\nDocument\n=========\n\nThis project uses Sphinx_ documentation generator.\n\nAfter you have set up to `develop"
},
{
"path": "docs/4-guides/linters.rst",
"chars": 1214,
"preview": "Linters\n=======\n\n.. index:: linters\n\n\nruff\n------\n\nRuff is a Python linter and code formatter, written in Rust.\nIt is a "
},
{
"path": "docs/4-guides/testing.rst",
"chars": 2480,
"preview": ".. _testing:\n\nTesting\n========\n\nWe encourage users to build application tests. As best practice, this should be done imm"
},
{
"path": "docs/4-guides/websocket.rst",
"chars": 752,
"preview": ".. _websocket:\n\n=========\nWebsocket\n=========\n\nYou can enable web sockets if you select ``use_async`` option when creati"
},
{
"path": "docs/5-help/faq.rst",
"chars": 1526,
"preview": "FAQ\n===\n\n.. index:: FAQ, 12-Factor App\n\nWhy is there a django.contrib.sites directory in Cookiecutter Django?\n----------"
},
{
"path": "docs/5-help/troubleshooting.rst",
"chars": 3465,
"preview": "Troubleshooting\n===============\n\nThis page contains some advice about errors and problems commonly encountered during th"
},
{
"path": "docs/6-about/contributing.md",
"chars": 40,
"preview": "```{include} ../../CONTRIBUTING.md\n\n```\n"
},
{
"path": "docs/6-about/generative-ai.md",
"chars": 1942,
"preview": "# Generative AI\n\nYou are encouraged to use all the tools you want to do your work and contribute as efficiently as possi"
},
{
"path": "docs/6-about/maintainer-guide.md",
"chars": 5617,
"preview": "# Maintainer guide\n\nThis document is intended for maintainers of the template.\n\n## Automated updates\n\nWe use 2 separate "
},
{
"path": "docs/Makefile",
"chars": 1164,
"preview": "# Makefile for Sphinx documentation\n#\n\n# You can set these variables from the command line.\nSPHINXOPTS =\nSPHINXBUILD "
},
{
"path": "docs/__init__.py",
"chars": 81,
"preview": "# Included so that Django's startproject comment runs against the docs directory\n"
},
{
"path": "docs/_static/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "docs/conf.py",
"chars": 8222,
"preview": "# cookiecutter-django documentation build configuration file.\n#\n# This file is execfile()d with the current directory se"
},
{
"path": "docs/includes/mailgun.rst",
"chars": 676,
"preview": "If your email server used to send email isn't configured properly (Mailgun by default),\nattempting to send an email will"
},
{
"path": "docs/index.rst",
"chars": 1548,
"preview": ".. cookiecutter-django documentation master file.\n\nWelcome to Cookiecutter Django's documentation!\n====================="
},
{
"path": "docs/make.bat",
"chars": 1350,
"preview": "@ECHO OFF\n\nREM Command file for Sphinx documentation\n\nif \"%SPHINXBUILD%\" == \"\" (\n\tset SPHINXBUILD=sphinx-build\n)\nset SOU"
},
{
"path": "hooks/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "hooks/post_gen_project.py",
"chars": 18633,
"preview": "# ruff: noqa: PLR0133\nimport json\nimport os\nimport random\nimport shutil\nimport string\nimport subprocess\nimport sys\nfrom "
},
{
"path": "hooks/pre_gen_project.py",
"chars": 1342,
"preview": "# ruff: noqa: PLR0133\nimport sys\n\nTERMINATOR = \"\\x1b[0m\"\nWARNING = \"\\x1b[1;33m [WARNING]: \"\nINFO = \"\\x1b[1;33m [INFO]: \""
},
{
"path": "pyproject.toml",
"chars": 3260,
"preview": "[project]\nname = \"cookiecutter-django\"\nversion = \"2026.03.19\"\ndescription = \"A Cookiecutter template for creating produc"
},
{
"path": "scripts/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "scripts/create_django_issue.py",
"chars": 11829,
"preview": "\"\"\"\nCreates an issue that generates a table for dependency checking whether\nall packages support the latest Django versi"
},
{
"path": "scripts/node_version.py",
"chars": 1953,
"preview": "from __future__ import annotations\n\nimport json\nfrom pathlib import Path\n\nROOT = Path(__file__).parent.parent\nTEMPLATED_"
},
{
"path": "scripts/ruff_version.py",
"chars": 2047,
"preview": "from __future__ import annotations\n\nimport subprocess\nfrom pathlib import Path\n\nimport tomllib\n\nROOT = Path(__file__).pa"
},
{
"path": "scripts/update_changelog.py",
"chars": 5504,
"preview": "import datetime as dt\nimport os\nimport re\nimport subprocess\nfrom collections.abc import Iterable\nfrom pathlib import Pat"
},
{
"path": "scripts/update_contributors.py",
"chars": 3501,
"preview": "import json\nimport os\nfrom pathlib import Path\n\nfrom github import Github\nfrom github.NamedUser import NamedUser\nfrom ji"
},
{
"path": "tests/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "tests/test_bare.sh",
"chars": 882,
"preview": "#!/bin/sh\n# this is a very simple script that tests the docker configuration for cookiecutter-django\n# it is meant to be"
},
{
"path": "tests/test_cookiecutter_generation.py",
"chars": 16319,
"preview": "import glob # noqa: EXE002\nimport os\nimport re\nimport sys\nfrom collections.abc import Iterable\nfrom pathlib import Path"
},
{
"path": "tests/test_docker.sh",
"chars": 3006,
"preview": "#!/bin/sh\n# this is a very simple script that tests the docker configuration for cookiecutter-django\n# it is meant to be"
},
{
"path": "tests/test_hooks.py",
"chars": 708,
"preview": "\"\"\"Unit tests for the hooks\"\"\"\n\nimport os\nfrom pathlib import Path\n\nimport pytest\n\nfrom hooks.post_gen_project import ap"
},
{
"path": "tox.ini",
"chars": 135,
"preview": "[tox]\nskipsdist = true\nenvlist = py313\n\n[testenv]\npassenv = AUTOFIXABLE_STYLES\ncommands = pytest --instafail -n auto {po"
},
{
"path": "{{cookiecutter.project_slug}}/.devcontainer/bash_history",
"chars": 0,
"preview": ""
},
{
"path": "{{cookiecutter.project_slug}}/.devcontainer/bashrc.override.sh",
"chars": 352,
"preview": "\n#\n# .bashrc.override.sh\n#\n\n# persistent bash history\nHISTFILE=~/.bash_history\nPROMPT_COMMAND=\"history -a; $PROMPT_COMMA"
},
{
"path": "{{cookiecutter.project_slug}}/.devcontainer/devcontainer.json",
"chars": 2962,
"preview": "// For format details, see https://containers.dev/implementors/json_reference/\n{\n \"name\": \"{{cookiecutter.project_slu"
},
{
"path": "{{cookiecutter.project_slug}}/.dockerignore",
"chars": 139,
"preview": ".editorconfig\n.gitattributes\n.github\n.gitignore\n.gitlab-ci.yml\n.idea\n.pre-commit-config.yaml\n.readthedocs.yml\n.travis.ym"
},
{
"path": "{{cookiecutter.project_slug}}/.drone.yml",
"chars": 1441,
"preview": "kind: pipeline\nname: default\n\nenvironment:\n POSTGRES_USER: '{{ cookiecutter.project_slug }}'\n POSTGRES_PASSWORD: ''\n "
},
{
"path": "{{cookiecutter.project_slug}}/.editorconfig",
"chars": 393,
"preview": "# http://editorconfig.org\n\nroot = true\n\n[*]\ncharset = utf-8\nend_of_line = lf\ninsert_final_newline = true\ntrim_trailing_w"
},
{
"path": "{{cookiecutter.project_slug}}/.envs/.local/.django",
"chars": 511,
"preview": "# General\n# ------------------------------------------------------------------------------\nUSE_DOCKER=yes\nIPYTHONDIR=/ap"
},
{
"path": "{{cookiecutter.project_slug}}/.envs/.local/.postgres",
"chars": 264,
"preview": "# PostgreSQL\n# ------------------------------------------------------------------------------\nPOSTGRES_HOST=postgres\nPOS"
},
{
"path": "{{cookiecutter.project_slug}}/.envs/.production/.django",
"chars": 2635,
"preview": "# General\n# ------------------------------------------------------------------------------\n# DJANGO_READ_DOT_ENV_FILE=Tr"
},
{
"path": "{{cookiecutter.project_slug}}/.envs/.production/.postgres",
"chars": 264,
"preview": "# PostgreSQL\n# ------------------------------------------------------------------------------\nPOSTGRES_HOST=postgres\nPOS"
},
{
"path": "{{cookiecutter.project_slug}}/.gitattributes",
"chars": 12,
"preview": "* text=auto\n"
},
{
"path": "{{cookiecutter.project_slug}}/.github/dependabot.yml",
"chars": 2338,
"preview": "# Config for Dependabot updates. See Documentation here:\n# https://docs.github.com/en/code-security/dependabot/dependabo"
},
{
"path": "{{cookiecutter.project_slug}}/.github/workflows/ci.yml",
"chars": 3670,
"preview": "name: CI\n\n# Enable Buildkit and let compose use it to speed up image building\nenv:\n DOCKER_BUILDKIT: 1\n COMPOSE_DOCKER"
},
{
"path": "{{cookiecutter.project_slug}}/.gitignore",
"chars": 5855,
"preview": "### Python template\n# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n# C extensions\n*.so\n\n# Di"
},
{
"path": "{{cookiecutter.project_slug}}/.gitlab-ci.yml",
"chars": 1488,
"preview": "stages:\n - lint\n - test\n\nvariables:\n POSTGRES_USER: '{{ cookiecutter.project_slug }}'\n POSTGRES_PASSWORD: ''\n POSTG"
},
{
"path": "{{cookiecutter.project_slug}}/.pre-commit-config.yaml",
"chars": 1583,
"preview": "exclude: '^docs/|/migrations/|devcontainer.json'\ndefault_stages: [pre-commit]\nminimum_pre_commit_version: \"3.2.0\"\n\ndefau"
},
{
"path": "{{cookiecutter.project_slug}}/.readthedocs.yml",
"chars": 535,
"preview": "# Read the Docs configuration file\n# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details\n\nversion:"
},
{
"path": "{{cookiecutter.project_slug}}/.travis.yml",
"chars": 1644,
"preview": "dist: focal\n\nlanguage: python\npython:\n - \"3.13\"\n\nservices:\n - {% if cookiecutter.use_docker == 'y' %}docker{% else %}p"
},
{
"path": "{{cookiecutter.project_slug}}/CONTRIBUTORS.txt",
"chars": 31,
"preview": "{{ cookiecutter.author_name }}\n"
},
{
"path": "{{cookiecutter.project_slug}}/COPYING",
"chars": 35147,
"preview": " GNU GENERAL PUBLIC LICENSE\n Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
},
{
"path": "{{cookiecutter.project_slug}}/LICENSE",
"chars": 14375,
"preview": "{% if cookiecutter.open_source_license == 'MIT' %}\nThe MIT License (MIT)\nCopyright (c) {% now 'utc', '%Y' %}, {{ cookiec"
},
{
"path": "{{cookiecutter.project_slug}}/Procfile",
"chars": 419,
"preview": "release: python manage.py migrate\n{%- if cookiecutter.use_async == \"y\" %}\nweb: gunicorn config.asgi:application -k uvico"
},
{
"path": "{{cookiecutter.project_slug}}/README.md",
"chars": 5801,
"preview": "# {{cookiecutter.project_name}}\n\n{{ cookiecutter.description }}\n\n[ {\npython << END\n"
},
{
"path": "{{cookiecutter.project_slug}}/compose/local/django/Dockerfile",
"chars": 2350,
"preview": "# define an alias for the specific python version used in this file.\nFROM ghcr.io/astral-sh/uv:python3.13-bookworm-slim "
},
{
"path": "{{cookiecutter.project_slug}}/compose/local/django/celery/beat/start",
"chars": 166,
"preview": "#!/bin/bash\n\nset -o errexit\nset -o nounset\n\n\nrm -f './celerybeat.pid'\nexec watchfiles --filter python celery.__main__.ma"
},
{
"path": "{{cookiecutter.project_slug}}/compose/local/django/celery/flower/start",
"chars": 369,
"preview": "#!/bin/bash\n\nset -o errexit\nset -o nounset\n\n\nuntil timeout 10 celery -A config.celery_app inspect ping; do\n >&2 echo "
},
{
"path": "{{cookiecutter.project_slug}}/compose/local/django/celery/worker/start",
"chars": 143,
"preview": "#!/bin/bash\n\nset -o errexit\nset -o nounset\n\n\nexec watchfiles --filter python celery.__main__.main --args '-A config.cele"
},
{
"path": "{{cookiecutter.project_slug}}/compose/local/django/start",
"chars": 288,
"preview": "#!/bin/bash\n\nset -o errexit\nset -o pipefail\nset -o nounset\n\n\npython manage.py migrate\n{%- if cookiecutter.use_async == '"
},
{
"path": "{{cookiecutter.project_slug}}/compose/local/docs/Dockerfile",
"chars": 1792,
"preview": "# define an alias for the specific python version used in this file.\nFROM ghcr.io/astral-sh/uv:python3.13-bookworm-slim "
},
{
"path": "{{cookiecutter.project_slug}}/compose/local/docs/start",
"chars": 79,
"preview": "#!/bin/bash\n\nset -o errexit\nset -o pipefail\nset -o nounset\n\nexec make livehtml\n"
},
{
"path": "{{cookiecutter.project_slug}}/compose/local/node/Dockerfile",
"chars": 161,
"preview": "FROM docker.io/node:24.14-bookworm-slim\n\nWORKDIR /app\n\nCOPY ./package.json /app\n\nRUN npm install && npm cache clean --fo"
},
{
"path": "{{cookiecutter.project_slug}}/compose/local/uv/Dockerfile",
"chars": 101,
"preview": "FROM ghcr.io/astral-sh/uv:python3.13-bookworm-slim AS python\n\nARG APP_HOME=/app\n\nWORKDIR ${APP_HOME}\n"
},
{
"path": "{{cookiecutter.project_slug}}/compose/production/aws/Dockerfile",
"chars": 451,
"preview": "FROM docker.io/amazon/aws-cli:2.34.0\n\n# Clear entrypoint from the base image, otherwise it's always calling the aws CLI\n"
},
{
"path": "{{cookiecutter.project_slug}}/compose/production/aws/maintenance/download",
"chars": 675,
"preview": "#!/bin/sh\n\n### Download a file from your Amazon S3 bucket to the postgres /backups folder\n###\n### Usage:\n### $ docke"
},
{
"path": "{{cookiecutter.project_slug}}/compose/production/aws/maintenance/upload",
"chars": 823,
"preview": "#!/bin/sh\n\n### Upload the /backups folder to Amazon S3\n###\n### Usage:\n### $ docker compose -f docker-compose.product"
},
{
"path": "{{cookiecutter.project_slug}}/compose/production/django/Dockerfile",
"chars": 4043,
"preview": "{% if cookiecutter.frontend_pipeline in ['Gulp', 'Webpack'] -%}\nFROM docker.io/node:24.14-bookworm-slim AS client-builde"
},
{
"path": "{{cookiecutter.project_slug}}/compose/production/django/celery/beat/start",
"chars": 107,
"preview": "#!/bin/bash\n\nset -o errexit\nset -o pipefail\nset -o nounset\n\n\nexec celery -A config.celery_app beat -l INFO\n"
},
{
"path": "{{cookiecutter.project_slug}}/compose/production/django/celery/flower/start",
"chars": 328,
"preview": "#!/bin/bash\n\nset -o errexit\nset -o nounset\n\n\n\nuntil timeout 10 celery -A config.celery_app inspect ping; do\n >&2 echo"
},
{
"path": "{{cookiecutter.project_slug}}/compose/production/django/celery/worker/start",
"chars": 109,
"preview": "#!/bin/bash\n\nset -o errexit\nset -o pipefail\nset -o nounset\n\n\nexec celery -A config.celery_app worker -l INFO\n"
},
{
"path": "{{cookiecutter.project_slug}}/compose/production/django/entrypoint",
"chars": 431,
"preview": "#!/bin/bash\n\nset -o errexit\nset -o pipefail\nset -o nounset\n\nif [ -z \"${POSTGRES_USER}\" ]; then\n base_postgres_image_d"
},
{
"path": "{{cookiecutter.project_slug}}/compose/production/django/start",
"chars": 751,
"preview": "#!/bin/bash\n\nset -o errexit\nset -o pipefail\nset -o nounset\n\n\npython /app/manage.py collectstatic --noinput\n{% if cookiec"
},
{
"path": "{{cookiecutter.project_slug}}/compose/production/nginx/Dockerfile",
"chars": 111,
"preview": "FROM docker.io/nginx:1.29.6-alpine\nCOPY ./compose/production/nginx/default.conf /etc/nginx/conf.d/default.conf\n"
},
{
"path": "{{cookiecutter.project_slug}}/compose/production/nginx/default.conf",
"chars": 116,
"preview": "server {\n listen 80;\n server_name localhost;\n location /media/ {\n alias /usr/share/nginx/media/;\n }\n}\n"
},
{
"path": "{{cookiecutter.project_slug}}/compose/production/postgres/Dockerfile",
"chars": 272,
"preview": "FROM docker.io/postgres:{{ cookiecutter.postgresql_version }}\n\nCOPY ./compose/production/postgres/maintenance /usr/local"
},
{
"path": "{{cookiecutter.project_slug}}/compose/production/postgres/maintenance/_sourced/constants.sh",
"chars": 77,
"preview": "#!/usr/bin/env bash\n\n\nBACKUP_DIR_PATH='/backups'\nBACKUP_FILE_PREFIX='backup'\n"
},
{
"path": "{{cookiecutter.project_slug}}/compose/production/postgres/maintenance/_sourced/countdown.sh",
"chars": 322,
"preview": "#!/usr/bin/env bash\n\n\ncountdown() {\n declare desc=\"A simple countdown. Source: https://superuser.com/a/611582\"\n lo"
},
{
"path": "{{cookiecutter.project_slug}}/compose/production/postgres/maintenance/_sourced/messages.sh",
"chars": 458,
"preview": "#!/usr/bin/env bash\n\n\nmessage_newline() {\n echo\n}\n\nmessage_debug()\n{\n echo -e \"DEBUG: ${@}\"\n}\n\nmessage_welcome()\n{"
},
{
"path": "{{cookiecutter.project_slug}}/compose/production/postgres/maintenance/_sourced/yes_no.sh",
"chars": 293,
"preview": "#!/usr/bin/env bash\n\n\nyes_no() {\n declare desc=\"Prompt for confirmation. \\$\\\"\\{1\\}\\\": confirmation message.\"\n loca"
},
{
"path": "{{cookiecutter.project_slug}}/compose/production/postgres/maintenance/backup",
"chars": 1009,
"preview": "#!/usr/bin/env bash\n\n\n### Create a database backup.\n###\n### Usage:\n### $ docker compose -f <environment>.yml (exec |"
},
{
"path": "{{cookiecutter.project_slug}}/compose/production/postgres/maintenance/backups",
"chars": 392,
"preview": "#!/usr/bin/env bash\n\n\n### View backups.\n###\n### Usage:\n### $ docker compose -f <environment>.yml (exec |run --rm) po"
},
{
"path": "{{cookiecutter.project_slug}}/compose/production/postgres/maintenance/restore",
"chars": 1635,
"preview": "#!/usr/bin/env bash\n\n\n### Restore database from a backup.\n###\n### Parameters:\n### <1> filename of an existing backup"
},
{
"path": "{{cookiecutter.project_slug}}/compose/production/postgres/maintenance/rmbackup",
"chars": 977,
"preview": "#!/usr/bin/env bash\n\n### Remove a database backup.\n###\n### Parameters:\n### <1> filename of a backup to remove.\n###\n#"
},
{
"path": "{{cookiecutter.project_slug}}/compose/production/traefik/Dockerfile",
"chars": 207,
"preview": "FROM docker.io/traefik:v3.6.11\nRUN mkdir -p /etc/traefik/acme \\\n && touch /etc/traefik/acme/acme.json \\\n && chmod 600 "
},
{
"path": "{{cookiecutter.project_slug}}/compose/production/traefik/traefik.yml",
"chars": 2788,
"preview": "log:\n level: INFO\n\nentryPoints:\n web:\n # http\n address: ':80'\n http:\n # https://doc.traefik.io/traefik/r"
},
{
"path": "{{cookiecutter.project_slug}}/config/__init__.py",
"chars": 232,
"preview": "{% if cookiecutter.use_celery == 'y' -%}\n# This will make sure the app is always imported when\n# Django starts so that s"
},
{
"path": "{{cookiecutter.project_slug}}/config/api.py",
"chars": 334,
"preview": "from django.contrib.admin.views.decorators import staff_member_required\nfrom ninja import NinjaAPI\nfrom ninja.security i"
},
{
"path": "{{cookiecutter.project_slug}}/config/api_router.py",
"chars": 351,
"preview": "from django.conf import settings\nfrom rest_framework.routers import DefaultRouter\nfrom rest_framework.routers import Sim"
},
{
"path": "{{cookiecutter.project_slug}}/config/asgi.py",
"chars": 1329,
"preview": "\"\"\"\nASGI config for {{ cookiecutter.project_name }} project.\n\nIt exposes the ASGI callable as a module-level variable na"
},
{
"path": "{{cookiecutter.project_slug}}/config/celery_app.py",
"chars": 846,
"preview": "import os\n\nfrom celery import Celery\nfrom celery.signals import setup_logging\n\n# set the default Django settings module "
},
{
"path": "{{cookiecutter.project_slug}}/config/settings/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "{{cookiecutter.project_slug}}/config/settings/base.py",
"chars": 17549,
"preview": "# ruff: noqa: ERA001, E501\n\"\"\"Base settings to build other settings files upon.\"\"\"\n{% if cookiecutter.use_celery == 'y' "
},
{
"path": "{{cookiecutter.project_slug}}/config/settings/local.py",
"chars": 5048,
"preview": "from .base import * # noqa: F403\nfrom .base import INSTALLED_APPS\nfrom .base import MIDDLEWARE\n{%- if cookiecutter.fron"
},
{
"path": "{{cookiecutter.project_slug}}/config/settings/production.py",
"chars": 17769,
"preview": "# ruff: noqa: E501\n{% if cookiecutter.use_sentry == 'y' -%}\nimport logging\n\nimport sentry_sdk\n\n{%- if cookiecutter.use_c"
},
{
"path": "{{cookiecutter.project_slug}}/config/settings/test.py",
"chars": 1685,
"preview": "\"\"\"\nWith these settings, tests run faster.\n\"\"\"\n\nfrom .base import * # noqa: F403\nfrom .base import TEMPLATES\nfrom .base"
},
{
"path": "{{cookiecutter.project_slug}}/config/urls.py",
"chars": 3010,
"preview": "from django.conf import settings\nfrom django.conf.urls.static import static\nfrom django.contrib import admin\n{%- if cook"
},
{
"path": "{{cookiecutter.project_slug}}/config/websocket.py",
"chars": 439,
"preview": "async def websocket_application(scope, receive, send):\n while True:\n event = await receive()\n\n if event"
},
{
"path": "{{cookiecutter.project_slug}}/config/wsgi.py",
"chars": 1304,
"preview": "\"\"\"\nWSGI config for {{ cookiecutter.project_name }} project.\n\nThis module contains the WSGI application used by Django's"
},
{
"path": "{{cookiecutter.project_slug}}/docker-compose.docs.yml",
"chars": 481,
"preview": "services:\n docs:\n image: {{ cookiecutter.project_slug }}_local_docs\n container_name: {{ cookiecutter.project_slug"
},
{
"path": "{{cookiecutter.project_slug}}/docker-compose.local.yml",
"chars": 3592,
"preview": "volumes:\n {{ cookiecutter.project_slug }}_local_postgres_data: {}\n {{ cookiecutter.project_slug }}_local_postgres_data"
},
{
"path": "{{cookiecutter.project_slug}}/docker-compose.production.yml",
"chars": 3615,
"preview": "volumes:\n production_postgres_data: {}\n production_postgres_data_backups: {}\n production_traefik: {}\n {%- if cookiec"
},
{
"path": "{{cookiecutter.project_slug}}/docs/Makefile",
"chars": 1124,
"preview": "# Minimal makefile for Sphinx documentation\n#\n\n# You can set these variables from the command line, and also\n# from the "
},
{
"path": "{{cookiecutter.project_slug}}/docs/__init__.py",
"chars": 81,
"preview": "# Included so that Django's startproject comment runs against the docs directory\n"
},
{
"path": "{{cookiecutter.project_slug}}/docs/conf.py",
"chars": 2504,
"preview": "# ruff: noqa: ERA001, PTH100\n# Configuration file for the Sphinx documentation builder.\n#\n# This file only contains a se"
},
{
"path": "{{cookiecutter.project_slug}}/docs/howto.rst",
"chars": 1562,
"preview": "How To - Project Documentation\n======================================================================\n\nGet Started\n-----"
},
{
"path": "{{cookiecutter.project_slug}}/docs/index.rst",
"chars": 588,
"preview": ".. {{ cookiecutter.project_name }} documentation master file, created by\n sphinx-quickstart.\n You can adapt this fil"
},
{
"path": "{{cookiecutter.project_slug}}/docs/make.bat",
"chars": 1037,
"preview": "@ECHO OFF\n\npushd %~dp0\n\nREM Command file for Sphinx documentation\n\n\nif \"%SPHINXBUILD%\" == \"\" (\n\tset SPHINXBUILD=sphinx-b"
},
{
"path": "{{cookiecutter.project_slug}}/docs/pycharm/configuration.rst",
"chars": 2606,
"preview": "Docker Remote Debugging\n=======================\n\nTo connect to python remote interpreter inside docker, you have to make"
},
{
"path": "{{cookiecutter.project_slug}}/docs/users.rst",
"chars": 442,
"preview": " .. _users:\n\nUsers\n======================================================================\n\nStarting a new project, it’s "
},
{
"path": "{{cookiecutter.project_slug}}/gulpfile.mjs",
"chars": 5415,
"preview": "////////////////////////////////\n// Setup\n////////////////////////////////\n\n// Gulp and package\nimport { src, dest, para"
},
{
"path": "{{cookiecutter.project_slug}}/justfile",
"chars": 1080,
"preview": "export COMPOSE_FILE := \"docker-compose.local.yml\"\n\n## Just does not yet manage signals for subprocesses reliably, which "
},
{
"path": "{{cookiecutter.project_slug}}/locale/README.md",
"chars": 1727,
"preview": "# Translations\n\nStart by configuring the `LANGUAGES` settings in `base.py`, by uncommenting languages you are willing to"
},
{
"path": "{{cookiecutter.project_slug}}/locale/en_US/LC_MESSAGES/django.po",
"chars": 419,
"preview": "# Translations for the {{ cookiecutter.project_name }} project\n# Copyright (C) {% now 'utc', '%Y' %} {{ cookiecutter.aut"
},
{
"path": "{{cookiecutter.project_slug}}/locale/fr_FR/LC_MESSAGES/django.po",
"chars": 13084,
"preview": "# Translations for the {{ cookiecutter.project_name }} project\n# Copyright (C) {% now 'utc', '%Y' %} {{ cookiecutter.aut"
},
{
"path": "{{cookiecutter.project_slug}}/locale/pt_BR/LC_MESSAGES/django.po",
"chars": 12724,
"preview": "# Translations for the {{ cookiecutter.project_name }} project\n# Copyright (C) {% now 'utc', '%Y' %} {{ cookiecutter.aut"
},
{
"path": "{{cookiecutter.project_slug}}/manage.py",
"chars": 982,
"preview": "#!/usr/bin/env python\n\"\"\"Django's command-line utility for administrative tasks.\"\"\"\n\nimport os\nimport sys\nfrom pathlib i"
},
{
"path": "{{cookiecutter.project_slug}}/merge_production_dotenvs_in_dotenv.py",
"chars": 655,
"preview": "from collections.abc import Sequence\nfrom pathlib import Path\n\nBASE_DIR = Path(__file__).parent.resolve()\nPRODUCTION_DOT"
},
{
"path": "{{cookiecutter.project_slug}}/package.json",
"chars": 1258,
"preview": "{\n \"name\": \"{{cookiecutter.project_slug}}\",\n \"version\": \"{{ cookiecutter.version }}\",\n \"devDependencies\": {\n \"@bab"
},
{
"path": "{{cookiecutter.project_slug}}/pyproject.toml",
"chars": 2984,
"preview": "[project]\nname = \"{{ cookiecutter.project_slug }}\"\nversion = \"{{ cookiecutter.version }}\"\ndescription = \"{{ cookiecutter"
},
{
"path": "{{cookiecutter.project_slug}}/requirements/base.txt",
"chars": 2772,
"preview": "python-slugify==8.0.4 # https://github.com/un33k/python-slugify\nPillow==12.1.1 # https://github.com/python-pillow/Pill"
},
{
"path": "{{cookiecutter.project_slug}}/requirements/local.txt",
"chars": 1958,
"preview": "Werkzeug[watchdog]==3.1.6 # https://github.com/pallets/werkzeug\nipdb==0.13.13 # https://github.com/gotcha/ipdb\n{%- if c"
},
{
"path": "{{cookiecutter.project_slug}}/requirements/production.txt",
"chars": 2272,
"preview": "# PRECAUTION: avoid production dependencies that aren't in development\n\n-r base.txt\n\ngunicorn==25.1.0 # https://github."
},
{
"path": "{{cookiecutter.project_slug}}/tests/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "{{cookiecutter.project_slug}}/tests/test_merge_production_dotenvs_in_dotenv.py",
"chars": 882,
"preview": "from pathlib import Path\n\nimport pytest\n\nfrom merge_production_dotenvs_in_dotenv import merge\n\n\n@pytest.mark.parametrize"
},
{
"path": "{{cookiecutter.project_slug}}/utility/install_os_dependencies.sh",
"chars": 2470,
"preview": "#!/bin/bash\n\nWORK_DIR=\"$(dirname \"$0\")\"\nDISTRO_NAME=$(lsb_release -sc)\nOS_REQUIREMENTS_FILENAME=\"requirements-$DISTRO_NA"
},
{
"path": "{{cookiecutter.project_slug}}/utility/install_python_dependencies.sh",
"chars": 318,
"preview": "#!/bin/bash\n\nWORK_DIR=\"$(dirname \"$0\")\"\nPROJECT_DIR=\"$(dirname \"$WORK_DIR\")\"\n\nuv --version >/dev/null 2>&1 || {\n echo"
},
{
"path": "{{cookiecutter.project_slug}}/utility/requirements-bionic.apt",
"chars": 420,
"preview": "##basic build dependencies of various Django apps for Ubuntu Bionic 18.04\n#build-essential metapackage install: make, gc"
},
{
"path": "{{cookiecutter.project_slug}}/utility/requirements-bookworm.apt",
"chars": 428,
"preview": "##basic build dependencies of various Django apps for Debian Bookworm 12.x\n#build-essential metapackage install: make, g"
},
{
"path": "{{cookiecutter.project_slug}}/utility/requirements-bullseye.apt",
"chars": 428,
"preview": "##basic build dependencies of various Django apps for Debian Bullseye 11.x\n#build-essential metapackage install: make, g"
},
{
"path": "{{cookiecutter.project_slug}}/utility/requirements-buster.apt",
"chars": 426,
"preview": "##basic build dependencies of various Django apps for Debian Jessie 10.x\n#build-essential metapackage install: make, gcc"
},
{
"path": "{{cookiecutter.project_slug}}/utility/requirements-focal.apt",
"chars": 416,
"preview": "##basic build dependencies of various Django apps for Ubuntu Focal 20.04\n#build-essential metapackage install: make, gcc"
},
{
"path": "{{cookiecutter.project_slug}}/utility/requirements-jammy.apt",
"chars": 416,
"preview": "##basic build dependencies of various Django apps for Ubuntu Jammy 22.04\n#build-essential metapackage install: make, gcc"
},
{
"path": "{{cookiecutter.project_slug}}/utility/requirements-jessie.apt",
"chars": 422,
"preview": "##basic build dependencies of various Django apps for Debian Jessie 8.x\n#build-essential metapackage install: make, gcc,"
},
{
"path": "{{cookiecutter.project_slug}}/utility/requirements-noble.apt",
"chars": 428,
"preview": "##basic build dependencies of various Django apps for Debian Bookworm 12.x\n#build-essential metapackage install: make, g"
},
{
"path": "{{cookiecutter.project_slug}}/utility/requirements-stretch.apt",
"chars": 422,
"preview": "##basic build dependencies of various Django apps for Debian Jessie 9.x\n#build-essential metapackage install: make, gcc,"
},
{
"path": "{{cookiecutter.project_slug}}/utility/requirements-trusty.apt",
"chars": 417,
"preview": "##basic build dependencies of various Django apps for Ubuntu Trusty 14.04\n#build-essential metapackage install: make, gc"
},
{
"path": "{{cookiecutter.project_slug}}/utility/requirements-xenial.apt",
"chars": 417,
"preview": "##basic build dependencies of various Django apps for Ubuntu Xenial 16.04\n#build-essential metapackage install: make, gc"
},
{
"path": "{{cookiecutter.project_slug}}/webpack/common.config.js",
"chars": 1549,
"preview": "const path = require('path');\nconst BundleTracker = require('webpack-bundle-tracker');\nconst MiniCssExtractPlugin = requ"
},
{
"path": "{{cookiecutter.project_slug}}/webpack/dev.config.js",
"chars": 679,
"preview": "const { merge } = require('webpack-merge');\nconst commonConfig = require('./common.config');\n\nmodule.exports = merge(com"
},
{
"path": "{{cookiecutter.project_slug}}/webpack/prod.config.js",
"chars": 1065,
"preview": "const { merge } = require('webpack-merge');\nconst commonConfig = require('./common.config');\n\n// This variable should mi"
},
{
"path": "{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/__init__.py",
"chars": 169,
"preview": "__version__ = \"{{ cookiecutter.version }}\"\n__version_info__ = tuple(\n int(num) if num.isdigit() else num\n for num "
},
{
"path": "{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/conftest.py",
"chars": 346,
"preview": "import pytest\n\nfrom {{ cookiecutter.project_slug }}.users.models import User\nfrom {{ cookiecutter.project_slug }}.users."
},
{
"path": "{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/contrib/__init__.py",
"chars": 197,
"preview": "\"\"\"\nTo understand why this file is here, please read:\n\nhttps://cookiecutter-django.readthedocs.io/en/latest/5-help/faq.h"
},
{
"path": "{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/contrib/sites/__init__.py",
"chars": 197,
"preview": "\"\"\"\nTo understand why this file is here, please read:\n\nhttps://cookiecutter-django.readthedocs.io/en/latest/5-help/faq.h"
},
{
"path": "{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/contrib/sites/migrations/0001_initial.py",
"chars": 1353,
"preview": "import django.contrib.sites.models\nfrom django.contrib.sites.models import _simple_domain_name_validator\nfrom django.db "
},
{
"path": "{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/contrib/sites/migrations/0002_alter_domain_unique.py",
"chars": 555,
"preview": "import django.contrib.sites.models\nfrom django.db import migrations\nfrom django.db import models\n\n\nclass Migration(migra"
},
{
"path": "{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/contrib/sites/migrations/0003_set_site_domain_and_name.py",
"chars": 2233,
"preview": "\"\"\"\nTo understand why this file is here, please read:\n\nhttps://cookiecutter-django.readthedocs.io/en/latest/5-help/faq.h"
},
{
"path": "{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/contrib/sites/migrations/0004_alter_options_ordering_domain.py",
"chars": 468,
"preview": "# Generated by Django 3.1.7 on 2021-02-04 14:49\n\nfrom django.db import migrations\n\n\nclass Migration(migrations.Migration"
},
{
"path": "{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/contrib/sites/migrations/__init__.py",
"chars": 197,
"preview": "\"\"\"\nTo understand why this file is here, please read:\n\nhttps://cookiecutter-django.readthedocs.io/en/latest/5-help/faq.h"
},
{
"path": "{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/static/fonts/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/static/js/project.js",
"chars": 145,
"preview": "{%- if cookiecutter.frontend_pipeline == 'Webpack' -%}\nimport '../sass/project.scss';\n\n{% endif -%}\n/* Project specific "
},
{
"path": "{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/static/sass/custom_bootstrap_vars.scss",
"chars": 0,
"preview": ""
},
{
"path": "{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/static/sass/project.scss",
"chars": 603,
"preview": "@import 'custom_bootstrap_vars';\n@import '~bootstrap/scss/bootstrap';\n\n// project specific CSS goes here\n\n//////////////"
},
{
"path": "{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/templates/403.html",
"chars": 308,
"preview": "{% raw %}{% extends \"base.html\" %}\n\n{% block title %}Forbidden (403){% endblock title %}\n{% block content %}\n <h1>Forbi"
},
{
"path": "{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/templates/403_csrf.html",
"chars": 308,
"preview": "{% raw %}{% extends \"base.html\" %}\n\n{% block title %}Forbidden (403){% endblock title %}\n{% block content %}\n <h1>Forbi"
},
{
"path": "{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/templates/404.html",
"chars": 309,
"preview": "{% raw %}{% extends \"base.html\" %}\n\n{% block title %}Page not found{% endblock title %}\n{% block content %}\n <h1>Page n"
},
{
"path": "{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/templates/500.html",
"chars": 351,
"preview": "{% raw %}{% extends \"base.html\" %}\n\n{% block title %}Server Error{% endblock title %}\n{% block content %}\n <h1>Ooops!!!"
}
]
// ... and 45 more files (download for full content)
About this extraction
This page contains the full source code of the cookiecutter/cookiecutter-django GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 245 files (882.3 KB), approximately 267.6k tokens, and a symbol index with 237 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.