mirror of
https://github.com/hexolan/panels.git
synced 2026-03-26 12:40:21 +00:00
docs
This commit is contained in:
46
README.md
Normal file
46
README.md
Normal file
@@ -0,0 +1,46 @@
|
||||
# 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).
|
||||
Reference in New Issue
Block a user