Skip to content

bovae/yet-another-chat

Repository files navigation

Yet Another Chat (YAC)

Build Java Spring Boot PostgreSQL Redis

Classic web-based online chat application with rooms, contacts, file sharing, and real-time presence.

Tech Stack

  • Java 21, Spring Boot 4.0.5, Spring MVC
  • PostgreSQL 17, Redis 7
  • HTMX 2.0 + Thymeleaf + Bootstrap 5.3 (WebJars, no Node.js)
  • STOMP over WebSocket for real-time messaging
  • Spring Security (session-based auth, BCrypt)
  • Spring Session Redis (multi-device support)
  • Liquibase for database migrations
  • Testcontainers for integration tests

Quick Start

docker compose up --build

Open http://localhost:8080

Development

Start infrastructure only:

make infra

Run the app from your IDE or:

make run

Useful Commands

Command Description
make build Build without tests
make run Run with Spring Boot
make test Run all tests (Testcontainers)
make infra Start Postgres + Redis only
make docker-up Build and start all containers
make docker-down Stop containers
make docker-logs Tail app container logs
make clean Clean build + remove volumes

Configuration

Key environment variables (with defaults for local dev):

Variable Default Description
DB_HOST localhost PostgreSQL host
DB_PORT 5432 PostgreSQL port
DB_NAME yac Database name
DB_USER yac Database user
DB_PASSWORD yac Database password
REDIS_HOST localhost Redis host
REDIS_PORT 6379 Redis port
REMEMBER_ME_KEY change-me-in-production Secret for remember-me tokens
WEBSOCKET_ALLOWED_ORIGINS http://localhost:8080 Comma-separated allowed WebSocket origins
FILE_STORAGE_PATH ./file-storage Directory for uploaded files

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors