This commit is contained in:
2023-09-27 20:28:36 +01:00
parent 66ac08e1d5
commit 8870c1f7b8
4 changed files with 87 additions and 0 deletions

46
README.md Normal file
View File

@@ -0,0 +1,46 @@
# Panels
A proof-of-concept forum application created using a microservices architecture.
![Panels Banner](/docs/img-1.png)
## About
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.
## Architecture
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](https://grpc.io/)) and [event sourcing](https://microservices.io/patterns/data/event-sourcing.html) (utilising [Kafka](https://kafka.apache.org/)).
![Architecture](/docs/img-2.png)
## Services
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](/services/frontend) | TypeScript (React) | N/A | Web-based user interface |
| [gateway-service](/services/gateway-service) | Golang | N/A | Exposes a HTTP REST API to allow users to communicate with the application. |
| [panel-service](/services/panel-service) | Golang | [PostgreSQL](https://www.postgresql.org/), [Redis](https://redis.io/) | Responsible for operations related to panels |
| [post-service](/services/post-service) | Golang | [PostgreSQL](https://www.postgresql.org/), [Redis](https://redis.io/) | Responsible for operations related to posts |
| [user-service](/services/user-service) | TypeScript (Node) | [MongoDB](https://www.mongodb.com/) | Responsible for operations related to users |
| [auth-service](/services/auth-service) | Python | [PostgreSQL](https://www.postgresql.org/) | Responsible for authenticating users |
| [comment-service](/services/comment-service) | Python | [PostgreSQL](https://www.postgresql.org/), [Redis](https://redis.io/) | Responsible for operations related to comments |
## Deployment and Configuration
For more information about configuration and deployment, please view the [documentation](/docs/README.md) located in the ``/docs`` folder.
## License
**Acknowledgments:**
* Logo Icon: [Tabler Icons](https://github.com/tabler/tabler-icons) ([MIT License](https://github.com/tabler/tabler-icons/blob/master/LICENSE))
* Logo Font: [Oregano](https://fonts.google.com/specimen/Oregano) ([Open Font License](https://scripts.sil.org/OFL))
This repository is licensed under the [Apache License v2.0](/LICENSE).