Overview

April 2026

This project is a real-time chat application built using React and WebSockets. The goal of the application is to allow multiple users to join chat rooms and communicate instantly without refreshing the page. The system is designed using a client-server architecture, where the server manages connections, rooms, and message broadcasting, and the client handles user interaction and UI updates. The application uses socket.io to establish persistent WebSocket connections between the client and server. This allows continuous, bidirectional communication, enabling features like live messaging, message editing, deletion, and typing indicators. The server organizes users into rooms, allowing multiple chat sessions to run simultaneously. Each room maintains its own message history and active users, ensuring that communication is isolated per group. This project helped me understand real-time communication, event-driven programming, and how to manage shared state across multiple users in a live environment using React.

Features

  • Join chat rooms using a username and room name
  • Send and receive messages in real-time without refreshing the page
  • Edit previously sent messages and reflect updates instantly for all users
  • Delete messages with real-time updates across the room
  • Typing indicator to show when a user is typing
  • Supports multiple users in the same room simultaneously
  • Room-based messaging (messages are only visible within the room)
  • Displays message history for each room
  • Tracks connected users in each room

Technologies Used

Frontend: React

Backend: Node.js, Express

Real-Time Communication: WebSockets using socket.io

Architecture: Client-server architecture with event-driven communication

Data: In-memory storage for chat logs and room data

Version Control: GitHub

Challenges Faced

One of the main challenges was understanding how WebSockets work compared to traditional HTTP requests.

Hosting Plans

The application was deployed using AWS Elastic Beanstalk as part of the school project. Due to resource limitations, the live deployment is not currently active. I am planning to redeploy the application using an alternative hosting platform in the future.

Repository Access

If you're interested in viewing the repository, feel free to reach out by email. I'd be happy to share it with you!