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.
- 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.
- 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.
Working incrementally on the application UI and adding more functionalities to it. Containerizing the project and setting up the deployment pipeline to aws
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! 🚀