Henshi is a webapp based on microservices architecture, it uses Vue.js as its primary frontend framework and Nest.js on the backend.
- PostgreSQL as its SQL database
- Redis as cache and key-value database
- Nginx as a reverse proxy
- gRPC as a synchronous method of communication between the services
- RabbitMQ as an asynchronous method of communication between the services (🚧 In progress)
- Docker as its container management tool
- Kubernetes as its container orchestration tool (🚧 In progress)
- Github Actions as its CI/CD platform (🚧 In progress)
flowchart LR
%% Styles
classDef app fill:#f7e081,stroke:#333,stroke-width:1px
%% Entities
FE(fa:fa-twitter Frontend)
LB(Reverse proxy)
A(Auth API)
A-R[(Redis)]
U(Users API)
U-P[(PostgreSQL)]
N(Notification API)
MMB(MMB API)
MMB-P[(PostgreSQL)]
MMB-R[(Redis)]
RMQ(RabbitMQ)
%% Flow
FE -->|HTTP| LB
LB --->|HTTP| AS & US & MMBS
AS <-.->|gRPC| US & MMBS
US <-.->|gRPC| MMBS
subgraph Backend
RMQ <-.->|AMQP| AS
subgraph AS [Auth service]
direction LR
A --> A-R
end
subgraph US [Users service]
direction LR
U --> U-P
end
subgraph MMBS [Muscular Memory Builder service]
direction LR
MMB --> MMB-P
MMB --> MMB-R
end
end
See DEVELOPMENT.md.