diff --git a/docs/the_cli/start_project/packages.rst b/docs/the_cli/start_project/packages.rst index 5641f3f..a2bb54a 100644 --- a/docs/the_cli/start_project/packages.rst +++ b/docs/the_cli/start_project/packages.rst @@ -6,25 +6,51 @@ Packages and Tools This section provides an overview of the primary packages and tools, along with some of the design choices incorporated into a project generated with **Falco**. +Overview +-------- + +System Requirements - `hatch `_: Used for managing the project's virtual environment and dependencies, more details can be found in the `dependency management guide `_. - `just `_: A script runner that simplifies the execution of common tasks, such as setting up the project, running the server, and running tests, run ``just`` to see all available commands. + +Base Dependencies + - `environs `_: Used for configuring settings via environment variables. - `django-allauth `_: Handles login and signup processes. -- `django-debug-toolbar `_: Of course, a must. +- `django-template-partials `_: Used for defining reusable fragments of HTML. +- `django-htmx `_: Used for making AJAX requests and updating the DOM. +- `django-lifecycle `_: Provides an alternative to signals for hooking into your model's lifecycle. - `django-heath-check `_: Provides a ``/health`` endpoint for application, database, storage, and other health checks. -- `django-browser-reload `_: Automatically reloads your browser on code changes in development. -- `django-model-utils `_: Provides useful mixins for Django models, my favorite being the ``TimeStampedModel``. - `django-extensions `_: Adds some useful management commands to Django, such as ``shell_plus`` and ``show_urls``. - `django-anymail `_: `Amazon SES `_ is used for production email, facilitated by Anymail. +- `django-unique-user-email `_: Adds a unique constraint to the email field of the Django ``User`` model. +- `django-q2 `_: Used for background task queue processing and scheduling. +- `django-q-registry `_: Used for easily registering scheduled jobs. - `django-storages `_: Used for storing media files on AWS S3. -- `django-compressor `_: Compresses CSS and JavaScript files. +- `django-compressor `_: Compresses CSS and JavaScript files. - `refreshcss `_: Removes unused classes, ids, and element selectors from CSS, configured as a ``django-compressor`` filter. - `diskcache `_: A simple and fast cache solution based on ``sqlite3``, just add a ``LOCATION`` environnment folder for the cache location and you are good to go. - `Docker `_ and `s6-overlay `_: Docker is configured for production, with s6-overlay enabling running both the web server process (via ``gunicorn``) and the background worker process (via ``django-q2``) within a single container. - `Sentry `_: Utilized for performance and error monitoring. - `Whitenoise `_: Used to serve static files. - `heroicons `_: Easy access to `heroicons `_ in your Django templates. + +Development-Only packages + +- `django-debug-toolbar `_: Of course, a must. +- `django-browser-reload `_: Automatically reloads your browser on code changes in development. +- `django-watchfiles `_: Faster and more efficient development server reloading. +- `django-fastdev `_: Helps catch small mistakes early in your project. +- `dj-notebook `_: Allows you to use your shell_plus in a Jupyter notebook. +- `hatch-pip-compile `_: ``hatch`` plugin to compile requirements files. +- `git-cliff `_: Generates a changelog based on your commit messages. +- `bump-my-version `_: Bumps the version of your project following the `semver `_ format. +- `pytest `_: Used for running tests +- `pytest-django `_: Pytest plugin for Django. +- `pytest-sugar `_: Better looking pytest output. +- `pytest-xdist `_: Run tests in parallel. +- `Werkzeug `_: Enable the Werkzeug debugger when running `manage.py runserver_plus`. - `pre-commit `_: Integrated by default to identify simple issues before pushing code to remote. If you are using the default template, the following additional packages are included: @@ -41,7 +67,7 @@ If you are using the Bootstrap template, the following additional packages are i Settings -------- -There is a single ``settings.py`` file located in your project package directory. +There is a single ``settings.py`` file located in your project directory. .. code-block:: text @@ -63,7 +89,7 @@ You won't even be able to set ``DEBUG=True`` in production since the development Login via email instead of username ------------------------------------- +----------------------------------- The ``email`` field is configured as the login field using `django-allauth `_. The ``username`` field is still present but is not required for login. Allauth automatically fills it with the part of the email before the ``@`` symbol.