[[TOC]]
TeethRepair is a full-stack dentist booking system all across Sweden. It allows both patients and dentists to streamline their appointment booking process while offering an intuitive user experience. The system provide core functionalites such as booking appointments, managing appointment availability, viewing clinics on a map, and staying notified about booking updates.
-
Vue.js (Frontend framework)
-
BootstrapVue (Library for building responsive frontend)
-
Leaflet (Libray for the Map)
-
Node Package Manager (Package Manager)
-
Eclipse Paho (MQTT Library)
-
Maven (Automated Build and Dependency Management Tool)
-
Spring Boot (Building Java-based standalone project tool)
-
MongoDB Atlas (Service database)
-
Eclipse Paho(MQTT Library)
Please follow the installation guide to set up the project.
Before setting up either of the installations, please clone the project.
git clone git@git.chalmers.se:courses/dit355/2024/student_teams/dit356_2024_20/dit-356-project-group-20.git
-
Make sure you are in the root directory in the command line
-
Through the bash command line, write the following command
docker swarm init
docker login
-
After this, you will be prompted to login to the container registry to pull images from our repository's container registry.
-
After succesfully logging in, run the following command.
In Linux,
bash automated_build.sh
In Windows, make sure you run this through Git Bash,
chmod +x automated_build.sh
./automated_build.sh
- You have succesfully run the services! If you decide to close the services please run the following command.
docker stack rm microservices_stack
docker stop $(docker ps -q)
- Install client dependencies
cd client
npm install
- Run the application
npm run dev
The system relies on the combination between microservices and publish-subscribe. It creates a distributed systems environment where several services can run independently from each other through different nodes.
Entity Relationship (ER) Diagram
Architecture Diagram
Deployment Diagram
At the start of the project, we devised a Social Contract that would explain the decision-making, processes we use, communication channels and which days we are off. The Social Contract can be found in the Wiki.
The team followed a lightweight SCRUM Process. It would consist of two meetings a week, a Sprint Planning and a Sprint Review
In the Sprint Planning, we discuss the current backlog, and select tasks to distribute to the members.
In the Sprint Review, the team would showcase and review each others tasks and have a constructive feedback session about the team's dynamic.
During the week, members would use the Issue Board to track their issues between Open, In-Progress, and Closed as well as open additional code meetings if the members need help or are pair-programming.
ToothRepair's layered-microservices architecture paired with pub-sub architecture allows for it to be a featured-packed system.
The system implementes dockerised services which allows the developers to run the services in different platforms. Due to dockers, the developers do not need to ensure that all the dependencies for the services are installed within their respective system.
Docker-compose allows the system to use replica services, ensuring availability at all times. When a service fails or shuts down, the replicas take over while the service tries to restart itself.
The services also implement load balancer, making ToothRepair a high-performing and fast system.
Continuous Integration (CI) is ensured with the help of gitlab's pipeline. Each commit triggers the pipeline where each service is built, test cases are ran, and dockers are built and pushed to container registry with their new changes. This ensures that only tested code/feature is integrated into the system.
The system also features script files to ensure that building and running the containers for the services can be easily done with only one command.
| Name | username |
|---|---|
| Mohamed Taha Jasser | @mohamedt |
| Nadman Abdullah Bin Faisal | @nadman |
| Vaibhav Puram | @puram |
| Danis Music | @danism |
| Filipe Rosa | @filipero |
Many thanks to the contributors of the project for helping out finishing the project.
And many thanks to the professors and the TAs of Gothenburg University|Chalmers University for providing the necessary knowledge and insights for the development of this project.
.png)
