Scheduling System
A Scheduling System desktop application built in Java with a JavaFX user interface.
Scenario:
This desktop Java application can be used by different organizations to schedule and modify appointments. It stores and accesses data in a MySQL database, and handles time zones so that it can be used in different locations around the world.
Built using JavaFX and a clean MVC design, this project includes user authentication, timezone-aware scheduling, and automatic report generation. It showcases attention to UX, backend structure, and desktop deployment.

Login Screen:
– Supports multiple languages based on user’s OS settings
– Error notifications for incorrect username or password
– Displays user’s time zone
– Display notification for upcoming appointments

Database Integration:
– Data is maintained in a MySQL database
– Create, read, update and delete operations
– Timezone conversions

Reports Screen:
– View appointments by type, month, contact & customer
– Filter results with dropdown selector
– Count of returned results

Main Dashboard:
– Displays tables of customers and appointments
– Add, update and delete customers and appointments
– Filter for upcoming notifications
– Display notifications when deleting

Add Customers & Appointments:
– Combo box options initialized
– Unique IDs are auto-generated
Dig into the details at the Github page.
Full Summary:
This is a Jave program built using the IntelliJ IDE. It is an application with a JavaFX user-interface for managing customers and appointments that may be used in a variety of organizations. It has a multiple language support feature and automatically converts timezones for use in any geographic location.
The Login class launches the JavaFX UI, and sets the stage to the Login Screen FXML file. The language of the text on the login screen supports English and French, and more language support could be added. A user must enter a valid username and password to login otherwise error messages will be displayed. After logging in, the user may add, modify and delete customers and appointments. They may also filter appointments for those coming up within one week, or one month. There is a reports screen which provides the user with additional filter options to view appointments.
The connection to the MySQL database is managed by the JDBC class, which is kept in the utilities package. Two functional interfaces which are used by lambda expressions are also kept in the utilities package.
There are seven Controller classes, and corresponding .fxml files for each of the five JavaFX windows used in the user interface. Users can add, modify, and delete customers and appointments. A customer can only be deleted if all associated appointments are deleted first, and a display notification gives the user the option to have this done. Notifications are also displayed when an attempt is made to schedule an appointment outside of established business hours or when overlapping with another appointment. There are three class files, one for customers, appointments, and users. A text file tracks all login attempts to the system. Resource bundle property files define the multi-language support.
This application was built with JavaFX SDK version 17.0.2 and JDK 17.0.4. The IntelliJ JavaFX project generator was used with the Maven Build System selection when creating the project in IntelliJ. Scene Builder was used for creating the UI layouts of the fxml files.