Backend Architecture

├── .github/
│   └── ISSUE_TEMPLATE/
├── app/ # Backend
│    ├── config/  # Backend
│          └── settings.py
│    ├── frontend/ # Backend
│    ├── server/  # Backend
│    ├── .babelrc
│    ├── manage.py
│    ├── requirements.txt  # Backend
│    ├── package.json
│    ├── package-lock.json
│    └── webpack.config.js
├── dev/
│    ├── django.dockerfile
│    ├── webpack.dockerfile
│    └── dev.env
├── .dockerignore
├── .gitignore
├── jsconfig.json
├── CONTRIBUTING.md
├── docker-compose.yml
├── LICENSE
└── README.md

Overall project structure

├── config/
│   ├── <Django Project Files>
├── frontend/
│   └── <Django App Files>
├── server/
│   ├── <Django App Files>
│   └── <RESTFramework Files>
├── manage.py
└── requirements.txt

Backend Architecture

Summary

Backend Tech Stack: Django, DjangoRESTFramework

The backend architecture is consists the docker/ directory, the Django config/ project, the frontend/ and server/ Django apps, and a couple of Django or Docker-related loose files. In addition to serving as part of our backend, the frontend/ directory also serves our frontend architecture. More about the frontend/ directory as it relates our frontend architecture can be found in our guide on Frontend Architecture.

Overview of Directories and Files

  • config/: houses the Django project files.
  • <Django Project Files>: More on the files in this directory can be found in Django's documentation.
  • <Django App>: currently we have two directories that are Django apps: frontend/ and server/. Within these directories are the default <Django App Files> that are created with every app as well as <RESTFramework Files>.
  • <Django App Files>: These files make up a Django App. To know more about these apps, read the section about Django App Files.
  • <RESTFramework Files>: Currently consists of only serializers.py, these files are additional files that support Django via the DjangoRestFramework library.
  • manage.py: Part of Django, this is the entry point file for starting the Django server. This file handles a lot of critical settings, so be sure to read up on it in Django's documentation.
  • requirements.txt: A Python file that contains all dependencies for a project. It is the Python equivalent to Javascript's package.json.

Django App Files

├── migrations/
│   └── __init__.py
├── __init__.py
├── admin.py
├── apps.py
├── models.py
├── tests.py
├── urls.py
└── views.py

Files generated by Django when creating a new Django app

As of right now, no specific changes have been made to these files, so please refer to Django's documentation for now to learn what they do in a general sense.

Django REST Framework Files

├── serializers.py

RESTFramework files used to create a Django REST API

As of right now, no specific changes have been made to these files, so please refer to DjangoRESTFramework's documentation for now to learn what they do in a general sense.

Additional Resources

Django 4.0 Documentation
DjangoRestFramework Documentation