Project Title: Employee Management System
Objective: The goal of this project is to provide hands-on experience in developing a Spring
Boot application that demonstrates CRUD operations, database management, JWT-based
security, and file uploads (CSV). The project will include JPA for database interaction and entity
relationships representing one-to-many and many-to-many mappings.
Scope of Work: Develop an Employee Management System with the following functionalities:
1. User Management
○ Register/Login users with roles (Admin/User) using JWT-based authentication.
○ Implement role-based access control (RBAC).
○ Secure endpoints using JWT tokens.
○ Setup Swagger endpoints for API documentation
2. CRUD Operations
○ Implement CRUD operations for the following entities:
■ Employee (Basic Details)
■ Department
■ Project
3. Entity Relationships
○ One-to-Many: One Department can have multiple Employees.
○ Many-to-Many: An Employee can be assigned to multiple Projects, and a Project
can have multiple Employees.
4. CSV Upload
○ Develop functionality to upload employee and project data via CSV files.
○ Validate and parse CSV files.
○ Persist CSV data to the database, establishing appropriate relationships
(one-to-many, many-to-many).
5. API Endpoints
○ User Management:
■ POST /api/auth/register - Register a new user
■ POST /api/auth/login - Authenticate and retrieve JWT token
○ Employee Management:
■ GET /api/employees - Retrieve all employees
■ GET /api/employees/{id} - Get employee by ID
■ POST /api/employees - Create new employee
■ PUT /api/employees/{id} - Update employee details
■ DELETE /api/employees/{id} - Delete employee
○ Department Management:
■ GET /api/departments - Retrieve all departments
■ POST /api/departments - Create new department
○ Project Management:
■ GET /api/projects - Retrieve all projects
■ POST /api/projects - Create new project
○ CSV Upload:
■ POST /api/upload/employees - Upload employee data via CSV
■ POST /api/upload/projects - Upload project data via CSV
6. Database
○ Use PostgreSQL or MySQL for data persistence.
○ Configure and manage schema using JPA and Hibernate.
7. Testing
○ Implement unit tests for service and controller layers.
○ Use Mockito or similar frameworks to mock dependencies.
Technical Stack:
● Backend: Java 21, Spring Boot 3.x
● Database: PostgreSQL/MySQL
● Security: JWT (JSON Web Token)
● ORM: JPA, Hibernate
● Build Tool: Maven/Gradle
● Testing: JUnit, Mockito
● Tools: Postman, Swagger (for API documentation)
Deliverables:
1. Source code hosted on GitHub.
2. API documentation using Swagger.
3. SQL scripts to initialize database schema.
4. Test coverage report.
5. CSV sample files for data upload.
Learning Outcomes:
● Spring Boot fundamentals (CRUD operations, JPA, and security).
● Database schema design and entity relationships.
● JWT-based authentication and RBAC.
● Handling file uploads and parsing CSV files.
● Writing and executing unit tests.