mirror of
https://github.com/hexolan/panels.git
synced 2026-03-26 12:40:21 +00:00
47 lines
2.8 KiB
Markdown
47 lines
2.8 KiB
Markdown
# Panels
|
|
|
|
A proof-of-concept forum application created using a microservices architecture.
|
|
|
|

|
|
|
|
## 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/)).
|
|
|
|

|
|
|
|
## 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).
|