-
Notifications
You must be signed in to change notification settings - Fork 0
Documentation
- Django with DRF (Django Rest Framework): Django, a high-level Python web framework, along with DRF to construct our RESTful API, following Django and DRF conventions. We used Django version 5 and utilized Python 3.11 for development.
- Postgres Database: We opted for Postgres as our database system due to its seamless integration with Django and relational capabilities.
Our REST API follows the OpenAPI specification version 3.11. A schema is generated automatically using Swagger and can be found at /api/swagger
.
Authentication is done through the UGent CAS service. The authentication endpoint can be found at /api/auth/cas/login
. Only when DEBUG=true
is set in the environment file, the authentication procedure redirects to an endpoint that gives back obtained JWT tokens and the CAS attributes of the authenticated user.
-
Vue.js: Our single-page application is developed using Vue.js, a progressive JavaScript framework known for its simplicity and flexibility in building interactive user interfaces.
- PrimeVue, PrimeFlex and PrimeIcons: we leveraged notable packages from PrimeTek, to integrate customizable and feature-rich UI components.
- Vite: For an efficient development workflow, we recommend using Vite, offering a fast development server with HMR support.
Both backend and frontend contain tests, to track bugs for whenever code was edited later on.
We've made use of the django testing features using the manage.py file (look at the deployment rubric if you long to execute the tests yourself). The tests are organized in a tests file for every django app separately and their names start with test, as mandated by django.
We've made use of 2 different packages this time. One is called vitest, perfect when working with vite. The other is called cypress, a well maintained package that can test apps directly in the browser. Creating tests is easy and can be debugged visually, as said on the official website, which honestly greatly improves efficiency.
Our application stacks are containerized using Docker. We're making use of 6 containers.
- Nginx: Reverse Proxy that redirects the requests to either the backend or frontend container.
- Backend: The container running django by making use of gunicorn.
- Frontend: After building the frontend we're using another nginx container to serve the frontend to any requests coming in.
- Postgres: Our database.
- Redis: In memory data store.
- Celery: Allows us to run tasks from django in the background.