Skip to content

trung-kieen/loci-chat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

117 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Loci

Real-time messaging app built with Spring Boot, Angular, and Hexagonal Architecture.

demo


Run it locally

git clone https://github.com/trung-kieen/loci-chat.git
cd loci-backend
cp .env.example .env

# mvn flyway:baseline
# mvn flyway:migrate
mvn spring-boot:run
cd loci-frontend
npm install 
npm run start 
Service URL
App http://localhost:4200
Keycloak admin http://localhost:9090
Minio console http://localhost:9001

Architecture

Real-time delivery goes through WebSocket/STOMP.

Media storage runs on Minio for S3-compatible.

detailed architecture

The backend follows Hexagonal Architecture (Ports & Adapters). hexagonal architecture

DDD domain model at the core. ddd modeling


Features

Real-time messaging
messaging
1:1 chats with status tracking.

Group messaging
group messaging
Create groups, manage members, chat together.

Media sharing
media sharing
Images, video, files stored in Minio.

User presence tracking
user presence
See who's online in real time.

Contact management

connect friend
Send and accept friend requests.

request friend
contact manager

Manage contacts and block list.

block list

Group management
group creation
group manager

Profile & auth
profile
keycloak login
Full authentication flow handled by Keycloak


Tech

Backend: Spring Boot 3, Spring Security + Keycloak,
WebSocket/STOMP, Spring Data JPA, PostgreSQL, Minio

Frontend: Angular 17, RxJS, RxStomp

DevOps: Docker, Jenkins


License

Licensed under the Apache License, Version 2.0


Built with ❤️& ☕ by Trung Kien