Skip to content

catness812/e-petitions-project

Repository files navigation

E-Petitions Microservice Architecture

GoLang Gin-Gonic PostgreSQL GORM Redis Docker Cloud Deployment Domain REST API

Description

A modern solution to make users' voices matter!

Problem Statement

In the Republic of Moldova, there is a scarcity of user-friendly platforms for individuals to express their opinions effectively. The existing websites are often poorly designed, inadequately developed, and do not sufficiently prioritize user preferences.

Solution

To address this issue, we propose an enhanced platform for petitioning in Moldova. This solution incorporates robust security features, streamlined login processes, intuitive drafting tools, and efficient archiving mechanisms. Our platform is dedicated to facilitating every aspect associated with petitions and providing a seamless experience for expressing your opinion.

NOTE: As a MVP, the solution is aimed for the students of UTM as a priority.

How to use

  1. Clone the repository:
git clone https://github.com/catness812/e-petitions-project.git
  1. In order to use the app, run the "docker compose up" in the root of your project. This will run the services inside a containerized environment. Requests should be sent to the Gateway service port (http_port: :1337). See Gateway Readme file for instructions.
docker compose up

How to use (for regular users):

Still in development (currently finishing the front)

Tech Stack

This project leverages the following technologies and frameworks:

  • Programming Language: GoLang with Fiber Framework for fast, feature-rich, and clean code.

  • Data Storage and Querying: PostgreSQL with GORM for Go (ORM) for efficient data management. Redis is used for OTP & Security Services, providing faster response times and time-dependent variables.

  • Deployment: Utilizes Docker for seamless deployment. Ongoing work on cloud deployment with a domain registered at epetitii.co via porkbun.com.

  • Protocols and Communication: The gateway communicates with the web client (frontend) through a classic REST API. Other services, including internal communication with the gateway, employ gRPC for superior performance.

Microservices Involved

As seen in the repo, there are 6 main services:

  1. Gateway - for external communication
  2. Mail Service - for notifying users and admin about changes involving petitions and personal information.
  3. Petition Service - a service for managing all information referring to petitions.
  4. User Service - same as the last one, but about users.
  5. Security Service - this service is a middleware, responsible for secure registering and logging the user and other aspects.
  6. OTP Service - OTP service is a part of security service, but it is responsible for signing a petition.
  7. Spam Filter - yeah, there are 7 of them, not 6, because spam filer service is a middleware, from an external repo, that manages the censoring and grammar correction of information inputted by the user (it works in Python and communicating with the front via web-sockets).

NOTE: every microservice has its documentation so don't hesitate to click on it and see how it's working.

Front Development

Frontend has a different repository developed in React TS, with Chakra UI. Here you can see more about it, and even launch a test to see how it's working.

Contributors

Contributors

Please note that not all contributors are active, some of them have left the team. All contributions, bug reports, bug fixes, documentation improvements, enhancements, and ideas are welcome.

We don't have a contributing guide or a issues Git page, but we are on the way to make them.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 10