Django Init

screenshot of Django Init
django
mkdocs

Project template used at Fueled for scaffolding new Django based projects. :dizzy:

Overview

The django-init project is a rolling release project that provides an easy way to set up Django projects. It is built on Django 4.1.x and Python 3.9.x and offers support for various features such as Poetry, black, 12-Factor based settings management via django-environ, PostgreSQL 13.0, Django Rest Framework 3.13.x, Django sites, mkdocs for project documentation, pytest as the test runner, GitHub Actions, custom user and auth apps for extensibility, robots.txt and humans.txt configuration, Heroku and Fly setups, Ubuntu 20 LTS via Ansible, Celery with flower integration, AWS S3 media storage, Letsencrypt support via certbot, Postgis setup, Newrelic, Sentry, GraphQL support via Graphene-Django, pre-commit hooks, and more.

Features

  • Django 4.1.x: Built on the latest version of Django.
  • Python 3.9.x: Supports Python 3.9.x.
  • Poetry Support: Uses Poetry for managing project dependencies.
  • Support for black: Supports the use of black for code formatting.
  • 12-Factor based settings management via django-environ: Provides settings management based on the 12-Factor app methodology using django-environ. It reads settings from a .env file if present.
  • Supports PostreSQL 13.0: Supports PostgreSQL 13.0 and offers support for postgis-3.0.
  • Django Rest Framework 3.13.x: Includes Django Rest Framework for building REST APIs.
  • Uses django_sites instead of django.contrib.sites: Uses django_sites instead of the deprecated django.contrib.sites module for site management.
  • Uses mkdocs for project documentation: Utilizes mkdocs for generating project documentation.
  • Optionally password protect the docs when deployed via Ansible: Can password protect the project documentation when deployed using Ansible.
  • Uses pytest as test runner: Utilizes pytest as the test runner for running tests.
  • GitHub Actions: Integrates with GitHub Actions for continuous integration and deployment.
  • Custom User app: Provides a custom User app for easier extensibility.
  • Custom Auth app with JWT based Token Backend system: Offers a custom Auth app with a JWT based Token Backend system for authentication.
  • robots.txt and humans.txt configured: Configures robots.txt and humans.txt files for search engine optimization.
  • Optional Heroku Setup: Provides an optional setup for deploying to Heroku.
  • Fly Setup: Offers a setup guide for deploying to Fly.
  • Ubuntu 20 LTS via Ansible: Provides a guide for setting up on Ubuntu 20 LTS using Ansible.
  • Celery with flower integration: Supports integration with Celery and flower for task queue management.
  • AWS S3 media storage: Supports media storage on AWS S3.
  • Letsencrypt Support via certbot: Offers support for Letsencrypt SSL certificates using certbot.
  • Postgis Setup: Provides a setup guide for using PostGIS.
  • Newrelic: Includes support for Newrelic performance monitoring.
  • Sentry: Integrates with Sentry for error monitoring and reporting.
  • GraphQL support via Graphene-Django (Optional): Provides optional support for GraphQL using Graphene-Django.
  • pre-commit hooks: Includes pre-commit hooks for code quality control.

Summary

The django-init project is a comprehensive Django project template that offers a wide range of features and integrations to make setting up Django projects easier. It includes support for various tools and libraries such as Poetry, black, PostgreSQL, Django Rest Framework, GitHub Actions, Celery, AWS S3, Letsencrypt, and many more. The project provides detailed installation instructions and offers customization options during the setup process. Its rolling release model ensures that the project is regularly updated with the latest stable versions of Django and associated libraries.

django
Django

Django is a high-level Python web framework that encourages rapid development and clean, pragmatic design. It follows the model-view-controller (MVC) architectural pattern, providing an extensive set of built-in tools and conventions to streamline the creation of robust and scalable web applications.

mkdocs
MkDocs

MkDocs is a fast, simple and downright gorgeous static site generator that's geared towards building project documentation. Documentation source files are written in Markdown, and configured with a single YAML configuration file.