Employee Management System
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:
Deliverables:
Learning Outcomes: