A full-stack chat/community platform built as an OOP-focused project.
The project is split into:
- Backend: Spring Boot REST API + WebSocket features
- Database: PostgreSQL
- Frontend: React + TypeScript + Vite
- Project Overview
- Architecture
- UML Diagram
- Tech Stack
- Prerequisites
- Setup and Run
- Useful Commands
- API Documentation
- Project Structure
Dissension provides server-based communication spaces with channels and chat capabilities. The backend handles authentication, authorization, server and channel management, messaging, and realtime communication. The frontend provides the user interface for authentication, browsing servers/channels, and chat interactions.
- The backend and PostgreSQL run in Docker containers using the root
docker-compose.yml. - The frontend runs locally using Vite development server (
npm run dev). - Frontend communicates with backend APIs and WebSocket endpoints.
- Backend: Java, Spring Boot, Spring Data JPA, Spring Security, WebSocket
- Database: PostgreSQL 16
- Frontend: React 19, TypeScript, Vite
- Containerization: Docker, Docker Compose
Install the following tools before running the project:
- Docker Desktop (with Docker Compose support)
- Node.js 18+ and npm
From the project root, run:
docker compose up --build -dThis starts:
- PostgreSQL on
localhost:5432 - Backend API on
localhost:8080
To view logs:
docker compose logs -fOpen a new terminal, then run:
cd frontend
npm install
npm run devFrontend dev server will be available at the URL printed by Vite (typically http://localhost:5173).
Stop containers:
docker compose downStop and remove containers, network, and volumes:
docker compose down -vRebuild backend image after backend changes:
docker compose up --build -d backendSwagger UI is available at:
http://localhost:8080/swagger-ui/index.html
.
|- backend/ # Spring Boot backend
|- frontend/ # React + TypeScript frontend
|- docker-compose.yml # Runs backend + PostgreSQL
|- uml-diagram.png # UML class diagram
