WebChat is a full-stack real-time messaging application built with Spring Boot, WebSockets (STOMP/SockJS) and React. The goal of the project is to simulate a modern chat environment similar to Messenger/WhatsApp — supporting authentication, live messaging, conversations, persistence, and extensible architecture for future features.
JWT Authentication: Stateless security with JSON Web Tokens.
Real-time messaging using WebSocket STOMP
Intelligent Rate Limiting: Powered by Bucket4j to prevent brute-force logins and message spamming.
Message saving & conversation persistence
Pagination of chat history
Direct & Group conversations
Live Notifications: Real-time unread count updates and push notifications for users.
Simple Web UI (React + SockJS)
Global Error Handling: Custom exceptions for a smooth frontend experience:
Java 21 with Spring Boot 3.4.0
Spring Security (JWT Implementation)
Spring Data JPA (Hibernate)
WebSocket & STOMP
Spring Boot Actuator: For real-time health checks and metric gathering
Micrometer: To bridge Actuator metrics with external monitoring systems
Bucket4j (Rate limiting)
Lombok (Boilerplate reduction)
React (Vite)
SockJS & Stomp.js (WebSocket clients)
Tailwind CSS (Styling)
Typing indicator (“User is typing…”)
Online indicator (Like Messenger, a green dot)
Message status (Sent, Deliver, Read)
Searching inside the chat
File/image sharing inside chat
Maybe add calls
Prometheus & Grafana dashboard for visualizing message throughput and rate-limit triggers.