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.