The FlossBoss project is a web-based system for dental appointment management that combines a client/server model with a service-oriented approach to efficiently manage dental appointments. Employing a React-based Patient GUI on the front end and an Express.js server on the back end for user data handling through HTTP REST API. The system leverages MQTT as a communication protocol, where the server, instead of direct database operations for bookings, publishes booking requests and subscribes to booking confirmations, enabling real-time updates via SSE. The Service Layer encapsulates the booking logic, dentist authentication, email notifications, and logging, with services subscribing to and publishing on MQTT topics for a decoupled, event-driven workflow that provides real-time notifications, enhancing user experience and system maintainability.
This repository contains the Java codebase for the entire system, including the service layer, dentist client, and admin tool. This setup covers everything from managing appointments and dentist authentication to administrative functions. By segregating these Java-based components from the client/server side, which is developed in JavaScript, the project achieves a clear separation of concerns. This approach not only streamlines development but also significantly simplifies the Continuous Integration and Continuous Delivery (CI/CD) processes, ensuring smoother deployments and easier maintenance of the system.
This repository contains the client-server codebase for the project.
The FlossBoss system orchestrates a seamless dental appointment management experience by integrating a distributed architecture that emphasizes real-time data handling and service-oriented design principles. At the core of the system's backend, developed in Java, lies a service layer that interfaces with an MQTT broker, ensuring a decoupled and event-driven communication flow. This backend manages critical operations such as appointment booking, dentist authentication, and system logging.
The diagram below provides a visual representation of the development view for the entire system.
Programmning Languages: Java 17
Build Tools and Dependency Management: Maven
Containerization: Docker
Databases: MongoDB Cloud
Messaging Protocols: MQTT (HiveMQ Cloud)
All the services and the client/server are uploaded to the projects Dockerhub page.
To run docker images on your system you need to first install the docker engine on your local system. We recommend installing the desktop version to easily keep track of your current containers and CPU usage.
Due to a current issue with the docker engine, Arm64 and Amd64 systems are not compatible with images built on the opposing architecture. To solve this problem we have images for both Arm64 and Amd64, choose the one that matches you system architecture.
- Navigate to the repository root folder.
- To start services run "docker compose -f compose.arm.yaml up -d"
- To exit services run "docker compose -f compose.arm.yaml down"
- Navigate to the repository root folder.
- To start services run "docker compose -f compose.amd.yaml up -d"
- To exit services run "docker compose -f compose.amd.yaml down"
- Java 17 Link to download
- Maven Link to download
- Docker Desktop Link to download
- MongoDB Cloud database Link to MongoDB
- HiveMQ Cloud MQTT Broker Link to HiveMQ
Open each service in an IDE that supports Java (we recommend IntelliJ or Visual Studio Code).
Add a text file named "atlasconfig.txt" to flossboss-java-repo\{"service"}\src\main\resources. Add the MongoDB database URI to the text file.
Add a text file named "hiveconfig.txt" to flossboss-java-repo\{"service"}\src\main\resources. In the text file you will need to add 4 lines:
Line 1: Preffered MQTT client name
Line 2: URL for your HiveMQ cluster
Line 3: HiveMQ email
Line 4: HiveMQ password
- Navigate to the specified services root folder.
- Run "mvn clean install".
- Run "mvn clean package".
- Navigate to the subfolder "target".
- Run "java -jar your-jarfile-name.jar"
The FlossBoss project is licensed under MIT