A lightweight yet powerful Human Resource Management (HRM) System built to streamline employee management, attendance tracking, and payroll processing.
Built with Laravel, Inertia.js, and Vue 3, this project demonstrates a modern, single-page application (SPA) architecture for internal enterprise tools.
- Smart Clock-In: Employees can only clock in when they are physically inside designated office zones.
- Polygon Geofencing: Administrators can draw complex office boundaries on a map to define allowed work areas.
- Real-time Validation: Uses browser geolocation APIs compared against stored polygon coordinates.
- Interactive Calendar: A full visual history of an employee's attendance.
- Status Capabilities: Tracks Present, Late, Half-Day, Absent, and Leave statuses.
- Detailed Logs: View exact check-in and check-out times for every active day.
- Streamlined Requests: Employees can easily apply for sick, vacation, or casual leaves.
- Approval Workflow: Admins can approve or reject leave requests with reason tracking.
- Leave Balance: Dashboard overview of pending and approved leaves.
- Auto-Generation: Generate monthly payslips for all eligible employees in one click.
- Calculations: Automatically computes Basic Salary, Allowances, and Net Pay.
- Professional PDF Export: Download sleek, A5 Landscape PDFs optimized for printing and digital receipts.
- Device Tracking: Assign assets (Laptops, Licenses, Keycards) to specific employees.
- History: Track who has what item and its current status.
- Backend: Laravel 12+ (PHP 8.2)
- Frontend: Vue.js 3 (Composition API)
- Routing: Inertia.js (Server-driven SPA)
- Styling: TailwindCSS
- Database: MySQL / SQLite
- Maps: Leaflet.js (OpenStreetMap)
- PDF: DomPDF
-
Clone the repository
git clone https://github.com/mabdusshakur/StaffPortal.git cd staff-portal -
Install Dependencies
composer install npm install
-
Environment Setup
cp .env.example .env php artisan key:generate
-
Database Setup Configure your database credentials in the
.envfile, then run:php artisan migrate:fresh --seed
This generates realistic dummy data including users, attendance history, coordinates, and payslips.
-
Run the Application
# Terminal 1 php artisan serve # Terminal 2 npm run dev #or composer run dev
-
Login Credentials
Role Email Password Admin admin@staffportal.compasswordEmployee employee@staffportal.compasswordHR hr@staffportal.compassword
Note: This project was built as a rapid prototype to demonstrate full-stack capabilities with Geolocated features.







