NB: This repository will be archived until October of this year (2023). I will resume work on it and make it publicly available once again. Sorry for any inconveniences this may lead to 🥲
This project is an example of a GRPC-based microservices architecture that utilizes MongoDB as its database and is integrated with a Flutter mobile application.
The project is composed of the following components:
This microservice contains functionalities that aid in sending and verifying phone numbers using
One-Time Password(OTP) This service is implemented using Rust
& Twilio
.
This microservice is responsible for handling push notification requirements of the system and is written
in Golang
.
This microservice is responsible for handling the upload and transformation of media files using cloudinary
& written
in Golang
.
This microservice is responsible for handling user authentication and authorization (written in Rust
).
This microservice contains common functionalities that are shared across different modules of the
system. It includes functionalities such as file uploads, email notifications, and authentication (written in Golang
).
This microservice serves as the backbone of the application and contains the business logic of the
system. It provides CRUD (Create, Read, Update, Delete) operations on data related to the system's
core entities (written in Golang
).
This is a Flutter-based mobile application that interacts with the microservices to perform various operations such as viewing data, creating new entities, and updating existing ones.
The following diagram shows the high-level architecture of the system:
The three microservices are independent of each other and communicate using the gRPC protocol. The mobile application communicates with the microservices using the same protocol.
All three microservices are integrated with MongoDB as their database. MongoDB is a NoSQL document-based database that provides high performance and scalability.
- Install the latest version of MongoDB.
- Clone the project repository.
- Install the dependencies for each microservice and the mobile application.
- Run the MongoDB instance.
- Start the microservices in the following order: Auth Microservice, Shared Microservice, and Core Microservice.
- Start the mobile application.
-
Use the mobile application to interact with the system.
-
Use a gRPC client such as grpcurl or bloomrpc to directly interact with the microservices.
This project provides an example of how to build a scalable and modular microservices architecture using GRPC and MongoDB. It also demonstrates how to integrate a Flutter mobile application with the microservices to provide a seamless user experience.