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.

Could not load the image
Home of the user view

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:

Download last version of the thesis

Download last version of the presentation