---
````markdown
# 🏢 Employee Management System (EMS Capstone Project)
[](https://www.oracle.com/java/)
[](https://spring.io/projects/spring-boot)
[](https://www.postgresql.org/)
[](LICENSE)
## 📌 Overview
The **Employee Management System (EMS)** is a **capstone project** that demonstrates enterprise-grade backend development using **Java (Spring Boot)** and **PostgreSQL**.
It provides core features for managing employees, departments, roles, payrolls, and leave workflows, with a **secure, scalable, and modular architecture**.
This project is designed to showcase **backend engineering, database design, authentication & authorization, and enterprise-level application development** skills.
---
✅ Employee registration & profile management
✅ Role-based access control (ADMIN, MANAGER, EMPLOYEE)
✅ Department & role management
✅ Payroll management (salary, bonuses, deductions)
✅ Leave request & approval workflow
✅ Authentication & Authorization with Spring Security (JWT-based)
✅ RESTful APIs with Swagger documentation
✅ PostgreSQL persistence with JPA/Hibernate
✅ Dockerized setup for easy deployment
- Languages: Java 17
- Frameworks: Spring Boot 3.x, Spring Security, Hibernate/JPA
- Database: PostgreSQL 15
- Build Tool: Maven
- API Testing: Postman, Swagger UI
- DevOps Tools: Docker, Docker Compose
- Version Control: Git & GitHub
ems-capstone-project/
│── src/main/java/com/ems/ # Source code
│ ├── controller/ # REST controllers
│ ├── service/ # Business logic
│ ├── repository/ # Data access (Spring Data JPA)
│ ├── model/ # Entities (Employee, Role, Department, Payroll, Leave)
│ └── security/ # Authentication & Authorization
│
│── src/main/resources/
│ ├── application.properties # Configuration (DB, security, etc.)
│ └── data.sql # Sample seed data
│
│── docker-compose.yml # Containerized setup
│── pom.xml # Maven dependencies
│── README.md # Documentationgit clone https://github.com/engripaye/ems-capstone-project.git
cd ems-capstone-projectUpdate src/main/resources/application.properties with your PostgreSQL credentials:
spring.datasource.url=jdbc:postgresql://localhost:5432/ems_db
spring.datasource.username=postgres
spring.datasource.password=yourpassword
spring.jpa.hibernate.ddl-auto=updatemvn spring-boot:run- Swagger UI: http://localhost:8080/swagger-ui.html
- API Root: http://localhost:8080/api/v1
# Build and run with Docker Compose
docker-compose up --buildPOST /api/v1/auth/login
{
"username": "admin",
"password": "admin123"
}POST /api/v1/employees
{
"firstName": "John",
"lastName": "Doe",
"email": "[email protected]",
"departmentId": 1,
"roleId": 2,
"salary": 5000.00
}Contributions are welcome!
- Fork the repo
- Create a new branch (
feature/awesome-feature) - Commit your changes
- Push and create a Pull Request
This project is licensed under the MIT License – see the LICENSE file for details.
---
⚡ This README makes your project look **professional, enterprise-ready, and recruiter/ATS friendly**.
Do you want me to also **design a PostgreSQL database schema (tables + relationships)** for the EMS project so you can include it as a diagram in the repo and README?