Gekeurd is a company that is active in making installations compliant, formulating electrical dossiers, providing technical advice, offering technical solutions, examinations and dossiers for everything within their discipline.
Gekeurd employs technicians who are sent to customers. These customers must indicate the type of house, allowing Gekeurd to ensure they are helped correctly by providing one or more technicians with the required skills.
In order to assist Gekeurd in this, the Booking Tool has been developed. This tool requires an authentication (via OAuth or mailing of a code), to ensure that the customer can be contacted via the given email address.
Next, the customers must provide their information (including the visiting address and the type of house), to enable the tool to calculate which timeslots are feasible for the technicians with the correct competences. The customer will only be able to choose from the timeslots that align (including drive time) to other already reserved slots for the technicians. To make this possible, a synchronization between Google Calendar and the technician data is provided, ensuring private events are not overwritten.
In addition, a similar functionality exists only for employees from Gekeurd (with the appropriate authorization rights) to allow customers to create reservations by phone. With this feature, employees have slightly more flexibility for the selection of the timeslot. For example, they can decide which technician will visit, while the technicians are not visible to customers.
At a successful creation of a booking, the customer will receive a confirmation email. The chosen technician (the one with the shortest drive time, chosen by the application) receives an event in their Google Calendar, so that they can easily consult their schedule.
Overall, the tool provides a time-efficient, ecologically responsible and economically beneficial solution for creating reservations for Gekeurd.
The booking tool is a Restful API, written in Java. The application uses Spring Boot, Hibernate and JPA.
The booking tool integrates with Google Calendar on one hand to synchronize existing events, and on the other hand to push new reservations to the agenda of technicians. In addition, there's also an integration with Google OAuth for the authentication of users in the application.
The frontend of this application is created in React and Redux in Typescript, while the data is stored in PostgreSQL databases.
Finally, the application is deployed in a docker environment on hired servers.
Java 21
Spring Boot
Hibernate
Hibernate Envers
JPA
Rest
HATEOAS
Google Calendar
OAuth
Flyway
PostgreSQL
Maven
AssertJ
JUnit
Mockito
Test Containers
GreenMail
Javascript
Typescript
React
Redux
Axios
Moment.js
Tailwindcss
HTML5
CSS3
IntelliJ IDEA
Jira
Git: GitHub
GitHub Actions
GitHub Maven Package Repository
GHCR: GitHub Container Repository
Docker
JaCoCo
Sonar
OWASP
Domain Driven Design
Test Driven Development
Behaviour Driven Development
Hexagonal Architecture
Ports and adapters
SOLID
Command Query Separation
Clean code
Extreme Programming
Agile: scrum
Business analyse
Technische analyse
DevOps
Quality assurance
Solutions Architecture
Strategy
Decorator
Factory
Builder
Step Builder
Java Self-type
Singleton
Specification
Plugin
Secretariat booking
Customer booking
Google Calendar integration
Distance calculations, using Google Distance Matrix
Security: OAuth + CORS + CSRF
Performance improvements
Dependency updates
Bug fixing
Writing automated tests
Writing documentation