Skip to content

A batteries-included, opinionated template for Django Rest Framework APIs

License

Notifications You must be signed in to change notification settings

flexy/cookiecutter-drf

Repository files navigation

cookiecutter-drf

Build Status codecov Code style: black

Getting Started

  1. Install cookiecutter.
  2. Generate your project from cookiecutter-drf:
cookiecutter gh:flexy/cookiecutter-drf

Features

Architecture:

  • Containerized with Docker
  • Python 3.7
  • Django 2.2
  • Web server: Gunicorn and Uvicorn
  • Databases: PostgreSQL, Redis
  • Dependency and python version management (Pipenv)
  • Tasks: Celery and Celery Beat

Utilities:

  • Better settings (django-environ, django-configurations)
  • Better logging (Sentry, logutils)
  • Common model fields and mixins (django-model-utils)

API:

  • Django Rest Framework
  • Swagger UI (drf-yasg)
  • Redoc UI (drf-yasg)
  • OpenAPI schema (drf-yasg)
  • QuerySet filtering (django-filter)

Authentication:

  • Custom user model
  • Authentication endpoints (djoser)
  • Social authentication and OAuth2 (social-auth-app-django, django-oauth-toolkit, django-rest-framework-social-oauth2)

Testing and Code Quality:

  • pytest with pytest-django
  • Easy API testing (django-rest-assured)
  • Factories (factory-boy)
  • django-debug-toolbar available locally
  • Code quality (Flake8, Black)
  • Code coverage (pytest-cov)
  • CI integration (Travis CI)

Continuous Deployment:

  • Heroku

Upcoming Features

  • Email verification
  • Better permissions

Development

Getting started

  1. Install dependencies:
pipenv install
  1. Launch the project environment:
pipenv shell
  1. Initialize pre-commit:
pre-commit install

Generate the project

cookiecutter . --no-input --overwrite-if-exists