Skip to content

mcagov/beacons

Repository files navigation

code style: prettier CI/CD Pipeline

Beacons registration service

The Beacons registration service enables:

  • 406Mhz beacon owners to register their details with the Maritime & Coastguard Agency
  • Search and rescue Mission Control Centres to retrieve information about beacons during distress signal activations

It comprises three applications:

  1. A public-facing frontend that uses NextJS and the [GOV.UK Design System] (https://design-system.service.gov.uk/). Source code is in the webapp/ directory.
  2. An API that uses Spring Boot, Postgres and OpenSearch. Source code is in the service/ directory.
  3. A backoffice single-page application (SPA) that uses React to allow users in MCA to query and perform operations on beacon registrations. Source code is in service/src/main/backoffice. The SPA is served by Spring Boot.

Architecture

Architecture diagram

Infrastructure-as-code remains the single source-of-truth for Beacons infrastructure! Always check terraform/ if unsure.

Local development

dependency version
java 11.x
nvm 0.38
terraform 1.0.X
Docker desktop Latest
$ make       # Start up the applications in development mode, with backing services

Infrastructure-as-code

The Terraform directory contains the Terraform code for managing the infrastructure for the Beacons registration service.

Deployment

Automated testing, building and deployment is performed using GitHub Actions with configuration held in .github/workflows.

Development environment

A build and deployment to the development environment is triggered on each push to main. Docker images are tagged with the hash of the triggering commit and published to AWS Elastic Container Registry. Images built and deployed to for the development environment are ephemeral and not used anywhere else.

Staging environment

Creating a pre-release triggers a versioned deployment to the staging environment of code at the HEAD of the main branch. Docker images are tagged with the version tag of the release. Version tags must match the pattern v*.*.

Production environment

Changing the status of a pre-release to release triggers a deployment to production of the images that were created for the staging environment. Environment protection is applied to the production environment such that another member of the development team is prompted to approve deployments to production.

Manual scenario testing that must be performed before and after each release is documented in tests/.

Architectural Decision Records (ADRs)

We use ADRs to document design choices that address functional and non-functional requirements that are architecturally significant to the Beacons Registration project. Please see this record for how and when to document ADRs for the project.

Secrets

Secrets are set in the Repository and injected during deployment.

License

Unless stated otherwise, the codebase is released under the MIT License. This covers both the codebase and any sample code in the documentation.

The documentation is © Crown copyright and available under the terms of the Open Government 3.0 licence.