A proof-of-concept forum application created using a microservices architecture.
This application was created as a hobby project in spare time. In current form the application serves as a proof of concept containing bare-bones functionality.
There are definitely aspects that I'd like to improve or polish further, in addition to some ideas for functionality that I would like to implement at some point. As such, the project should be considered a work-in-progress at this stage.
Users are served the React site from the frontend
and make calls to the REST API exposed by the gateway-service
. The gateway-service
makes calls to the relevant services for the request.
Interservice communication is handled through RPC calls (utilising gRPC) and event sourcing (utilising Kafka).
I used a variety of languages for writing the services as this was created as a hobby project and the architecture gave me some room to play around with.
Service | Language | Datastores | Description |
---|---|---|---|
frontend | TypeScript (React) | N/A | Web-based user interface |
gateway-service | Golang | N/A | Exposes a HTTP REST API to allow users to communicate with the application. |
panel-service | Golang | PostgreSQL, Redis | Responsible for operations related to panels |
post-service | Golang | PostgreSQL, Redis | Responsible for operations related to posts |
user-service | TypeScript (Node) | MongoDB | Responsible for operations related to users |
auth-service | Python | PostgreSQL | Responsible for authenticating users |
comment-service | Python | PostgreSQL, Redis | Responsible for operations related to comments |
For more information about configuration and deployment, please view the documentation located in the /docs
folder.
Acknowledgments:
- Logo Icon: Tabler Icons (MIT License)
- Logo Font: Oregano (Open Font License)
This repository is licensed under the Apache License v2.0.