Bachelor Thesis
The project can be found on Github (Bachelor project)
This project was written mainly in:
- Java for the backend
- Javascript for the frontend
- LaTeX for the final thesis
Introduction
My bachelor project consisted in the development of a microservice-based web application to securely handle sensitive user data for a company. To each user are associated: private information, soft skills, hard skills and a role. The application was developed using Spring Boot, ReactJS and MySQL databases. The project was presented in July 2021.
The project consisted of six components:
- Frontend - Developed using React.js
The following components developed using Spring Boot:
-
Gateway - The entry point of the application
-
Security
-
Backend
And then two MySQL databases:
-
Security database - which handles only the basic user information (email, password, isEnabled)
-
Primary database - which handles the rest of the user information
All of the components were handled using microservices which were built using both Dockerfile and Docker-compose. The UI of the project was developed using ReactJS and a sample is shown in the following figure.

Functionalities
The application allows the generic user to:
-
Register
-
Login
-
Update their information (both personal and linked to hard and soft skills that they might have)
The top level user is able to:
-
Cancel users
-
Search any user inside the database and view or modify their information
-
Disable users
The docker-compose.yaml file was written as follows, since the application was only for demo pourposes the database passwords were as easy as possible and no information was encrypted.
version: "3.9"
services:
userdb:
container_name: user_database
image: mysql
restart: always
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_DATABASE=database-utenti
ports:
- "3307:3306"
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p password"]
timeout: 20s
retries: 15
securitydb:
container_name: security_database
image: mysql
restart: always
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_DATABASE=database-sicurezza
ports:
- "3308:3306"
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p password"]
timeout: 15s
retries: 15
blue-whale:
container_name: gatewayB
build:
context: ./backend-gateway
dockerfile: "Dockerfile"
ports:
- "8080:8080"
sleepin-cat:
container_name: usersB
build:
context: ./backend-gestione-utenti
dockerfile: "Dockerfile"
depends_on:
userdb:
condition: service_healthy
ports:
- "8082:8082"
honeybear:
container_name: securityB
build:
context: ./backend-login
dockerfile: "Dockerfile"
depends_on:
securitydb:
condition: service_healthy
ports:
- "8081:8081"
frontend:
container_name: frontend
build:
context: ./frontend
dockerfile: "Dockerfile"
ports:
- "3000:3000"
The final thesis for the project can be found on Github as well as the presentation I put together for the final bachelor thesis discussion. The download links are the following: