E-Thesis application as a whole is designed to help academic staff (including students) manage the whole process of student studies completion, which includes things from thesis application to thesis defence. Some of the things that can be done through the application include:
- Ability for professors to mentor their students and enter thesis topics
- Ability for students to submit their topics of interest and picking up any available topic which is previously created.
- Ability for respective academic boards to manage theses and thesis topics and other
This particular project is a backed application made for E-Thesis application. From the project structure, we can see that it contains several segments which are mostly written in Kotlin. The actual logic consists of several layers, out of which the most of them are just inheriting base REST API, Services and Persistence classes and are customized to include other methods that they need. The application itself communicates with the database by using Hibernate and JPA repository.
The tech stack for this application consists of:
- Docker
- Kotlin
- Hibernate/JPA Repository
- Gradle
- Helm/K8s
Before you start this application, please make sure that you have docker installed on your system.
In order to install docker, please follow the installation steps from the official documentation:
- Ubuntu - https://docs.docker.com/engine/install/ubuntu/
- Windows - https://docs.docker.com/desktop/install/windows-install/
In order to run this application locally, simply run the docker-compose command
This command will do the following things:
- build the application
- create the docker image of the application
- pull images from dockerhub for other necessary items, such as postgres and liquibase
- create docker containers for those images
- run liquibase migrations which will prepopulate the database
- create network in which the containers will be placed
docker compose up -d
Also, before you start using this application, you'll need to setup E-Thesis Identity application which handles the authentication and authorization part for the application.
If you want to make edits to this application, you will have to remove the application container and image (and others if needed) and then rebuild everything and redeploy locally via docker-compose command
In order to deploy and run this application in a local k8s cluster you will need to install minikube and helm on your machine, so please follow the installation steps from the official documentation:
Once minikube is up, run the following command in separate terminal, to enable tunneling:
minikube tunnel
Then, after you've installed helm locally, run the following script in order to deploy and run the application to minikube cluster:
.\scripts\buildAndDeployToMinikube.ps1 -image
This script currently only exists for Windows, but another one might be created for Linux platform as well in the future
If you want to skip image build and push to dockerhub, run it without image flag:
.\scripts\buildAndDeployToMinikube.ps1
