Backend repository for voluntary project in IDATT2105 full-stack application development
This is the backend for a fullstack project. The project should be run using the docker-compose.yml
file, as it requires multiple environment variables, as well as dev-certificates which are currently generated using the mkcert
-tool.
This guide requires:
- A pc with docker installed
- The ability to set environment variables
Setting an environment variable is done by running set KEYSTORE_PASSWORD=changeit
(Windows) or by export KEYSTORE_PASSWORD=changeit
(Unix). If, for whatever reason, you are unable to set variables, you can edit the docker-compose.yml file and replace each occurence of ${KEYSTORE_PASSWORD}
with your password (replace the entire thing).
The following environment variables are needed:
- KEYSTORE_PASSWORD - Whatever value you want. THIS IS REQUIRED FOR THE PROJECT TO RUN
- SMTP_PASSWORD
- SMTP_EMAIL
- SMTP_HOST
- ENDPOINT_URL
- ACCESS_KEY
- SECRET_KEY
- BUCKET_NAME
After this is done:
- Go to an empty folder where you want the project
- Put the docker-compose.yml file in this folder
- Clone the backend project into this folder: https://github.com/1Cezzo/idatt2105-project-backend
- Clone the frontend project as well: https://github.com/1Cezzo/idatt2105-project-frontend
- Run `docker compose up` (this will take several minutes the first time around)
- Edge - Go to
edge://flags/#allow-insecure-localhost
and set the highligthed option to enabled - Chrome - Go to
chrome://flags/#allow-insecure-localhost
and set the highlighted option to enabled - Opera GX - From the terminal, run:
"C:\path\to\opergx\launcher.exe" --allow-insecure-localhost
- Firefox - There seems to be a lot of problems with how firefox handles self-signed certificates, so we do not recommend using firefox. Going to localhost:5173 and accepting the warning, then going to localhost:8443/# and accepting the warning, will get you to the site, but there might be problems loading images and such.
The backend is set up to fill the database with placeholder quizzes when it runs, this happens in the util/Dataloader.java
class. Comment this class out if this is not desired.
To run the project you only need to set the KEYSTORE_PASSWORD environment variable, however you won't be able to upload pictures or send emails for password retrieval. To do this, you need to set the remaining environment variables. We created a simple guide on how to set this up for your own project here. The guide is simple to follow and it won't take long before you have these services set up for your own project!
For a comprehensive understanding of the project's architecture and relationships between backend entities, we recommend reviewing the following resources:
-
Architecture Sketch - This sketch provides an overview of our project's frontend and backend architecture, including data flow and authorization processes.
-
Class Diagram - Our class diagram illustrates the structure and relationships of various classes in the backend codebase.
These resources will help you gain a deeper insight into our project's design and implementation.
For API documentation, run the project using the above guide, and then navigate to localhost:8443/swagger-ui/index.html
in your browser. Log in with username:admin
and password: password
You will land on this page:
The project uses JUnit tests, which can be run with Maven from the commandline with mvn clean test
To see the test coverage - head to target > site > jacoco > index.html
As of version 1.2, the test coverage looks like this:
The missing 15% of coverage is due to some of the built in lamba functions
of the service classes in Spring Boot, which we don't use, and due to the equals
, toString
and hashcode
methods that get automatically implemented when you use Lombok's Data annotation.