Realtime Chat Application

This personal full-stack project uses Java 21, Spring Boot 3, React, and TypeScript with a modular-monolith backend. It supports realtime direct and group chats over STOMP/WebSocket, image sharing, notifications, typing indicators, read receipts, and reconnect sync. Authentication includes email OTP signup, Google OAuth2, JWT access/refresh tokens, refresh-token rotation, and reuse detection. Redis handles rate limiting and multi-device online/offline presence. To prevent duplicate message sequences during concurrent sends, the backend locks the conversation row within a transaction and enforces a unique constraint on (conversation_id, sequence). The application was validated using backend tests, Playwright E2E, and local k6 smoke tests.

RoleFullstack Developer | Personal Project
Duration07/2026 – 10/2026
Main Technology
Java
Spring Boot
ReactJS
TypeScript
MySQL
Redis
Docker

Designed a modular-monolith backend using REST APIs and STOMP/WebSocket for messaging, typing indicators, and read receipts.

Implemented email OTP registration, Google OAuth2, JWT refresh-token rotation, reuse detection, and session revocation.

Built group conversations with member roles, invite links, join approvals, replies, message editing, and soft deletion.

Used Redis for OTP rate limiting and multi-device presence, with message synchronization after reconnecting.

Ensured consistent per-conversation message sequencing under concurrency using pessimistic locking and a composite unique constraint.

Validated the application with backend tests, Playwright E2E tests, and local k6 smoke tests.

Demo Video