Projects

Table of contents

Services (External)

Antaeus

Antaeus is the platform front-end.

Deianira

Deianira is the platform back-end.

Supporting (Internal)

Orchestration

rute

The rute repository is a collection of Docker compose files to aid in the set up and running of the platform. It is designed to be as close as possible to what a real-life deployment would look like. What does that mean?

  • It runs an nginx reverse-proxy that forwards requests to the front-end and back-end(s).
  • It serves request over https. This mimics the real-world and is required for HttpOnly cookies to work.
  • It provides a single authorative and reproducable way of running the services. If every developer does it his or her own way, the effort to get the services to play nicely together is duplicated for each developer.
  • This is developer equivalent of Infrastructure as code.
  • Multiple different configurations are supported, depending on what you’re working on, or trying to achieve. For example, databases can be brought up together with the proxy, but the back-end and front-end services can run directly from source.

See the rute documentation for detailed usage information.

Code style, consistency & quality

editor-config

The editor-config repository is the single source of truth regarding the age old tabs vs spaces debate1. TLDR; We use spaces with an indentation level of 2.

There is no need to remember this by heart. This repository exposes an .editorconfig file which is automatically installed in all repositories.

An EditorConfig plugin may be required for your text editor/IDE. If you’re using Visual Studio Code, here is a shortcut.

The configuration is published as an npm package internally and should be present in all repositories.

prettier-config

Organisation wide prettier-config. Whilst it is possible to use prettier directly, we use eslint-plugin-prettier to integrate prettier with ESLint.

The configuration is published as an npm package internally and should be present in all repositories.

eslint-config-base

The eslint-config-base repository exposes a consistent set of base ESLint rules for the organisation. A plugin for your text editor/IDE is highly recommended. Microsoft publishes one for Visual Studio Code.

The configuration is published as an npm package internally and should be present in all non-Vite repositories.

eslint-config-vite

Similar to eslint-config-base, eslint-config-vite deals with Vite/front-end specific rules.

The configuration is published as an npm package internally and should be present in all Vite repositories.

commitlint-config

The commitlint-config repository exposes a consistent configuration for commitlint. The commitlint utility is invoked any time you create a new commit to validate the overall format of the commit message. How? It is executed in git’s commit-msg hook. This is automatically done when you install a repository’s dependencies.

The configuration is published as an npm package internally and should be present in all repositories.

commitizen-config

The commitizen-config repository exposes a consistent configuration for commitizen.

The configuration is published as an npm package internally and should be present in all repositories.

lint-staged-config

The lint-staged-config repository exposes rules/patterns for lint-staged. lint-staged verifies that any new code committed satisfies the ESLint/prettier rules of the repository. Similar to the commitlint, this slots into git’s pre-commit hook.

The configuration is published as an npm package internally and should be present in all repositories.

Testing

supertest-openapi

The supertest-openapi repository hosts a thin wrapper around supertest specifically for use with with OpenAPI specifications.

supertest-graphql

The supertest-graphql repository hosts a thin wrapper around supertest specifically for use with with GraphQL APIs.

Continuous Integration / Release management

semantic-release-config-npm

The semantic-release-config-npm repository exposes a semantic-release configuration used by internal npm packages.

semantic-release-config-service

The semantic-release-config-service repository exposes a semantic-release configuration used by services.

semantic-release-info

The semantic-release-info repository hosts a semantic-release plugin which is used to extract release information and generate metadata that may be required to create a release. This is used by the CI system.

github-action-release-info

The github-action-release-info repository is a GitHub Action that uses the information extracted by semantic-release-info and makes it available to steps/jobs in the CI pipeline.

github-workflows

Common, shared Github Action workflows used by other repositories. Any workflow that is common or used by more than 1 repository belongs in the github-workflows repository. Ad-hoc workflows that are specific to a project belong in the project itself. At the point where a workflow needs to be shared with another project it becomes a candidate for refactoring and extrapolating requirements, and importing it into the github-workflows repository.

Data

aerodromes

aircraft

nomenclatio

market-players

aircarriers

air-law-treaties

currency

External / Third-party

mantis-theme

The mantis-theme repository contains the Mantis theme we’ve purchased for Material UI.