Skip to content

hexolan/panels

Repository files navigation

Panels

A proof-of-concept forum application created using a microservices architecture.

Panels Banner

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) and event sourcing (utilising Kafka).

Architecture

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 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

Deployment and Configuration

For more information about configuration and deployment, please view the documentation located in the /docs folder.

License

Acknowledgments:

This repository is licensed under the Apache License v2.0.