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.
- Admin (React)
-
The admin UI is based on
react-admin
as a single page application (SPA) which accesses the GraphQL API of the backend.
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.