Skip to content

RevWorkForce-PES/P2-RevWorkForce

Repository files navigation

Release

Rev WorkForce logo

Jenkins Build Issues Coverage Pull Requests Quality Gate Documentation

Java Spring Boot Oracle Maven Spring Security Spring Data JPA Thymeleaf Jenkins SonarQube JUnit Mockito JaCoCo

Welcome to P2-RevWorkForce

RevWorkForce is a full-stack monolithic Human Resource Management web application designed to streamline employee management, automate leave tracking, and enhance performance review processes for modern organizations.

The system supports three user roles:

  • Employees - Self-service portal
  • Managers - Team management and approvals
  • Admins - System configuration and reporting

Key Highlights ✦

  • Secure Authentication - Spring Security 6 with BCrypt password encryption
  • Role-Based Access Control - Three user roles (Employee, Manager, Admin)
  • Performance Management - Goal setting, tracking, and performance reviews
  • Leave Management - Automated leave balance tracking and approval workflows
  • Announcements - Company-wide communication system
  • Audit Trail - Comprehensive activity logging for compliance
  • Responsive Ui Design - Works seamlessly improves Ui/Ux

Group Members ✦

Profile Name Role GitHub LinkedIn Contributions
Mastan Sayyad Team Lead, Backend, System Design, Authentication, UI/UX, Documentation, CI/CD and Testing View
Gururaj Shetty UI Lead, Backend Ops, Admin Operations, System Config, Documentation & Testing View
Aishwarya MS Backend Lead, Ui, Leave Module, Notification Module, Holiday Module, Testing View
Shahla Nigar Backend Lead Performance Module, Performance Reviews, goal, Testing & QA View

Project Structure 🗁

RevWorkForce
│
├── database/                # SQL scripts for schema and seed data
│   ├── schema.sql
│   ├── seed_data.sql
│   └── create_user.sql
│
├── docs/                    # Project documentation
│   ├── Diagrams/            # Architecture & UML diagrams
│   ├── Documentations/      # Module documentation
│   └── Testing Artifacts/   # SonarQube, JaCoCo reports
│
├── jenkins/                 # CI/CD pipeline configuration
│   └── Jenkinsfile
│
├── src/
│   ├── main/
│   │   ├── java/com/revature/revworkforce/
│   │   │   ├── config/          # Spring configuration classes
│   │   │   ├── controller/      # REST & MVC controllers
│   │   │   ├── dto/             # Data Transfer Objects
│   │   │   ├── enums/           # Enum definitions
│   │   │   ├── exception/       # Custom exception handling
│   │   │   ├── model/           # Entity models
│   │   │   ├── repository/      # Spring Data JPA repositories
│   │   │   ├── scheduler/       # Scheduled background tasks
│   │   │   ├── security/        # Authentication & authorization
│   │   │   ├── service/         # Service interfaces
│   │   │   │   └── impl/        # Service implementations
│   │   │   └── util/            # Utility/helper classes
│   │   │
│   │   └── resources/
│   │       ├── static/          # CSS, JS, images
│   │       └── templates/       # Thymeleaf UI templates
│   │
│   └── test/
│       └── java/com/revature/revworkforce/
│           ├── controller/      # Controller unit tests
│           ├── repository/      # Repository tests
│           ├── service/         # Service tests
│           └── util/            # Utility tests
│
├── logs/                      # Application log files
│
├── pom.xml                    # Maven configuration
├── sonar-project.properties   # SonarQube configuration
└── README.md                  # Project documentation

Features

Note

The application follows a role-based access control model with three roles: Employee, Manager, and Administrator.

Employee Manager Administrator
Personal dashboard with analytics and upcoming events Team management and team member overview Full employee management (CRUD operations)
Leave management – apply, track, and view leave balance Review and approve/reject leave requests Manage departments, designations, holidays, and leave types
Performance and goals tracking with self-assessment Monitor and guide team member goals Generate analytics and organizational reports
View company announcements and updates Conduct performance reviews and provide feedback Maintain audit logs for compliance and activity tracking
Manage personal profile and employment information Track team performance and attendance metrics Manage company-wide announcements
Receive real-time system notifications Access team dashboards and insights System configuration and administrative controls

Methodologies ᵎ!ᵎ

Note

RevWorkForce follows agile practices and an iterative development approach, where the development cycle is repeated multiple times. Each iteration delivers a new release that adds new features or refines existing functionality.

Iterative Incremental Model

image

System Architecture 모

Note

RevWorkForce follows a MVC Monolithic layered architecture pattern for maintainability and scalability:

Key Design Patterns ⚙︎

  • MVC (Model-View-Controller) - Separation of concerns
  • Repository Pattern - Data access abstraction
  • Service Layer Pattern - Business logic encapsulation
  • DTO Pattern - Data transfer between layers
  • Dependency Injection - Loose coupling via Spring IoC

ER Diagram

Key Relationships

EMPLOYEES (1) ←→ (N) EMPLOYEE_ROLES ←→ (N) ROLES
EMPLOYEES (1) ←→ (N) LEAVE_APPLICATIONS
EMPLOYEES (1) ←→ (N) GOALS
EMPLOYEES (1) ←→ (N) PERFORMANCE_REVIEWS
DEPARTMENTS (1) ←→ (N) EMPLOYEES
EMPLOYEES (Manager) (1) ←→ (N) EMPLOYEES (Reports)

Technology Stack </>

Backend

Technology Version Purpose
Java 17 Primary programming language
Spring Boot 3.2.x Application framework
Spring Security 6.x Authentication & Authorization
Spring Data JPA 3.2.x Data persistence layer
Hibernate 6.x ORM framework
Maven 3.9+ Build & dependency management

Frontend

Technology Version Purpose
Thymeleaf 3.1.x Server-side template engine
Bootstrap 5.3.x UI framework
JavaScript ES6+ Client-side interactivity
HTML5/CSS3 - Markup & styling

Database

Technology Version Purpose
Oracle Database 21c XE Primary data store
HikariCP Latest Connection pooling

Tools & Quality

Tool Version Purpose
JaCoCo 0.8.10 Code coverage (60%+)
SonarQube Latest Code quality analysis
Checkstyle Latest Code style enforcement
PMD Latest Static code analysis
Jenkins Latest CI/CD automation

Prerequisites 🗎

Before installing RevWorkForce, ensure you have the following installed:

Required Software

Software Version Download Link
Java JDK 17 or higher Download
Maven 3.9+ Download
Oracle Database 21c XE Download
Git Latest Download

Optional (for Development)

Software Purpose
Eclipse IDE
IntelliJ IDEA Recommended IDE
Docker For SonarQube & Jenkins
Postman API testing

Verify Installation

# Check Java version
java -version
# Expected: java version "17.x.x"

# Check Maven version
mvn -version
# Expected: Apache Maven 3.9.x

# Check Oracle Database
sqlplus / as sysdba
# Should connect successfully

Installation ⓘ

Step 1: Clone the Repository

git clone https://github.com/yourusername/RevWorkForce.git
cd RevWorkForce

Note

If you don't have Git installed, you can download the ZIP file from the repository page.

Step 2: Database Setup ⛁

Create Database User ⛁

-- Connect as SYSDBA
sqlplus / as sysdba

-- Create user
CREATE USER your_db_name IDENTIFIED BY "your_password";

-- Grant privileges
GRANT CONNECT, RESOURCE, DBA TO your_db_name;
GRANT UNLIMITED TABLESPACE TO your_db_name;

-- Verify
SELECT username FROM dba_users WHERE username = 'your_db_name';

Important

Security Note: Change the default password RevWork@2026 to a strong password in production environments.

Create Tables (Option 1: Automatic via JPA)

The application will automatically create tables on first run if configured correctly.

Tip

Set spring.jpa.hibernate.ddl-auto=update in application.properties for automatic table creation during development.

Create Tables (Option 2: Manual SQL Script) ⛁

# Run the database initialization script
sqlplus revworkforce/RevWork@2026@localhost:1521/XEPDB1 @src/main/resources/db/schema.sql

Caution

Production Warning: Never use ddl-auto=create or ddl-auto=create-drop in production as it will delete all your data!

Step 3: Configure Application Properties

Edit src/main/resources/application.properties:

# ==========================================
# SERVER CONFIGURATION
# ==========================================
server.port=8082
server.servlet.context-path=/

# ==========================================
# DATABASE CONFIGURATION
# ==========================================
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:XEPDB1 or XE
spring.datasource.username=user_db_name
spring.datasource.password=db_password
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver

# Other Required Configurations

Warning

Never commit sensitive credentials to version control! Use environment variables or encrypted configuration in production.

Step 4: Install Dependencies

# Install Maven dependencies
mvn clean install -DskipTests

Note

The first build may take 3-5 minutes as Maven downloads all dependencies.

Configuration

Environment-Specific Configuration

Create profile-specific property files:

application.properties    # Development
application-test.properties   # Testing

Running the Application

Method 1: Using Maven (Development)

# Run with Maven
mvn spring-boot:run

# Run on custom port
mvn spring-boot:run -Dspring-boot.run.arguments=--server.port=8082

Method 2: Using JAR (Production)

# Package the application
mvn clean package -DskipTests

# Run the JAR
java -jar target/revworkforce-1.0.0.jar

# Run with custom memory settings
java -Xms512m -Xmx1024m -jar target/revworkforce-1.0.0.jar

Method 3: Using IDE

  1. Open project in IntelliJ IDEA or Eclipse
  2. Locate RevWorkForceApplication.java
  3. Right-click → Run 'RevWorkForceApplication'

Verify Application Started

# Check console output for:
# Started RevWorkForceApplication in X.XXX seconds

# Access application
http://localhost:8082

# Check health endpoint
http://localhost:8082/actuator/health

Tip

First Run: Application may take 20-30 seconds to start as it initializes database connections and creates tables.

Testing 𖢥

Running Tests

# Run all tests
mvn test

# Run specific test class
mvn test -Dtest=EmployeeServiceImplTest

# Run tests with coverage
mvn clean test jacoco:report

# View coverage report
open target/site/jacoco/index.html

Coverage Goals ılıı

  • Target: 60%+ line coverage

Note

Coverage reports are generated in target/site/jacoco/index.html after running mvn test jacoco:report

Code Quality

SonarQube Analysis

# Start SonarQube (Docker)
docker run -d --name sonarqube -p 9000:9000 sonarqube:latest

# Run analysis
mvn clean verify sonar:sonar \
  -Dsonar.projectKey=revworkforce \
  -Dsonar.host.url=http://localhost:9000 \
  -Dsonar.token=YOUR_TOKEN

Tip

Run SonarQube analysis before every release to ensure code quality standards are met.

CI/CD Pipeline

Pipeline Stages

  1. Checkout - Pull latest code from repository
  2. Build - Compile source code
  3. Test - Run unit tests (60%+ coverage required)
  4. SonarQube - Code quality analysis (optional)
  5. Quality Gate - Enforce quality standards
  6. Package - Create deployable JAR
  7. Deploy - Deploy to staging/production

Important

The pipeline will fail if Quality Gate criteria are not met. Fix all critical issues before merging.

Sprint Progress & Development Insights

Note

This includes project execution metrics such as burn-up charts, timeline-based contribution analysis, and sprint workflow visualization for monitoring progress and productivity.


For more information, see:

About

RevWorkforce is a full-stack monolithic Human Resource Management (HRM) web application designed to streamline employee management, leave tracking, and performance review processes.

Topics

Resources

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors