Vista Tech ELMS is a full-stack, enterprise-grade Employee Leave Management System built using Spring Boot 3.3.2 (Java 21 LTS) and Angular 17 (Standalone Components) with MySQL 8.4 LTS.
| Component | Platform | URL / Location |
|---|---|---|
| Live Web App (Frontend) | Vercel | https://elms-snowy.vercel.app |
| Live REST API (Backend) | Render | https://elms-mhk7.onrender.com/api |
| Cloud MySQL 8.4 Database | Aiven | defaultdb |
| Source Code Repository | GitHub | https://github.com/ganesh805/ELMS.git |
- MySQL 8.4 Schema Script: https://github.com/ganesh805/ELMS/blob/main/database/schema.sql
- MySQL 8.4 Baseline Seed Script: https://github.com/ganesh805/ELMS/blob/main/database/seed.sql
- Documented Startup Seeder:
DataInitializer.java
- Interactive Swagger UI: https://elms-mhk7.onrender.com/swagger-ui/index.html (Redirect: https://elms-mhk7.onrender.com/docs)
- Direct OpenAPI 3 JSON: https://elms-mhk7.onrender.com/v3/api-docs
- API Contract Specification: https://github.com/ganesh805/ELMS/blob/main/docs/api.md
- Vista Tech Corporate UI: Custom modern dark glassmorphism design system integrated with official Vista Tech branding.
- Dynamic Working Day Engine (Rule 1): Calculates net leave duration by excluding Saturdays, Sundays, and registered company public holidays automatically.
- Leave Overlap Prevention (Rule 2): Rejects double-booking leave dates for the same employee.
- Quota & Balance Enforcement (Rule 3): Validates remaining leave balance prior to request submission.
- Manager Approval Workflow (Rule 6 & 7): Managers review pending team applications, submit feedback comments, and trigger automatic balance deductions upon approval.
- HR Administrative Control Panel: HR Admins can create user accounts, edit details, assign line managers, override yearly quotas, configure leave categories (with soft delete), and register company holidays.
- Asynchronous Email Notifications: Non-blocking
@Asyncnotifications sent upon leave submission, approval, or rejection. - Spring Security & JWT Authentication: Stateless authentication with HMAC-SHA384 JWT tokens and BCrypt password encryption (PDF §15 Headline Bonus Achieved).
- Interactive API Documentation: Swagger UI specs accessible at
http://localhost:8080/swagger-ui/index.html.
- Backend: Java 21 LTS, Spring Boot 3.3.2, Spring Data JPA, Spring Security, JJWT 0.12.5, Lombok, Slf4j.
- Frontend: Angular 17 (Standalone Components, RxJS, TypeScript 5, Custom Glassmorphism Design System).
- Database: MySQL 8.4 LTS (
elms_db). - Build Tools: Apache Maven (
mvnw.cmd), Angular CLI (@angular/cli@17).
Create local database:
CREATE DATABASE elms_db;Configure database credentials in backend/src/main/resources/application-local.properties:
spring.datasource.url=jdbc:mysql://localhost:3306/elms_db?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
spring.datasource.username=root
spring.datasource.password=12345Open a terminal in the backend directory and run:
cd backend
.\mvnw.cmd spring-boot:run- REST API Base URL:
http://localhost:8080/api - Swagger UI:
http://localhost:8080/swagger-ui/index.html
Open a separate terminal in the frontend directory and run:
cd frontend
npm start- Application URL:
http://localhost:4200
Upon initial application startup, the system automatically initializes a clean baseline HR Admin account:
- Email:
admin@elms.com - Password:
admin123 - Role:
HR_ADMIN
(Log in as HR Admin to create employee/manager accounts and assign line managers via the /admin/users UI).
In accordance with capstone requirements:
- The system supports both Header-Based Authorization (
X-User-Id) for lightweight role/ownership checks and Spring Security JWT Authentication with BCrypt password hashing (Headline Bonus Goal). - Backend service layers enforce strict ownership and reporting-line checks so managers cannot approve requests outside their direct report hierarchy, and employees cannot modify another user's leave applications.
- Backend Unit & Integration Tests:
cd backend .\mvnw.cmd test - Frontend Angular Build Verification:
cd frontend npx ng build
docs/learning-log.md: Commit-by-commit development and concept log across all 30 commits.docs/viva-preparation.md: Top 50 viva Q&As and live coding refactoring tasks.docs/architecture.md: System architecture, tech stack, and layered design.docs/api.md: Complete REST API contract specification.docs/database.md: MySQL 8.4 schema dictionary and ERD diagram.docs/business-rules.md: Core business rules & validation logic.docs/capstone-project-report.md: Final capstone project completion report.docs/candidate-declaration.md: Signed Appendix A Candidate Declaration for Karanam Ganesh.