-
Real-Time Messaging → public chat, private chat, and room-based messaging
-
User Authentication & Sessions → secure login/logout with session management
-
Private Rooms → create, join, leave rooms; private queues for one-to-one messaging
-
File Upload Support → share images/files with uploads stored in a dedicated directory
-
Dynamic Avatars → auto-generated avatar URLs based on usernames
-
Docker Deployment → containerized for reproducible deployments
| Endpoint | Functionality |
|---|---|
/chat.sendMessage |
Broadcast public message, update user status, attach avatar |
/chat.addUser |
Add a user to session and notify public chat |
/chat.sendPrivateMessage |
Send private message between two users via dedicated queues |
/chat.createPrivateRoom |
Create private room and assign users |
/chat.joinRoom |
Join a user to a room and notify members |
/chat.leaveRoom |
Remove a user from a room and notify remaining members |
/chat.sendRoomMessage |
Broadcast message to all users in a private room |
| Endpoint | Method | Functionality |
|---|---|---|
/ |
GET |
Render chat page if authenticated; else redirect to login |
/login |
GET |
Display login page |
/login |
POST |
Authenticate user and create session |
/logout |
GET |
Invalidate session and redirect to login |
/upload |
POST |
Handle file uploads (e.g., images) and return file URL |
-
Java 17+
-
Spring Boot (WebSockets, REST)
-
HTML, JavaScript, CSS
-
Docker for containerized deployment
-
Frontend: HTML/JS + WebSockets client
-
Backend: Spring Boot WebSocket/REST controllers
-
Storage: Session-based authentication + local file uploads
-
Deployment: Packaged in Docker for portability
Browser ↔ Spring Boot Server (WebSocket + REST) ↔ Session/File Store
-
❏ Add persistent DB for messages
-
❏ Enable typing indicators
-
❏ Integrate Redis pub/sub for scaling across servers
-
❏ Enhance UI with React frontend
PRs welcome!
-
Fork repository
-
Create feature branch
-
Commit changes
-
Open a Pull Request