Skip to content

joelcelen/flossboss-java-repo

Repository files navigation

FlossBoss Java Repository

Description

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.

Table of contents

  1. System Overview
  2. Technologies and Tools Used
  3. Installation guide
  4. Authors and Acknowledgments
  5. License

System overview

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.

Development view

Technologies and Tools used in this repository

Programmning Languages: Java 17

Build Tools and Dependency Management: Maven

Containerization: Docker

Databases: MongoDB Cloud

Messaging Protocols: MQTT (HiveMQ Cloud)

Run with Docker

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.

Run on Arm64 architecture

  1. Navigate to the repository root folder.
  2. To start services run "docker compose -f compose.arm.yaml up -d"
  3. To exit services run "docker compose -f compose.arm.yaml down"

Run on Amd64 architecture

  1. Navigate to the repository root folder.
  2. To start services run "docker compose -f compose.amd.yaml up -d"
  3. To exit services run "docker compose -f compose.amd.yaml down"

Installation guide

Prerequisites

Step 1: Edit configuration files

  • 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

Step 2: Build with Maven

  1. Navigate to the specified services root folder.
  2. Run "mvn clean install".
  3. Run "mvn clean package".
  4. Navigate to the subfolder "target".
  5. Run "java -jar your-jarfile-name.jar"

Authors and Acknowledgments

License

The FlossBoss project is licensed under MIT

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages