Skip to content

🦷🪥⦅ AppointDent ⦆ is a Swedish dental appointment web app using microservices, publish-subscribe, and client-server architectures for residents and dentists.

License

Notifications You must be signed in to change notification settings

michalspano/AppointDent

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AppointDent 🦷🪥

AppointDent is a full-stack web application that allows residents of Sweden manage their dentist appointments, as well as a tool for dentists to organize their work. The system, internally, relies on a distributed system infrastructure that combines various architectural styles, namely microservices, publish-subscribe and client-server.

AppointDent Teaser

Table of Contents

Introduction

AppointDent is a system that allows residents of Sweden to book dentist appointments. A user can find available times and see the dentist on an integrated map.

AppointDent allows users to book appointments, cancel them, as well as receive notifications about their bookings. The dentists in our system make use of a calendar to navigate their appointments and manage their availability.

The solution is based on a distributed system infrastructure that combines various architectural styles, namely microservices, publish-subscribe and client-server.

Tech-stack

Pre-Requirements

The only technology that is utilized in building and running all services, APIGateway (server), the client, and stress-testing is Node.js. Our project makes use of version 18.x.x. Ensure that you have a compatible version installed on your machine (we recommend 18.12.2). Read more about Node.js (and npm) here.

For the Solid.js framework, we recommend using npm as the package manager and installing the version from the package.json file with Vite.js as the build tool. Alternatively, install ^1.7.8 version of Solid.js (+^4.4.5 of Vite.js) with the help of your preferred package manager/environment utility.

In terms of stress-testing the system, we recommend using the latest version of k6. Navigate to stress-testing for more information.

Installation, Setup, and Running

This repository utilizes a monorepo structure, where the individual sub-folders represent a particular component of the system, wherein each component has its own README.md file.

The file contains the instructions on how to install all dependencies, it explains the structure of the directory, and it lists all the available scripts (with possible clarifications).

The following is a list of the available sub-folders:

Note

The services are not meant to be run individually, but rather as a part of the server application. They can be run individually for testing purposes or for the ease of development.

Architecture

Our system is a distributed one and we have therefore decided to use a Microservices-based architecture. This means that different services are to be installed on different computers and are completely independent. The MQTT (Message Queue Telemetry Transport) protocol is implemented as the primary communication utility between the individual services of our system. See our Component Diagram for a detailed overview of the architecture in use.

Furthermore, several other decisions that have a substantial impact on the architecture that the team members dealt with during the project's development may be traced with the ADRs.

System's Overview

The following section aims to provide an overview of the system's architecture, as well as the deployment strategy. The individual diagrams can observed when clicking on the dropdowns.

1. Entity Relationship (ER) Diagram

ER Diagram

2. Component Diagram

Component Diagram

3. Deployment Diagram

DeploymentDiagram

Continuous Integration

The development team made use of the continuous integration (CI) testing practice to improve the development process model (which was Scrum) that was used in the development of the system. This allowed the team to continuously build and test the code in order to prevent pushing defective code into the main branch. The team made use of Postman as means of integration testing of the back-end and the database of the system. Moreover, the team made use of static analysis (ESLint) to make sure good quality and readable code with no syntax bug is pushed into the main branch. In order to make use of CI, the team made use of GitLab's CI/CD feature. The gitlab-ci.yml file contains the instructions that are used by GitLab to run Postman tests, statically analyze code, and build the system.

Important

The project was initially developed on the GitLab platform, but was later migrated to GitHub. However, the CI/CD pipeline was not migrated yet, hence the pipeline is not functional on GitHub.

Development team

The project has been developed over the course of 10 weeks by the following:

Name username (GitHub)
Agrima Singh @agrimasingh2503
Mariia Zabolotnia @marichkazb
Alexander Säfström @starkbamse
Michal Spano @michalspano
Kaisa Arumeel @kaisaarumeel
Omid Khodaparast @OmidKhodaparast2002

About

🦷🪥⦅ AppointDent ⦆ is a Swedish dental appointment web app using microservices, publish-subscribe, and client-server architectures for residents and dentists.

Topics

Resources

License

Stars

Watchers

Forks