Backend server for ExamGuard, a secure examination and monitoring system responsible for authentication, exam management, monitoring, analytics, reporting, and registrar integration.
This repository contains the Spring Boot backend application for ExamGuard. It provides REST APIs used by the frontend application and manages all business logic, database operations, reporting, caching, and system integrations.
- Java 21
- Spring Boot
- PostgreSQL
- Redis
- Maven Wrapper (Included)
- Docker Desktop
Before running the project, ensure the following software is installed:
- Java JDK 21+
- Docker Desktop
- Git
- IntelliJ IDEA
Maven installation is not required if the repository includes Maven Wrapper (mvnw and mvnw.cmd).
Open a terminal and run:
java -versionExpected output:
java version "21.x.x"
docker --versionExpected output:
Docker version xx.x.x
git clone <backend-repository-url>
cd examguard-backendStart the database container:
docker compose up -dVerify the container is running:
docker psIf Redis is included in your Docker Compose configuration:
docker compose up -dOtherwise, start Redis separately according to your local setup.
Review the following files before running the application:
src/main/resources/application.properties
src/main/resources/application-dev.properties
src/main/resources/application-prod.properties
Common configurations include:
spring.datasource.url=
spring.datasource.username=
spring.datasource.password=
spring.data.redis.host=
spring.data.redis.port=
registrar.api.base-url=Run:
ExamguardBackendApplication.java
mvnw.cmd spring-boot:run./mvnw spring-boot:runmvnw.cmd clean package./mvnw clean packageGenerated JAR files will be available in:
target/
http://localhost:8080
localhost:5432
localhost:6379
Example Docker configuration:
services:
postgres:
image: postgres:16
container_name: examguard-postgres
environment:
POSTGRES_DB: examguard
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
ports:
- "5432:5432"
volumes:
- examguard_postgres_data:/var/lib/postgresql/data
volumes:
examguard_postgres_data:java -versionIf not recognized:
- Reinstall JDK 21
- Configure JAVA_HOME
- Restart terminal or IDE
Verify Docker Desktop is started before executing:
docker compose up -dFind and stop the application currently using port 8080 or update:
server.port=8081Verify:
- PostgreSQL container is running
- Database credentials are correct
- Port 5432 is available
- Application properties are configured correctly
Verify:
- Redis service is running
- Redis host and port configuration are correct
Current development configuration uses:
spring.jpa.hibernate.ddl-auto=updateThis automatically creates and updates database tables based on entity definitions during development.
For production deployments, database migrations should be managed separately.