Skip to content

A Scalable Chat Application, built using reactjs and express, and the architecture consists of 5 services. Used Redis and kafka for event streaming and decoupling responsibility providing real time updates.

Notifications You must be signed in to change notification settings

Astreak/DistributedChatApplication

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Algochat - Scalable Chat Microservice Application

Algochat is a scalable chat microservice application designed to handle millions of users while ensuring stateless consistency, availability, and fault tolerance. It utilizes various technologies including TypeScript, Express.js, Node.js, React.js, Redis PUB/SUB model, Kafka streaming, MongoDB for chat persistence, and PostgreSQL for storing user data.

Architecture Diagram:

Algochat Logo

Features

  • Scalability: Algochat has been tested to handle up to 2 million users, ensuring smooth performance even under high loads.
  • Stateless Consistency: The application maintains consistency across its stateless architecture, ensuring reliability and ease of maintenance.
  • Availability: With fault-tolerant design principles, Algochat ensures high availability, minimizing downtime and ensuring users can access the service when needed.
  • Technologies Used: Algochat leverages a stack of modern technologies including TypeScript, Express.js, Node.js, React.js, Redis PUB/SUB model, Kafka streaming, MongoDB, and PostgreSQL.

Technologies Used

  • TypeScript: A statically typed superset of JavaScript that helps in writing scalable and maintainable code.
  • Express.js: A minimal and flexible Node.js web application framework that provides a robust set of features for building web and mobile applications.
  • Node.js: A JavaScript runtime built on Chrome's V8 JavaScript engine, which enables building scalable network applications.
  • React.js: A JavaScript library for building user interfaces, enabling the creation of interactive UIs with ease.
  • Redis PUB/SUB Model: Redis is used as a message broker with a publish/subscribe model for real-time communication between services.
  • Kafka Streaming: Kafka is used for building real-time streaming data pipelines and applications.
  • MongoDB: A NoSQL database used for chat persistence, providing flexibility and scalability for storing chat data.
  • PostgreSQL: A powerful, open-source relational database used for storing user data with robust features and reliability.

OnGoing..

Working incrementally on the application UI and adding more functionalities to it. Containerizing the project and setting up the deployment pipeline to aws

Contributing

Contributions are welcome! If you find any bugs or have suggestions for improvements, please open an issue or submit a pull request.


Feel free to reach out to us with any questions or feedback. Happy chatting with Algochat! 🚀

About

A Scalable Chat Application, built using reactjs and express, and the architecture consists of 5 services. Used Redis and kafka for event streaming and decoupling responsibility providing real time updates.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published