A comprehensive Employee Management System backend built with Java, Spring Boot, and MongoDB, designed to streamline HR operations such as attendance, leave management, real-time chat, meetings, and task scheduling. This backend exposes secure RESTful APIs and WebSocket endpoints to support a feature-rich HRMS frontend.
-
User Authentication
- Google OAuth 2.0
- Email/Password login
- JWT-based secured endpoints
-
Real-Time Chat System
- WebSocket + STOMP-based 1-to-1 messaging
- Encrypted messages (supports text and images)
-
Attendance Management
- Geofencing-based check-in/out
- Role-based view for HR and employee
- Daily, date-wise, and user-wise queries
-
Leave Management
- Apply, approve, reject, and cancel leave
- Tracks leave status and history
- Admin and employee-level access
-
Meeting Scheduler
- Create meetings with participant lists
- Google Calendar API integration
- Automatic scheduling and syncing
-
Task Management
- Create, assign, update tasks
- Upload attachments with tasks
- HR can manage all employees' tasks
-
Role-Based Access
- Admin, HR, and Employee roles
- Controlled API access by user type
-
File Storage
- Supabase integration for media storage
- Securely stores chat images and task files
Layer | Technology |
---|---|
Language | Java |
Framework | Spring Boot |
Database | MongoDB |
Messaging | WebSocket + STOMP |
Auth & Secure | JWT, Google OAuth 2.0, Spring Security |
File Storage | Supabase |
Calendar Sync | Google Calendar API |
API Client | Postman Collection (REST & WebSocket) |
- JWT-based auth for all secured routes
- OAuth 2.0 via Google for seamless login
- Passwords hashed securely (backend-handled)
- Role-based API access: Admin | HR | Employee
- Google OAuth 2.0 — Auth login
- Google Calendar API — Meeting creation & syncing
- Supabase — File storage for images, attachments
- MongoDB Atlas — Cloud-hosted NoSQL database
- Modular Spring Boot project structure
- DTOs for clean request/response contracts
- Services & Repositories follow separation of concerns
- WebSocket config is centralized and secured
If you’d like to contribute, fix bugs, or expand this project, feel free to open issues or pull requests!