Enterprise-grade vehicle service management system backend built with Spring Boot 3 and Java 21.
- Java 21 - Latest LTS version with modern language features
- Spring Boot 3.x - Enterprise application framework
- PostgreSQL - Production database (Neon.tech hosted)
- Flyway - Database migration management
- Spring Security - JWT-based authentication
- Spring Data JPA - Database access layer
- Docker - Containerization
- Maven - Build and dependency management
- User Management - Multi-role authentication (Admin, Employee, Customer)
- Vehicle Management - Track customer vehicles and service history
- Project Management - Organize service projects with task tracking
- Appointment System - Schedule and manage service appointments
- Time Logging - Track employee work hours against projects/appointments
- Customer Portal - Self-service appointment booking and status tracking
- Employee Dashboard - Task management and time tracking
- Admin Console - Complete system oversight and reporting
- Java 21 or higher
- Maven 3.8+
- PostgreSQL 14+ (or use provided Neon.tech connection)
- Docker (optional, for containerized deployment)
Create src/main/resources/application-dev.properties:
# Database
spring.datasource.url=jdbc:postgresql://your-db-host:5432/gearup
spring.datasource.username=your-username
spring.datasource.password=your-password
# JWT
jwt.secret=your-secret-key-min-256-bits
# Email (optional)
spring.mail.username[email protected]
spring.mail.password=your-app-password
# CORS
cors.allowed.origins=http://localhost:3000
# Chatbot Service (optional)
chatbot.python.service.url=http://localhost:5001# Development mode with hot reload
./mvnw spring-boot:run -Dspring-boot.run.profiles=dev
# Or use the batch file (Windows)
./run-maven.bat# Build and run
docker build -t gearup-backend .
docker run -p 8080:8080 \
-e SPRING_PROFILES_ACTIVE=dev \
-e SPRING_DATASOURCE_URL=jdbc:postgresql://host.docker.internal:5432/gearup \
-e SPRING_DATASOURCE_USERNAME=postgres \
-e SPRING_DATASOURCE_PASSWORD=password \
-e JWT_SECRET=your-secret-key \
gearup-backend# Start all services (backend + chatbot)
docker-compose up -d
# View logs
docker-compose logs -f backend# Run all tests
./mvnw test
# Run with coverage
./mvnw clean test jacoco:report
# View coverage report
open target/site/jacoco/index.html# Create JAR
./mvnw clean package -DskipTests
# Run production JAR
java -jar target/gear-up-be-0.0.1-SNAPSHOT.jar \
--spring.profiles.active=prod \
--spring.datasource.url=jdbc:postgresql://prod-db:5432/gearupThe project includes CI/CD pipelines for automated deployment:
- Setup: Follow
DEPLOYMENT_GUIDE.mdfor complete instructions - Configure Secrets: Add required secrets to GitHub repository
- Deploy: Push to
mainorproductionbranch
# Manual deployment
kubectl apply -f k8s/namespace.yaml
kubectl apply -f k8s/backend-configmap.yaml
kubectl apply -f k8s/backend-deployment.yamlOnce running, access API documentation at:
- Swagger UI:
http://localhost:8080/swagger-ui.html - API Docs:
http://localhost:8080/v3/api-docs
Authentication:
POST /api/auth/login
POST /api/auth/register
Projects:
GET /api/projects
POST /api/projects
PUT /api/projects/{id}
DELETE /api/projects/{id}
Appointments:
GET /api/appointments
POST /api/appointments
PUT /api/appointments/{id}/status
Time Logs:
GET /api/time-logs
POST /api/time-logs
DELETE /api/time-logs/{id}
Migrations are managed by Flyway in src/main/resources/db/migration/:
V1__initial_schema.sql
V2__add_appointments.sql
V3__add_time_logs.sql
...
V13__add_appointment_to_time_logs.sql
New migrations run automatically on startup.
- JWT tokens expire after 24 hours
- Passwords hashed with BCrypt
- Role-based access control (RBAC)
- CORS configured for frontend origin
- SQL injection prevention via JPA
# Application health
curl http://localhost:8080/actuator/health
# Database connectivity
curl http://localhost:8080/actuator/health/db- Create feature branch from
main - Follow existing code patterns
- Add tests for new features
- Update documentation
- Submit pull request
MIT License - see LICENSE file for details
EAD Group Project 2025
For deployment instructions, see DEPLOYMENT_GUIDE.md