JAVA / SPRING BOOT

Splitty

A collaborative expense management application. Create events, invite participants, and log shared expenses with real-time updates via WebSockets and Long-polling.

01

Setup & Configuration

The application is split into client and server modules. Use Gradle to build and run.

# 1. Build the app ./gradlew build # 2. Run the server ./gradlew bootRun # 3. Run the client (JavaFX included) ./gradlew run

Config Files:

  • user.json: Stores local user data. Delete to reset user.
  • config.properties: Contains language settings ('en', 'fr', 'nl', 'de') and last connected server IP.
  • h2-database: The local database file for the server.
02

Keyboard Navigation

Splitty is designed for efficiency with full keyboard support.

Navigate UI ARROWS
Select / Action ENTER
Go Back / Exit ESCAPE
Previous Page BACKSPACE
03

Real-Time Sync

Splitty uses a hybrid approach for data synchronization:

  • Long-Polling: Used for participant lists. Adding a participant on one client instantly updates the list on another client viewing the same event.
  • WebSockets: Used for high-frequency updates like Expense creation and Debt settlement. Changes appear immediately without refreshing.
04

Multi-Modal Visualization

The UI is designed to be accessible and informative:

  • Icons & Tooltips: Elements are distinguishable by color and icon shape. Hovering reveals detailed text tooltips.
  • Interactive Charts: The Statistics page features an interactive Pie Chart. Hovering over a slice reveals the exact percentage of expenses for that tag.