โ„น๏ธOverview

About our back ends

Technology Stack

We have built our back ends primarily using Pythonarrow-up-right, Djangoarrow-up-right, and Django Rest Frameworkarrow-up-right.

circle-info

We recommend getting familiar with the basics of each technology before contributing to one of our back ends.

Code Repositories

Each service has a back end code repository in the Ocado Technologyarrow-up-right GitHub organisation which follows the naming convention:

codeforlife-{service}-backend

Viewarrow-up-right our back end repos on GitHub.

Template

To speed up the process of creating a new back end repo, we created the template repo codeforlife-template-backendarrow-up-right which can be used to scaffold a new service's back end repo. Read herearrow-up-right on how to create a repo from a template.

circle-check

CI/CD Pipelines

In order to avoid repeating the same pipelines in every back end service, we centrally define the pipelines in our workspace repoarrow-up-right, and reference them in each back end service. In GitHub's terminology, these are referred to as reusable workflowsarrow-up-right.

There are 2 main pipelines in each back end service.

main.yaml

The main pipeline for each back end service which simply reuses the backendarrow-up-right pipeline located in the workspace. This pipeline is responsible for testing and deploying a back end service.

You can see an example of this pipeline in the back end template repoarrow-up-right.

contributing.yaml

This pipeline is responsible for managing the process of contributing to our code base, such as checking our contributors have signed our contributor agreement, auto-assigning/-unassigning contributors to issues, and more.

You can see an example of this pipeline in the back end template repo.arrow-up-right

Python Package

To avoid repeating code across 2 or more back ends, we have created the repo codeforlife-package-pythonarrow-up-right which automatically tests and releases new version of the package using semantic versioningarrow-up-right. These versioned packages can then be installed into our Python virtual-environments (.venv).

Learn more about our Python package herearrow-up-right.

Last updated

Was this helpful?