The Vacation Tracking System is an application designed to manage employee leave requests, approvals, and balances. The system ensures efficient tracking and reporting of vacation time and supports multiple roles with different access levels.
- Features
- Technology Stack
- Architecture
- Setup and Installation
- Usage
- Contributing
- License
- User Management: Registration, login, profile management, and role-based access control.
- Leave Management: Submit, approve, deny leave requests; view leave balances.
- Leave Types and Balances: Define different leave types, calculate and track leave balances.
- Reporting and Analytics: Generate and view reports on leave usage.
- Notifications: Email, SMS, and push notifications for leave request updates.
- Integration: Integration with external HR systems and calendar services.
- Administrative Features: Manage leave policies, holiday calendars, and configurations.
- User Dashboard: View leave balances, upcoming leaves, and pending requests.
- Security: Implement robust authentication and authorization mechanisms.
- Compliance: Ensure data protection and audit logging.
- Framework: Spring Boot
- ORM: Hibernate, Spring Data JPA
- Security: Spring Security, JWT, OAuth2
- Mail: Spring Mail
Frameworks/Libraries:
- Thymeleaf (Server-side rendering)
- UI Libraries: Bootstrap, Tailwind CSS
- Relational Databases: PostgreSQL
- Migration: Liquibase
- API Design: RESTful APIs
- Third-party Integration: Google Calendar API, Outlook API
- Containerization: Docker
- Orchestration: Kubernetes
- CI/CD: Jenkins, GitHub Actions
- Monitoring: Spring Boot Actuator
- Logging: ELK Stack (Elasticsearch, Logstash, Kibana)
- Unit and Integration Testing: JUnit, Mockito
- API Testing: Postman
- API Documentation: Swagger, OpenAPI
- Code Reduction: Lombok
- Object Mapping: Mapper
- Controllers: Handle incoming HTTP requests and route them to the appropriate service layer.
- Services: Contain business logic and interact with repositories.
- Repositories: Interact with the database using Spring Data JPA.
- Security: Configured using Spring Security, JWT, and OAuth2 for authentication and authorization.
Server-side Rendering (SSR): using Thymeleaf, templates are rendered on the server and served to the client.
Entities: Represent data models mapped to database tables. Repositories: Interface for CRUD operations on entities.
- External APIs: Integration with third-party services for extended functionality.
- Java 17 or higher
- Docker and Docker Compose
- PostgreSQL
git clone https://github.com/hassanemad15697/vacation-tracking-system.git cd vacation-tracking-system/backend
Update application.properties
with your database configuration.
./mvnw spring-boot:run
docker-compose up --build
Open your browser and navigate to http://localhost:8080.
Create a new account or log in with existing credentials.
Navigate to the leave request page and submit your vacation request.
Manage users, leave types, and approvals from the admin dashboard.
This project is licensed under the MIT License - see the LICENSE.md file for details.