vodafone-website / docs/system_design/README.md
System design
System design
1. Overview
Write a quick overview that describes the document.
Example
This document contain the system design for the Dar Al Atta project. It is intended to be an updated document that describes the system design and architecture of the project. It should be updated whenever there is a change in the system design or architecture.
2. High level architecture
This section should include a high level architecture diagram that shows the main components of the system and how they interact with each other.
You can use any tool, e.g. excalidraw, mermaid, etc. to create the diagram until we have a standard tool for the team.
Example
You can see 3 main components in the design:
- Mobile app, which communicates with api and firebase for auth
- API, which is used mainly for reading data, accepting donations, and other user-related inputs
- Admin dashboard (strapi), which is used for managing dynamic entities in the system, viewing users and donations, etc.
3. Deep dive
This section should include a deep dive into each component of the system. You can use the same tool to create the diagrams.
Example
3.1. Authentication flow
The authentication flow works as follows:
- The mobile application communicates with Firebase for authentication.
- Once the user gets authenticated, the mobile application receives the JWT that is stored in cache/local storage.
- The JWT is used in every request to the API.
- The API verifies the JWT by communicating with Firebase on every request. On the initial request,
POST /login, the API create a new user record in the database.
3.2. Projects
The projects data are stored on strapi, so on every request, the API communicates with strapi to get the data. The API caches the data in memory until the data are invalidated by the admin when an update is made (diagram to be updated to show the caching mechanism).
3.3. Another component
And so on. Each component of the system should have a diagram and a description explaining how it works and how it interacts with other components.