A quick tour of our JavaFX application!
A desktop application for a small library, built as a seven-person team project using Java, JavaFX, and MySQL. It gives librarians a place to search books and handle borrowing, returns, and waitlists, while members have a separate catalog-search interface.
The end goal was to connect a graphical interface to a relational database for the app and it worked perfectly! :)
- Log in by role: Librarian and member accounts open different screens.
- Find books: Browse the catalog and filter results by a search term.
- Check out books: Look up availability, record a checkout, and view active loans.
- Handle waitlists: Add members to a book's waitlist, including when a checkout finds no available copies.
- Return books: Record returns and review returned-book history.
- Store the details: Connect books, authors, publishers, accounts, loans, and waitlists in MySQL.
About the demo: The video shows navigation and the main screens, plus a catalog search. It doesn't demonstrate every button or a completed checkout/return transaction because I lost the file for that </3 but those do work!
A quick look around the librarian side of the app. Click any image to view it at full size.
The entity-relationship diagram (ERD) shows the design behind the app: books and their formats, authors and publishers, library accounts, checkouts, waitlists, and series/volumes.
Click the diagram to see it at full resolution. It documents the conceptual design; see db/mysql-ddl.sql for the actual implemented MySQL schema.
| Layer | Technology |
|---|---|
| Desktop interface | JavaFX / FXML |
| Application logic | Java 17 |
| Data access | JDBC and Data Access Objects (DAOs) |
| Database | MySQL 8 |
| Build | Maven |
| Database modeling | ERD / relational schema |
The project is organized into src/main/java/lbms/ui (screens/controllers), bo (business objects), dao (database access), and utils (shared helpers). SQL setup and sample records are in db/, and additional design notes are in docs/.
You'll need: JDK 17, Maven, MySQL 8, and a graphical desktop for JavaFX.
-
Clone the repository and open its directory.
-
Start your local MySQL server. From the repo root, initialize the schema and sample data:
mysql -u root -p < db/mysql-ddl.sql mysql -u root -p LBMS < db/views.sql mysql -u root -p LBMS < db/seed-data.sql
Heads-up:
seed-data.sqlclears and reseeds the project's tables. Please use a dedicated development database, NOT one containing anything important! -
Update the local database username/password in
DBConnection.javaif yours aren'troot/root. -
Build and launch:
mvn clean compile mvn exec:java
-
Try one of the demo logins created at application startup:
Role Username Password Librarian admin_demoadmin123Member member_demomember123
The app doesn't have a logout button in this version; close and relaunch it to switch demo accounts.
This was a group project, with contributions across backend development, database design, the interface, and documentation!
Who worked on what?
- Christian McCool: Project management
- Erik Barbieri: Backend (business objects / DAOs) and repository maintenance
- Elisa Garcia: Backend (business objects / DAOs)
- Everette Carrig: Database design
- William Henderson: Database design
- Brycen Canion: JavaFX GUI development
- Brianna Hendrix: Documentation, QA, testing, and demo preparation
Little library, lots of moving parts. Happy browsing! :3





