Skip to content
This repository has been archived by the owner on Jun 8, 2023. It is now read-only.
/ proche Public archive

An app integrating with Google Maps, from where people can connect and get help from their neighbours easily

Notifications You must be signed in to change notification settings

quabynah-bilson/proche

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

72 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Proche 🧭🗺️: gRPC Microservices with MongoDB and Flutter

(means Nearby in French)
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 🥲

GoDoc Rust Flutter

License

GitHub stars GitHub issues

GitHub pull requests GitHub pull requests closed

GitHub contributors GitHub last commit

GitHub repo size in bytes GitHub code size in bytes

GitHub language count GitHub top language

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.

Overview

The project is composed of the following components:

SMS Microservice: (::1500)

This microservice contains functionalities that aid in sending and verifying phone numbers using One-Time Password(OTP) This service is implemented using Rust & Twilio.

Notification Microservice: (::1600)

This microservice is responsible for handling push notification requirements of the system and is written in Golang.

Media Microservice: (::1700)

This microservice is responsible for handling the upload and transformation of media files using cloudinary & written in Golang.

Auth Microservice: (::1800)

This microservice is responsible for handling user authentication and authorization (written in Rust).

Shared Microservice: (::1900)

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

Core Microservice: (::2000)

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

Mobile Application:

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.

Architecture

The following diagram shows the high-level architecture of the system:

Architecture Diagram

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.

Installation and Setup

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

Usage

  • Use the mobile application to interact with the system.

  • Use a gRPC client such as grpcurl or bloomrpc to directly interact with the microservices.

Conclusion

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.

About

An app integrating with Google Maps, from where people can connect and get help from their neighbours easily

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published