An open API service indexing awesome lists of open source software.

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.

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