Web application used to consult a family doctor using online videoconferences in microservices architecture.
Technologies:
- Java 11
- JavaScript
- Python 3.6
Frameworks:
- Spring Boot 2.3
- React + Redux
- Selenium
3rd party:
- OpenVidu
- Keycloak
- RabbitMQ
Databases:
- PostgreSQL
- MongoDB
Building:
- Yarn
- Node
- Gradle
DevOps:
- Docker
- Helm
- Kubernetes
- live video call and live chat with doctor
- private messages user to user
- live notifications
- payment integration with Stripe
- diagnose process page
- account-service - handle user details
- appointments-service - appointments CRUD and vide call service (OpenVidu wrapper)
- auth-service - authentication service (Keycloak wrapper)
- frontend - user interface
- messages-service - user messages connected with RabbitMQ
- notifications-service - user notifications
- payment-service - service to handle payments
- Grafana - multi-platform open source analytics and interactive visualization web application
- Prometheus - software application used for event monitoring and alerting
- rabbit-mq - queue for messages-service and messages-service
- sonarqube - static code analysis
- Main landing page
- Login page
-
Initial diagnose page
- Introduction
- Symptoms
- Visited regions
- Choose doctor
- Pick appointment date
-
Dashboard page
- Messages page
- Patient details page
- Appointment details page
- Notifications
In order to run this application you need to have installed:
- minikube > v1.6.2
- kubectl > v1.17.0
- Node > v12.18.2
- Docker > v19.03.5
- python > v3.6
- yarn > v1.22.4
- Gradle > v6.5.1
- Helm > v3.1.1
- mkcert > v1.4.1
- openssl > v2.8.3
- sonar-scanner > v4.5.0
In order to run application in development profile, first you need to create minikube cluster:
$ minikube start --cpus=4 --memory=8192Then you need to mount frontend component files to Kubernetes cluster with command below:
$ minikube mount application/components/frontend:/frontend/srcThen in another terminal window execute:
$ cd scripts && ./start.shExample output
123
You can reach a website at URL logged at the end of start script.
In order to checkout payments in development environment execute command:
$ stripe listen --api-key sk_test_51HdE8mDV6EZPJrHHkftff05Uwa2RNhDQLmnzUbPHuTb4PfYJShQ2OoQHFyPyIWCe3mwL46DM7XECaO68BqDO4GaD001VY2kjNY --load-from-webhooks-api --forward-to https://<MINIKUBE_IP>:32004 --skip-verifyIn order to run application in development profile execute:
$ cd scripts && ./run_monitoring_tools.shYou can reach Grafana and Prometheus at URLs logged at the end of start script.
In order to be able to run E2E tests, first you need to configure your environment with command below:
$ cd scripts/e2e && ./configure_e2e_requirements.shThen you can run script with given parameters:
| Parameter | Description |
|---|---|
| --due-to | Sets period of tests execution. [s, m, h, d] |
| --test-filter | Filter tests to run |
| --test-exclude | Tests to skip |
| --stop-on-fail | Stop tests execution after first failed test |
| --browser | Browser to tests |
| --seed | Seed used to shuffle tests |
To run script run command below with chosen parameters:
$ cd scripts/e2e && ./run_e2e_tests.shIn order to deploy sonarqube on run command below:
$ cd scripts/sonar && ./start_sonar.shIt creates two pods with sonarqube and its database - PostreSQL. To analyze the code run command:
$ cd scripts/sonar && ./run_sonnar_scanner.shThis command analyze application/components directory and sends data to sonarqube available at URL printed on the end of start script.

















