Architecture Diagrams
We are loosely following the C4 Model for diagramming our software architecture. We use diagrams.net to create and edit our diagrams.
Level 1: System Context diagram
The following context diagram is suitable for anyone to gain a high-level overview of the system. It shows the main personas interacting with the Digital Platform and the existing software the system connects to.
Level 2: Container diagram
The following diagram is aimed at support and operations staff as well as developers and architects. It shows the primary “containers” that comprise the Digital Platform.
We have three user-facing containers. All are Single Page Applications (SPAs) using Vue.js. They are hosted in Firebase Hosting and connect to our cloud back end services using the Firebase SDK.
Admin is a single page application aimed at enabling JAC staff to create and manage exercises and the applications received to those exercises.
Apply is a single page application aimed at enabling candidates to view vacancies, check their eligibility, apply and monitor their application.
Assessments is a single page application aimed at enabling assessors (essentially referees) to provide an independent assessment (reference) for a candidate.
Our cloud back end services are all based in Firebase.
Cloud Firestore is a cloud-based database within which we store exercise, candidate, application, assessor and related data.
Firebase Authentication is a cloud-based authentication service used to identify our users so we can ensure they have appropriate access.
Cloud Storage is a cloud-based file storage service where we store all candidate and assessor files.
Cloud Functions are cloud-based pieces of functionality that can be run in response to defined events (e.g. when a candidate applies for an exercise), scheduled (e.g. automatic backups) or called directly (e.g. send a batch of emails).
Level 3: Component diagrams
The following diagrams are aimed at architects and developers and show more detail on the components of the software containers being developed. In particular we identify the key configurables of each cloud-based container.
Our functions are grouped as follows:
- Background Functions are automatically triggered when defined events happen, for example when a candidate applies for a vacancy
- Callable Functions are primarily triggered from our ‘front end’ apps, for example when a user wishes to send a batch of emails.
- Scheduled Functions are triggered according to a pre-defined schedule, for example backups are made on an hourly basis.
Level 4: Code diagrams
As a small agile team it is unlikely we will add many code diagrams anytime soon.