Vehicle Management System
Project Overview
The goal of this project is to build a Vehicle Management System web application using modern Java and Spring Boot practices.
This project simulates a small vehicle dealership application where customers can browse vehicles, while administrators and employees can manage dealership inventory through protected dashboards.
This blueprint describes the required features and learning objectives. It does not define one exact implementation. There are many valid approaches to solving this project.
Focus on:
- Writing clean and maintainable Java code
- Understanding Spring Boot architecture
- Applying security concepts correctly
- Designing solutions independently
- Learning how real-world applications are structured
Learning Objectives
By completing this project, students should gain experience with:
- Spring Boot MVC applications
- Thymeleaf server-side rendering
- Spring Data JPA persistence
- Entity design and relationships
- Spring Security authentication and authorization
- Role-based access control
- Form validation
- CRUD operations
- Database integration
- Application structure and organization
Required Technologies
The application must use:
- Java 25
- Spring Boot
- Maven or Gradle
- Spring MVC
- Spring Data JPA
- Spring Security
- Thymeleaf
- SQLite Database
Optional technologies:
- Lombok
- Spring Boot DevTools
- Additional Spring modules
- Frontend libraries
Application Requirements
The application represents a vehicle dealership website.
The application should contain two primary areas:
- Public Customer Website
- Protected Management Dashboard
Public Website
The public website should allow visitors to browse available vehicles without logging in.
Home Page
The home page should display available vehicles.
Recommended information:
- Vehicle image
- Make
- Model
- Year
- Price
- Mileage
- Fuel type
- Transmission
Users should be able to select a vehicle and view more details.
Authentication Requirements
The application must support registration and login.
Registration
Users should be able to create an account using:
- Username
- Password
- Password confirmation
Registration should include validation.
Examples:
- Username cannot be empty
- Password cannot be empty
- Password confirmation must match
- Duplicate usernames should not be allowed
Login
Users should authenticate using:
- Username
- Password
Spring Security should manage authentication.
Roles
The required roles are:
USER
A normal registered user.
Capabilities:
- Login
- Access authenticated pages available to users
ADMIN
A dealership administrator.
Capabilities:
- Access admin dashboard
- Manage vehicles
- Manage users
- Create vehicles
- Edit vehicles
- Delete vehicles
Admin Dashboard
The admin area must be protected using Spring Security role-based authorization.
Example:
/admin
The dashboard should act as a landing page showing dealership information.
Recommended dashboard cards:
- Total Vehicles
- Available Vehicles
- Sold Vehicles
- Registered Users
- Employees
- Upcoming Appointments
Admin Pages
The dashboard should provide access to management pages.
Example:
/admin/dashboard
/admin/cars
/admin/cars/add
/admin/cars/edit/{id}
/admin/users
The exact URL structure is up to the developer.
Vehicle Entity Requirements
The application must contain a Vehicle entity.
Recommended fields:
- ID
- Make
- Model
- Year
- Price
- Mileage
- Fuel Type
- Transmission
- Color
- VIN
- Description
- Image URL
- Sold Status
Students may add additional fields.
Vehicle Management
ADMIN
Administrators can:
- Create vehicles
- View vehicles
- Update vehicles
- Delete vehicles
EMPLOYEE (Bonus)
Employees can:
- Create vehicles
- View vehicles
- Update vehicles
Employees cannot delete vehicles.
Validation Requirements
The application should validate user input.
Recommended validation examples:
Vehicle:
- Required fields cannot be empty
- Price must be greater than zero
- Mileage cannot be negative
- VIN must be unique
- Year should be reasonable
User:
- Username required
- Password required
- Password confirmation must match
Validation messages should be shown clearly to users.
Recommended Entities
These are recommendations, not strict requirements.
Required Entity
User
Stores authentication information.
Possible fields:
- ID
- Username
- Password
- Role
Vehicle
Stores dealership inventory information.
Bonus Entities
Employee
Represents dealership employees.
Possible fields:
- ID
- Name
- Phone Number
- Role
Customer
Represents customers.
Possible fields:
- ID
- Name
- Phone Number
Appointment
Represents vehicle test drive appointments.
Possible fields:
- ID
- Customer
- Vehicle
- Date
- Status
Available Options
The following are suggestions only.
They are not required implementations.
Password Encryption
Possible approaches:
- BCrypt
- Argon2
Styling
Possible approaches:
- Plain CSS
- Bootstrap
- Tailwind CSS
- Other frontend frameworks
Entity Design
Possible approaches:
- Enum-based roles
- Separate Role entity
- Different relationship mappings
REST API Bonus
Expose vehicle information through REST endpoints.
Example:
GET /api/cars
GET /api/cars/{id}
Possible additions:
- Creating vehicles through API
- Updating vehicles through API
- Deleting vehicles through API
- Pagination
- Filtering
Bonus Challenges
Maximum of 5 bonus challenges.
Bonus 1 - Employee Management
Add an EMPLOYEE role.
Employees should be able to:
- Login
- View vehicles
- Add vehicles
- Edit vehicles
Employees should not be able to delete vehicles.
Bonus 2 - Customer Accounts
Add a CUSTOMER role.
Customers should be able to:
- Register
- Login
- View their profile
- Manage their information
Bonus 3 - Test Drive Appointments
Create a vehicle appointment system.
Customers should be able to:
- Select a vehicle
- Request a test drive
- View appointment status
Employees/Admins should be able to manage appointments.
Bonus 4 - Vehicle REST API
Create a REST API that provides vehicle data.
Requirements:
- JSON responses
- Correct HTTP methods
- Proper status codes
- Validation handling
Bonus 5 - Vehicle Search
Add vehicle searching and filtering.
Examples:
- Search by make
- Search by model
- Filter by price
- Filter by year
- Filter by fuel type