Prerequisites & Dependencies#

Before you create any projects with this template#

  • Ensure that your git is properly setup with your username and email in order for the initial commit to have the correct log.

  • Project names must be composed of lowercase alphanumeric characters only, with no spaces or special characters.

Setting up for Installation#

Note

For Mac systems, there is an automatic installation script that handle dependencies for Hydra. Run the following commands to install via the script:

$ git clone https://github.com/Lightmatter/django-hydra.git
$ ./django-hydra/scripts/mac_intel_install.sh

It’s recommended that you read the output of this script to ensure everything went smoothly, particularly if you are using Apple silicone (Mac’s with M1 or M2 chips).

Prerequisites#

The following items are required in order for this template to work:

Project Dependencies#

Hydra

  • Python

  • Django: Django

  • whitenoise: Static file servering for python web apps

  • django-allauth: Set of Django applications to address account management and authentication, including 3rd party auth

  • django-htmx: Convenience methods for using HTMX with django, including CSRF token handling and partial rendering

  • django-annoying: Fixes for the annoying little things about Django

  • django-environ: Allows for the configuration of a Django application using environment variables

  • django-extensions: Extremely useful command extensions for debugging and development

  • django-model-utils: Additional Django model mixins and utilities

  • psycopg2-binary: PostgreSQL database adapter for python

  • boto3: AWS software development kit for python, allowing for use of S3 and EC2 technologies

  • django-storages: A collection of custom storage backends for Django (Digitial Ocean, Dropbox, etc)

  • uvicorn: ASGI web server implementation for python

  • gunicorn: Lightweight Python WSGI HTTP server for UNIX

  • sentry-sdk: Sentry integration for Django for automatic error/exception reporting

  • Pillow: Library for adding image processing capabilities to the Python interpreter

  • django-anymail: Extension for Django’s core mailing feature that allows sending and receiving from several popular email service providers

  • django-vite: Plugin for using Vite in the Django ecosystem. For a detailed explanation of how Vite builds the frontend, see the Compiling and Deplyment section

  • tblib: Serialization library for Exceptions and Tracebacks

  • django-cachalot: Cache management for Django ORM queries

  • redis: Used for caching and as a message broker

  • hiredis: C client library for Redis

  • django-redis: Redis cache backend for Django that provides convenience methods for managing redis

  • django-jinja: Jinja2 integration for Django

  • heroicons: SVG icons library

  • django-rich: Rich is a library for producing vibrant command line applications, Django-Rich is the connecting extension

Dev Dependencies#

  • Werkzeug: Simple WSGI server for local development, includes debugger, test client, and more

  • coverage: Utility for measuring code coverage testing

  • ipython: IPython or Interactive Python is a command shell for python projects

  • ipdb: Tool to export functions to the IPython debugger. See “debugging” section for more information on usage

  • ptpython: An improved python repl with support for syntax highlighting, autocomplete, support for color schemes and more

  • django-debug-toolbar: Configurable set of panels to display debugging information about the current request/response

  • model-bakery: Expedient tool for creating objects/fixtures for testing in Django

  • watchdog: Python API and shell utilities to monitor file system events.

  • honcho: Python port of Foreman, allows for a single command to launch Procfile based applications

  • unittest-xml-reporting: Unit test runner that saves results to XML files for use on IDE’s, continuous integration servers, etc

  • playwright: Browser automation for end-to-end testing

  • icecream: Robust alternative to print statements in python for debugging

  • pre-commit: framework for managing pre-commit hooks

  • pudb: Alternative debugger, also integrates with IPython to give a more “GUI-like” experience to the user

  • poetryup: Version control helper that reconciles the pyproject.toml file each time poetry update is run

  • importmagic: Automatic management of imports in Python

  • epc: Allows for interoperability between Emacs and Python functions

  • django-silk: Silk is a profiling and inspection tool for Django for HTTP requests and database queries