https://github.com/claudiu28/ticketing-app-java
Ticketing system for basketball tournaments, built with JavaFX client, gRPC communication, and asynchronous backend using CompletableFuture with SQLite. Implements Observer and Proxy patterns for real-time updates of ticket availability and sales.
https://github.com/claudiu28/ticketing-app-java
client-server completable-future grpc java javafx observer-pattern proxy-pattern sqlite3
Last synced: 5 months ago
JSON representation
Ticketing system for basketball tournaments, built with JavaFX client, gRPC communication, and asynchronous backend using CompletableFuture with SQLite. Implements Observer and Proxy patterns for real-time updates of ticket availability and sales.
- Host: GitHub
- URL: https://github.com/claudiu28/ticketing-app-java
- Owner: claudiu28
- Created: 2025-08-23T15:24:38.000Z (5 months ago)
- Default Branch: master
- Last Pushed: 2025-08-23T15:42:03.000Z (5 months ago)
- Last Synced: 2025-08-24T05:49:48.501Z (5 months ago)
- Topics: client-server, completable-future, grpc, java, javafx, observer-pattern, proxy-pattern, sqlite3
- Language: Java
- Homepage:
- Size: 234 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 🎟️ Ticketing System
A desktop ticketing system for managing basketball tournament tickets.
The application provides authentication, ticket sales, search, and logout features.
It utilizes **JavaFX** for the client, **gRPC** for communication, **CompletableFuture** for asynchronous backend operations, and adheres to the **Observer pattern with Proxy** to broadcast live updates to all connected clients.
---
## ✨ Features
1. **Login**
- Cashier authenticates with username & password (stored as BCrypt hashes).
- On success, a window opens showing all matches (Team A vs Team B, Semifinals, Final), ticket price, and available seats.
2. **Ticket Sale**
- Sell tickets for a match by entering the customer's name, address, and number of seats.
- All other clients immediately see updated availability (Observer pattern).
- If no seats remain, the match is marked **SOLD OUT** in red.
3. **Search**
- Search tickets purchased by a client using name and/or address.
- If multiple clients share the same name, all their tickets are shown.
- Results display customer name, address, match, and number of seats.
4. **Logout**
- Ends the session and disconnects the user from the system.
---
## 🧰 Tech Stack
- Java 17+
- JavaFX (desktop UI)
- gRPC + Protocol Buffers
- SQLite + JDBC
- BCrypt (password hashing)
- CompletableFuture (async backend)
- Observer & Proxy design patterns
-
---
## 🔐 Security Notes
Passwords are never stored in plain text (only BCrypt hashes).
Password hashes are not returned in gRPC responses.
Sessions tracked to prevent duplicate logins.
---
## 🖼️ Screenshots

Login

Matches List

Search

Ticket Sale