Skip to content

Repository files navigation

E-Thesis API

Made by Mladen Zeljić
Table of Contents
  1. Project Informations
    1. Project Description
    2. Project Tech Stack
    3. How To Run This Application
      1. Running the application locally
      2. Deploying and running the application locally to minikube cluster

Project Info

Project description

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

Project tech stack

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

How to run this application

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:

Running the application locally

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

Deploying and running the application locally to minikube cluster

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

About

A microservice responsible for handling business logic within the E-Thesis system, developed as part of my Master's thesis project

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - tensorspaceset/ethesis-api: A microservice responsible for handling business logic within the E-Thesis system, developed as part of my Master's thesis project · GitHub
Skip to content

Repository files navigation

E-Thesis API

Made by Mladen Zeljić
Table of Contents
  1. Project Informations
    1. Project Description
    2. Project Tech Stack
    3. How To Run This Application
      1. Running the application locally
      2. Deploying and running the application locally to minikube cluster

Project Info

Project description

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

Project tech stack

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

How to run this application

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:

Running the application locally

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

Deploying and running the application locally to minikube cluster

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

About

A microservice responsible for handling business logic within the E-Thesis system, developed as part of my Master's thesis project

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - tensorspaceset/ethesis-api: A microservice responsible for handling business logic within the E-Thesis system, developed as part of my Master's thesis project · GitHub
Skip to content

Repository files navigation

E-Thesis API

Made by Mladen Zeljić
Table of Contents
  1. Project Informations
    1. Project Description
    2. Project Tech Stack
    3. How To Run This Application
      1. Running the application locally
      2. Deploying and running the application locally to minikube cluster

Project Info

Project description

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

Project tech stack

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

How to run this application

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:

Running the application locally

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

Deploying and running the application locally to minikube cluster

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

About

A microservice responsible for handling business logic within the E-Thesis system, developed as part of my Master's thesis project

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - tensorspaceset/ethesis-api: A microservice responsible for handling business logic within the E-Thesis system, developed as part of my Master's thesis project · GitHub
Skip to content

Repository files navigation

E-Thesis API

Made by Mladen Zeljić
Table of Contents
  1. Project Informations
    1. Project Description
    2. Project Tech Stack
    3. How To Run This Application
      1. Running the application locally
      2. Deploying and running the application locally to minikube cluster

Project Info

Project description

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

Project tech stack

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

How to run this application

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:

Running the application locally

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

Deploying and running the application locally to minikube cluster

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

About

A microservice responsible for handling business logic within the E-Thesis system, developed as part of my Master's thesis project

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - tensorspaceset/ethesis-api: A microservice responsible for handling business logic within the E-Thesis system, developed as part of my Master's thesis project · GitHub
Skip to content

Repository files navigation

E-Thesis API

Made by Mladen Zeljić
Table of Contents
  1. Project Informations
    1. Project Description
    2. Project Tech Stack
    3. How To Run This Application
      1. Running the application locally
      2. Deploying and running the application locally to minikube cluster

Project Info

Project description

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

Project tech stack

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

How to run this application

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:

Running the application locally

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

Deploying and running the application locally to minikube cluster

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

About

A microservice responsible for handling business logic within the E-Thesis system, developed as part of my Master's thesis project

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - tensorspaceset/ethesis-api: A microservice responsible for handling business logic within the E-Thesis system, developed as part of my Master's thesis project · GitHub
Skip to content

Repository files navigation

E-Thesis API

Made by Mladen Zeljić
Table of Contents
  1. Project Informations
    1. Project Description
    2. Project Tech Stack
    3. How To Run This Application
      1. Running the application locally
      2. Deploying and running the application locally to minikube cluster

Project Info

Project description

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

Project tech stack

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

How to run this application

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:

Running the application locally

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

Deploying and running the application locally to minikube cluster

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

About

A microservice responsible for handling business logic within the E-Thesis system, developed as part of my Master's thesis project

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); GitHub - tensorspaceset/ethesis-api: A microservice responsible for handling business logic within the E-Thesis system, developed as part of my Master's thesis project · GitHub
Skip to content

Repository files navigation

E-Thesis API

Made by Mladen Zeljić
Table of Contents
  1. Project Informations
    1. Project Description
    2. Project Tech Stack
    3. How To Run This Application
      1. Running the application locally
      2. Deploying and running the application locally to minikube cluster

Project Info

Project description

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

Project tech stack

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

How to run this application

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:

Running the application locally

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

Deploying and running the application locally to minikube cluster

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

About

A microservice responsible for handling business logic within the E-Thesis system, developed as part of my Master's thesis project

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages