Desktop Scheduler App
- View Source
- Screenshots of the program can be found here
About
- This was my project submission for Software 2 course at WGU
- It is a JavaFX desktop application that handles appointment scheduling for a global consulting organization
Tech stack
- Java
- JavaFX
- JDBC
- Maven
Features
-
Login form
- Provides error message for invalid credentials
- Determines user's location and displays it
- Translates login form based on user's computer language settings (English or French)
- Logs all user login attempts with timestamps in a separate .txt file
-
Customer Records
- Add, update, and delete customer records
- Display custom message upon customer record deletion
- Follow customer foreign key constraints and delete all customer appointments when customer is deleted
-
Scheduling
- Add, update, and delete customer appointments
- Display custom message upon customer appointment deletion
- Feature options for displaying customer appointments by:
- Current month
- Current week
- All
- Store appointment times in UTC and display times in user's local timezone
- Prevent creating appointments when:
- it is outside of business hours (8:00 am - 10:00pm EST)
- it overlaps with existing appointments
- Display appointment alert in user interface when there is an appointment within 15 minutes of the user's login
-
Reports
- Display total number of customer appointments by type and month
- Schedule for each contact in the organization
- Current number of appointments handled by each contact in the organization for the present month
Challenges
This project had many requirements involving timezones, language localization, data integrity, etc. So it was challenging in many areas.
One challenge I faced during the course of development was dealing with timezones. Taking into account of different timezones when handling appointment times was very tricky. I had to familiarize myself with Java's Date-Time API and deal with comparing times across different regions.
Another challenge I faced was structuring and organizing my code. Since I was working with JavaFX, I had to be sure to separate my controller logic from the business logic to keep things maintainable and readable. This really pushed me to think more deeply about code architecture and how it can affect a codebase. Ultimately, I opted for a MVC pattern and layered approach to my code organization. This helped alot with readablity and made it easy for me to refactor things.
Lessons learned
I learned alot regarding working with time and implementing internationalization, as these were some of the requirements for this application. I also learned how to handle database operations and error handling in Java.