ChatApp — Real-Time Desktop Messaging
JavaJavaFXSpring BootWebSocketHibernatePostgreSQLDockerGitLab CI/CDMavenJUnit 5

ChatApp is a desktop messaging platform inspired by Telegram: a JavaFX client connected to a Spring Boot server over WebSockets, with private chats, groups, channels and file sharing.
- Context: BTS SIO professional workshop 4 — CCI Campus Alsace
- Role: Sole developer — design, development, CI/CD and packaging
- Timeline: 2024–2025 school year
Overview
ChatApp was built as a complete client–server product rather than a prototype: a modular Maven project made of chat-common (shared models and utilities), chat-server (Spring Boot) and chat-client (JavaFX), delivered through an automated pipeline all the way to native installers.
Features
- Real-time messaging over WebSocket using the STOMP protocol
- One-to-one conversations, group chats and public broadcast channels, with participant roles
- File sharing, message pinning, deletion and anonymous messages
- Account registration, authentication, customizable profiles and role-based permissions
- Persistent message history in PostgreSQL
- Automatic reconnection and a responsive, properly threaded desktop UI
Engineering
- Server: Java 21, Spring Boot 3, Spring WebSocket + STOMP, Spring Security, Spring Data JPA / Hibernate, Spring Boot Actuator, Log4j2
- Client: JavaFX with FXML views and CSS styling, STOMP client behind a dedicated WebSocket facade
- Testing: JUnit 5 and Mockito unit tests with JaCoCo coverage reports
- CI/CD: multi-stage GitLab pipeline — validate, test, build, package, deploy
- Delivery: containerized server deployed with Docker Compose (health checks, resource limits); native client installers built with jpackage (EXE and MSI for Windows, DEB and RPM for Linux)
Documentation
The full design file is available below: specifications, use case descriptions, UML diagrams (use case, package, class, deployment, activity, sequence), entity–relationship model, coding standards and project management.