Skip to content

Welcome to myproject

Todo

This is the boilerplate documentation for myproject. Use it as a starting point to document the actual application. Feel free to remove and adds parts where needed.

What is the purpose of the application?

Todo

What is the application about? What are the target groups and main user stories?

Architecture

Todo

Describe the application architecture including connections to external services. Make sure to include all actual components of the application.

The application consists of different components. The frontend and the admin UI are connected via a GraphQL API to a backend implemented in Go. The data is kept in a PostgreSQL database. The frontend is a React single-page application.

System context diagram

graph TB
  S[myproject]
  M[email service]
  S -.->|sends emails| M
  A[Anonymous User<br/>Person] -.->|Can register a new organisation| S
  B[System Admin<br/>Person] -.->|Manages organisations and accounts| S
  C[Organisation Admin<br/>Person] -.->|Manages organisation, can do X| S

  classDef person fill:#08427b,color:#fff,stroke:none;
  class A,B,C person;
  classDef currentSystem fill:#1168bd,color:#fff,stroke:none;
  class S currentSystem;
  classDef otherSystem fill:#999999,color:#fff,stroke:none;
  class M otherSystem;

Tip

See C4 model for an introduction to the C4 architecture diagrams.

Components

Backend (Go)

Provides a GraphQL API for the frontend and admin UI. Data is stored in a PostgreSQL database. Business logic and validation rules are defined in the backend.

Frontend (React)

The frontend is a single-page application based on React. It uses the GraphQL API for authentication and retrieving and manipulating data.

Screenshot of the frontend
The frontend provides the public user interface

Admin (React)

The admin UI is based on react-admin as a single page application (SPA) which accesses the GraphQL API of the backend.

Screenshot of the admin UI
Data of the application can be edited in the admin UI

Development process

  • All components of the application are versioned in a Git repository (as a monorepo).
  • It uses GitLab CI for the build process to build and test the individual components and deploy the application.
  • The result of a pipeline are Docker images for frontend, admin and backend, which are deployed via Helm in Kubernetes.

Deployment

The application is deployed in containers via Kubernetes. It can be run stateless except for the database.

The GraphQL API is served in the frontend and admin containers using an Nginx web server as a reverse proxy.

A review and integration deployment is created in a dev Kubernetes cluster.

Production

Todo

Describe the production deployment.