A distributed Video Library System. The system lets an Admin manage genres, movies, and customers, while a Customer browses movies and rents/returns them. All communication between clients and the server happens over Java RMI, with data persisted in a MySQL/MariaDB database.
| Module | Role |
|---|---|
server |
Hosts the RMI registry, implements VLSService, and talks to the database via DBHelper. |
admin-client |
JavaFX GUI for registering/removing genres, movies, and customers. |
customer-client |
JavaFX GUI for browsing movies, renting, and returning them. |
shared |
Contains VLSService.java, the common RMI interface used by all modules. |
Each client communicates with the server only through the VLSService interface — no client touches the database directly.
- Java 25 + Java RMI
- JavaFX 25
- MySQL / MariaDB (via XAMPP)
- IntelliJ IDEA
| Table | Key Columns |
|---|---|
genres |
id, genre, isactive |
movies |
id, genre_id (FK → genres), Title, isactive |
clients |
id, Fullname, isactive |
rentals |
id, client_id (FK), movie_id (FK), Returned |
Run setup_database.sql against your MySQL/MariaDB instance to create the schema before starting the server.
- Database: Start MySQL (e.g. via XAMPP), then run
setup_database.sql. - Server: Add the MySQL Connector/J jar as a library, then run
VLSServer.main(). Confirm the console shows the server listening on port1099. - Clients: Add the JavaFX SDK as a library, set VM options:
Update
--module-path "<path-to-javafx-sdk>/lib" --add-modules javafx.controls,javafx.fxmlSERVER_IPinAdminClient.java/CustomerClient.javato the server machine's IP (uselocalhostif running everything on one machine), then run.
Server must be running before either client is launched.
Built by a team of 3: one Server, one Admin Client, one Customer Client