Skip to content

Real-time Chat Microservice built in Rust using gRPC

License

Notifications You must be signed in to change notification settings

Atheer2104/chat-grpc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

92 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Chat gRPC

Chat gRPC is a real-time chat service built entirely in Rust using gRPC (Google Remote Procedure Call). It follows a microservice architecture with two main components:

  • Auth Service: Handles user authentication and registration.

  • Chat Service: Manages message broadcasting to all connected clients.

The project is fully asynchronous, ensuring high performance and responsiveness. A Terminal User Interface (TUI) is provided to interact with the service.

Video Showcase

grab-landing-page

Installation

Requirements

  • make sure that you have docker installed
  • make sure that you have rust installed
  • install bunyan as below (this requires node to be installed first)
npm install -g bunyan

Set up repo

  • Clone the repo with
git clone git@github.com:Atheer2104/chat-grpc.git
  • change the directory with
cd chat-grpc

Now we will create PostgreSQL and Redis containers using docker, these containers can be stopped and restarted from the docker desktop for further usage.

  • initialize PostgreSQL with
auth/scripts/init_db.sh 
  • Initialize Redis with
auth/scripts/init_redis.sh 

Usage

  • Create a separate terminal window and navigate to cd chat-grpc/auth and run the auth service with
cargo run --release --bin auth-server | bunyan
  • create a separate terminal window and navigate to cd chat-grpc/chat and run chat service with
cargo run --release --bin chat-server | bunyan

Now you can start one or more clients by having a separate terminal window for each client navigating to cd chat-grpc/client and starting the client with

cargo run --release --bin chat-client

Technology

Main Technologies used

  • JWT - Used to serve as an access token allowing users to be able to chat
  • PostgreSQL - Used to save user credentials and JWT access token
  • Redis - Used to cache JWT auth token
  • Tonic - A rust gRPC library, Used to implement the gRPC functionality
  • Tokio - A rust Asynchronous runtime, Used to schedule and spawn asynchronous tasks
  • Tracing - Used to write logs asynchronously
  • Ratatui - Used to create Terminal User Interfac

License

The project is licensed under the MIT license

See LICENSE for more information.

About

Real-time Chat Microservice built in Rust using gRPC

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published