ChatMate is a real-time chat application built with Spring Boot, WebSocket (STOMP), Spring Messaging, and React.js. It allows users to join a public chat room, send private messages, and manage their online/offline status seamlessly.
- Features
- Tech Stack
- Project Structure
- Screenshots
- Demo Video
- Usage
- Examples
- Troubleshooting
- Contributors
- License
- Real-time messaging using WebSocket (STOMP protocol)
- Public chat room for group discussions
- Private messaging between users
- Online/Offline status tracking
- User-friendly React.js frontend
- Notification of user join/leave events
- See when others are typing..
- Send Emojis
- Spring Boot backend with scalable architecture
- Java 17 – Primary programming language
- Spring Boot 3.x – Application framework
- Spring Security – Authentication and authorization
- Spring Data JPA – Database abstraction layer
- WebSocket – Real-time bidirectional communication
- JWT – JSON Web Tokens for stateless authentication
- Maven – Dependency management and build tool
- WebSTOMP & Spring Messaging – Real-time messaging
- MySQL – Primary relational database for production
- H2 Database – In-memory database for testing
- React.js – Frontend framework
- JavaScript – Type-safe JavaScript development
- WebSocket Client – Real-time communication
- REST API Integration – HTTP client for API calls
- Docker – Containerization
- Spring Boot Test – Integration testing
- Lombok – Reduced boilerplate code
- Git & GitHub – Version control
ChatMate-A-Real-Time-Chat-Application/ │── backend/ # Spring Boot backend (WebSocket, messaging, REST APIs) │── frontend/ # React.js frontend (UI components, chat interface) │── README.md # Project documentation
- Start the backend server.
- Start the frontend application.
- Open the app in your browser and:
- Join the public chat room
- Send private messages to specific users
- See who's online/offline
- Public Chat: Multiple users join and see all messages in real time.
- Private Messaging: Send a direct message to another user using their username.
- Status Tracking: Instantly see when a user comes online or goes offline.
- If WebSocket doesn't connect, check backend server logs.
- Ensure backend runs on port 8080 and frontend connects correctly.
- Run
npm installagain if frontend dependencies fail.
- SAdhikary2 – Creator & Developer
This project is licensed under the MIT License






