A comprehensive Laravel-based Human Resource Management System designed to streamline employee management, scheduling, interviews, and organizational analytics with multi-role authentication and powerful visualization tools.
Experience the system live: HRMS Demo
- Overview
- Key Features
- Technology Stack
- System Architecture
- Getting Started
- User Roles & Permissions
- Database Schema
- API Endpoints
- Frontend Technologies
- Security Best Practices
- Contributing
- License
HRMS (Human Resource Management System) is a robust, enterprise-ready Laravel application built to handle comprehensive HR operations for organizations of any size. From employee onboarding to performance analytics, interview scheduling to vacation management, this system provides an all-in-one solution for modern HR departments.
- π Production-Ready: Built on Laravel's solid foundation with industry best practices
- π Data-Driven: Rich analytics and visualizations for informed decision-making
- π Role-Based Access: Granular permissions for admins and moderators
- β‘ Modern Stack: Leverages the latest web technologies for optimal performance
- π± Responsive Design: Works seamlessly across desktop, tablet, and mobile devices
- Admin Role: Full system access with comprehensive management capabilities
- Moderator Role: Account management and profile administration
- Secure login/logout with Laravel Sanctum or Passport
- Password reset and email verification
- Complete CRUD operations for employee records
- CV upload and document management
- Employee profile images and media handling
- Position assignment and tracking
- Employment history and status management
- Working schedule creation and assignment
- Interview scheduling with automated notifications
- Vacation request and approval system
- Conflict detection and calendar synchronization
- Shift rotation and overtime tracking
- Job position CRUD operations
- Position hierarchies and organizational charts
- Salary range and benefits configuration
- Assignment tracking and position history
- Real-time performance metrics dashboard
- Employee attendance and productivity reports
- Interactive Charts.js visualizations
- Customizable KPI tracking
- Export capabilities for reports (PDF, Excel)
- Interview scheduling with candidate tracking
- Automated email notifications
- Interview feedback and scoring system
- Candidate pipeline visualization
- Vacation request submission
- Approval workflow with multi-level authorization
- Leave balance tracking
- Calendar integration for team visibility
- Admin account activation/deactivation by moderators
- Profile management and customization
- Activity logs and audit trails
- Password policies and security settings
| Technology | Purpose | Version |
|---|---|---|
| Laravel | PHP Framework | 10.x+ |
| PHP | Server-side language | 8.1+ |
| MySQL/MariaDB | Database | 8.0+/10.x+ |
| Eloquent ORM | Database abstraction | Built-in |
| Laravel Sanctum/Passport | API authentication | Latest |
| Technology | Purpose |
|---|---|
| Blade Templates | Server-side templating |
| Bootstrap 5 | CSS framework |
| jQuery | DOM manipulation |
| AJAX | Asynchronous requests |
| Chart.js | Data visualization |
| JavaScript ES6+ | Client-side logic |
- Composer - PHP dependency management
- NPM/Yarn - JavaScript package management
- Laravel Mix/Vite - Asset compilation
- Git - Version control
βββββββββββββββββββββββββββββββββββββββββββ
β Client Layer β
β βββββββββββ βββββββββββ βββββββββββ β
β β Admin β βModeratorβ βEmployee β β
β βDashboardβ β Portal β β Portal β β
β ββββββ¬βββββ ββββββ¬βββββ ββββββ¬βββββ β
βββββββββΌββββββββββββΌββββββββββββββΌββββββββ
β β β
βββββββββββββ΄ββββββββββββββ
β
βββββββββββββΌβββββββββββββ
β HTTP/AJAX Requests β
βββββββββββββ¬βββββββββββββ
β
βββββββββββββββββββββΌββββββββββββββββββββββββ
β Laravel Application β
β βββββββββββββββββββββββββββββββββββββββ β
β β Routes Layer β β
β β (web.php / api.php) β β
β ββββββββββββββββ¬βββββββββββββββββββββββ β
β β β
β ββββββββββββββββΌβββββββββββββββββββββββ β
β β Middleware Layer β β
β β (Auth, CORS, Validation) β β
β ββββββββββββββββ¬βββββββββββββββββββββββ β
β β β
β ββββββββββββββββΌβββββββββββββββββββββββ β
β β Controller Layer β β
β β (Business Logic Handlers) β β
β ββββββββββββββββ¬βββββββββββββββββββββββ β
β β β
β ββββββββββββββββΌβββββββββββββββββββββββ β
β β Model Layer β β
β β (Eloquent ORM Models) β β
β ββββββββββββββββ¬βββββββββββββββββββββββ β
βββββββββββββββββββΌββββββββββββββββββββββββββ
β
βββββββββββΌβββββββββββ
β MySQL Database β
β β
β ββββββββββββββββ β
β β employees β β
β β positions β β
β β schedules β β
β β interviews β β
β β vacations β β
β β users β β
β ββββββββββββββββ β
ββββββββββββββββββββββ
Before you begin, ensure you have the following installed:
- PHP >= 8.1
- Composer >= 2.0
- Node.js >= 16.x and NPM
- MySQL >= 8.0 or MariaDB >= 10.x
- Git
-
Clone the repository
git clone https://github.com/abdoElHodaky/larvhrms.git cd larvhrms -
Install PHP dependencies
composer install
-
Install JavaScript dependencies
npm install
-
Setup environment configuration
cp .env.example .env
-
Generate application key
php artisan key:generate
-
Configure your database
Edit
.envfile with your database credentials:DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=hrms_db DB_USERNAME=your_username DB_PASSWORD=your_password
-
Run database migrations
php artisan migrate
-
Seed the database (optional)
php artisan db:seed
-
Compile frontend assets
npm run dev
-
Start the development server
php artisan serve
-
Access the application
Open your browser and navigate to:
http://localhost:8000
Capabilities:
- β Full CRUD operations on all entities
- β Employee management (create, read, update, delete)
- β Trainee onboarding and management
- β Schedule creation and assignment
- β Position management and hierarchy
- β Interview scheduling and tracking
- β Vacation approval and management
- β Access to comprehensive analytics dashboard
- β Performance metrics and visualizations
- β System configuration and settings
- β Report generation and export
Capabilities:
- β Admin account activation/deactivation
- β User profile management
- β View-only access to reports
- β Limited employee information access
- β Cannot delete critical records
- β Cannot modify system settings
Manages employee data and records
- Fields: id, name, email, phone, address, cv_path, image_path, hire_date, status
- Relationships:
belongsTopositions (position_id)belongsToschedules (schedule_id)hasManyvacations
Manages job positions within the organization
- Fields: id, title, description, salary_min, salary_max, department
- Relationships:
hasManyemployees
Manages work schedules and shifts
- Fields: id, name, start_time, end_time, days, shift_type
- Relationships:
hasManyemployees
Manages interview scheduling and tracking
- Fields: id, candidate_name, position, interview_date, interviewer_id, status, notes
- Relationships:
belongsTousers (interviewer_id)
Manages employee vacation requests
- Fields: id, employee_id, start_date, end_date, reason, status, approved_by
- Relationships:
belongsToemployees
Stores user authentication and role information
- Fields: id, name, email, password, role, is_active, email_verified_at
- Relationships:
hasManyinterviews (as interviewer)
ββββββββββββββββ
β users β
β β
β - id β
β - name β
β - email β
β - password β
β - role β
ββββββββ¬ββββββββ
β
β interviewer_id (interviews)
β
βΌ
ββββββββββββββββ ββββββββββββββββ
β interviews β β positions β
β β β β
β - id β β - id β
β - date β β - title β
β - status βββββββββββ€ - salary β
ββββββββββββββββ ββββββββ¬ββββββββ
β
β position_id
β
ββββββββΌββββββββ
β employees β
β β
β - id β
β - name β
β - cv_path β
β - image β
ββββββββ¬ββββββββ
β
βββββββββββ¬ββββββββββ
β β β
employee_id β schedule_id
β β β
ββββββββΌββββββββ β ββββββββΌββββββββ
β vacations β β β schedules β
β β β β β
β - id β β β - id β
β - start β β β - name β
β - end β β β - times β
β - status β β ββββββββββββββββ
ββββββββββββββββ β
β
ββββββββββββββββ
β
many employees
use same schedule
POST /api/login # User login
POST /api/logout # User logout
POST /api/register # New user registration
POST /api/password/reset # Password reset requestGET /api/employees # List all employees
POST /api/employees # Create new employee
GET /api/employees/{id} # Get employee details
PUT /api/employees/{id} # Update employee
DELETE /api/employees/{id} # Delete employee
POST /api/employees/{id}/cv # Upload employee CVGET /api/positions # List all positions
POST /api/positions # Create new position
GET /api/positions/{id} # Get position details
PUT /api/positions/{id} # Update position
DELETE /api/positions/{id} # Delete positionGET /api/schedules # List all schedules
POST /api/schedules # Create new schedule
GET /api/schedules/{id} # Get schedule details
PUT /api/schedules/{id} # Update schedule
DELETE /api/schedules/{id} # Delete scheduleGET /api/interviews # List all interviews
POST /api/interviews # Schedule new interview
GET /api/interviews/{id} # Get interview details
PUT /api/interviews/{id} # Update interview
DELETE /api/interviews/{id} # Cancel interviewGET /api/vacations # List all vacations
POST /api/vacations # Request vacation
GET /api/vacations/{id} # Get vacation details
PUT /api/vacations/{id} # Update vacation request
POST /api/vacations/{id}/approve # Approve vacation
POST /api/vacations/{id}/reject # Reject vacationGET /api/analytics/dashboard # Dashboard statistics
GET /api/analytics/employees # Employee analytics
GET /api/analytics/attendance # Attendance reports
GET /api/reports/export/{type} # Export reports- Bootstrap 5: Responsive grid system and component library
- Custom CSS: Tailored styling for specific components
- Responsive Design: Mobile-first approach with breakpoints
- Vanilla JavaScript ES6+: Modern syntax and features
- jQuery: DOM manipulation and AJAX operations
- AJAX: Asynchronous data fetching without page reloads
- Blade Templates: Laravel's powerful templating engine
- Component-based architecture
- Template inheritance and sections
- Conditional rendering and loops
- Chart.js: Interactive charts and graphs
- Line charts for trends
- Bar charts for comparisons
- Pie charts for distributions
- Real-time data updates
- HTML5: Semantic markup
- Form Validation: Client-side and server-side validation
- File Uploads: Drag-and-drop support
- Notifications: Toast messages and alerts
- Modal Dialogs: Bootstrap modals for user interactions
β Environment Configuration
- Sensitive data stored in
.envfile - Environment variables never committed to repository
- Different configurations for development/production
β Laravel Built-in Protection
- CSRF (Cross-Site Request Forgery) protection on all forms
- SQL Injection prevention via Eloquent ORM
- XSS (Cross-Site Scripting) protection through Blade templating
- Password hashing using bcrypt
- Rate limiting on API endpoints
β Input Validation & Sanitization
- Server-side validation using Laravel's validator
- Request validation classes for complex rules
- Data sanitization before database storage
- File upload validation and type checking
β Authentication & Authorization
- Secure session management
- Role-based access control (RBAC)
- Middleware for route protection
- Password strength requirements
- Account lockout after failed attempts
- Keep Laravel and all dependencies up to date
- Run
composer updateregularly - Monitor security advisories
- Implement automated dependency scanning
- Use HTTPS/SSL certificates
- Configure proper file permissions
- Disable debug mode in production
- Implement proper backup strategies
- Use environment-specific configurations
# Database
php artisan migrate # Run migrations
php artisan migrate:rollback # Rollback last migration
php artisan migrate:fresh --seed # Fresh migration with seeders
php artisan db:seed # Run database seeders
# Cache Management
php artisan cache:clear # Clear application cache
php artisan config:clear # Clear configuration cache
php artisan route:clear # Clear route cache
php artisan view:clear # Clear compiled views
# Development
php artisan serve # Start development server
php artisan tinker # Interactive shell
php artisan make:controller <name> # Create controller
php artisan make:model <name> # Create model
php artisan make:migration <name> # Create migration
# Testing
php artisan test # Run test suite
php artisan test --coverage # Run tests with coveragenpm run dev # Compile assets for development
npm run watch # Watch and recompile on changes
npm run prod # Compile and minify for production
npm run lint # Lint JavaScript fileslarvhrms/
βββ app/
β βββ Http/
β β βββ Controllers/ # Application controllers
β β βββ Middleware/ # Custom middleware
β β βββ Requests/ # Form request validators
β βββ Models/ # Eloquent models
β βββ Providers/ # Service providers
β βββ Services/ # Business logic services
βββ config/ # Configuration files
βββ database/
β βββ migrations/ # Database migrations
β βββ seeders/ # Database seeders
β βββ factories/ # Model factories
βββ public/
β βββ css/ # Compiled CSS
β βββ js/ # Compiled JavaScript
β βββ images/ # Public images
βββ resources/
β βββ views/ # Blade templates
β βββ js/ # Source JavaScript
β βββ css/ # Source CSS/SCSS
βββ routes/
β βββ web.php # Web routes
β βββ api.php # API routes
β βββ channels.php # Broadcast channels
βββ storage/ # File storage
βββ tests/ # Automated tests
βββ .env.example # Environment template
βββ composer.json # PHP dependencies
βββ package.json # NPM dependencies
We welcome contributions from the community! Here's how you can help:
-
Fork the repository
# Click the 'Fork' button on GitHub -
Clone your fork
git clone https://github.com/your-username/larvhrms.git cd larvhrms -
Create a feature branch
git checkout -b feature/your-amazing-feature
-
Make your changes
- Write clean, documented code
- Follow PSR-12 coding standards
- Add tests for new features
- Update documentation as needed
-
Commit your changes
git commit -am 'Add some amazing feature' -
Push to your fork
git push origin feature/your-amazing-feature
-
Create a Pull Request
- Go to the original repository
- Click 'New Pull Request'
- Select your branch
- Describe your changes
- Follow Laravel best practices and conventions
- Write meaningful commit messages
- Include tests for bug fixes and new features
- Update documentation for API changes
- Ensure all tests pass before submitting PR
- Keep pull requests focused on a single feature/fix
This project is licensed under the MIT License. See the LICENSE file for full details.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software...
abdoElHodaky
- GitHub: @abdoElHodaky
- Repository: larvhrms
Special thanks to:
- Laravel Community - For the amazing framework and ecosystem
- Bootstrap Team - For the responsive UI framework
- Chart.js Developers - For powerful data visualization tools
- Contributors - Everyone who has contributed to this project
- Omar7tech - Original HRMS project inspiration
- π§ Issues: GitHub Issues
- π Documentation: Laravel Official Docs
- π¬ Community: Laravel Forums
When reporting bugs, please include:
- Laravel version
- PHP version
- Database version
- Steps to reproduce
- Expected vs actual behavior
- Error messages and logs
- Real-time notifications with WebSockets
- Advanced reporting with custom filters
- Mobile application (React Native)
- Integration with third-party HR tools
- AI-powered resume parsing
- Automated onboarding workflows
- Performance review module
- Training and development tracking
- Payroll integration
- Multi-language support
A feature-rich Laravel-based Human Resource Management System (HRMS) providing multi-role authentication (Admin/Moderator), comprehensive employee lifecycle management (CRUD operations, CV uploads, scheduling), position and vacation management, interview scheduling, real-time analytics with Chart.js visualizations, and a responsive Bootstrap UI with AJAX-powered interactions, all backed by MySQL/MariaDB with Eloquent ORM for enterprise-grade HR operations and data-driven decision making.