A full-featured Field Service Management (FSM) platform built with PHP & MySQL. Manage Service Requests, Job Cards, Work Orders, AMC Contracts, Technician Tracking, Inventory, Billing, CRM, and Reports — all in one place.
What's included in this system
Pakhi FieldForce is a comprehensive Field Service Management platform built with PHP & MySQL. It covers the entire field service lifecycle — from customer lead capture to job completion, from technician dispatch to billing and payment collection. The system is purpose-built for businesses like AC Service, RO Water Purifier, CCTV, Solar, Electrical, Plumbing, Pest Control, HVAC, and all field service industries that manage on-site technicians.
Capture, assign, and track every customer service request with SLA timers.
Detailed job execution with parts usage, photos, signature, and status flow.
Planned maintenance and project-based work order management.
Annual Maintenance Contracts with expiry alerts and contract scheduling.
Manage field engineers with skills, availability, live GPS, and attendance.
Real-time technician location map with job status overlays.
Products, stock levels, warehouses, and inter-warehouse transfers.
Quotations, GST invoices, payment collection, and expense tracking.
Lead pipeline, customer 360° profile, assets, and follow-up tracking.
Minimum server configuration needed to run this system
| Component | Minimum | Recommended |
|---|---|---|
| PHP | 7.4+ | 8.1 or 8.2 |
| MySQL | 5.7+ | 8.0+ / MariaDB 10.6+ |
| Web Server | Apache / Nginx | Apache with mod_rewrite enabled |
| PHP Extensions | PDO, PDO_MySQL, mbstring | + GD, fileinfo, openssl, zip, curl |
| Local Server | XAMPP / WAMP | Laragon or WAMP 3.x |
| RAM | 512 MB | 2 GB or more |
| Disk Space | 100 MB + uploads | 1 GB+ recommended |
| Browser | Chrome 90+ / Firefox 90+ | Latest Chrome or Edge |
| JavaScript Libraries | Chart.js, DataTables, Select2 | Loaded via CDN (no install needed) |
GD extension is recommended for image processing in uploads. The curl extension is needed if you integrate GPS or external APIs. All JS libraries (Chart.js 4.4, DataTables 1.13, Select2 4.1, SweetAlert2 11, Flatpickr) are loaded from CDN — no npm or build step required.Step-by-step setup guide — takes less than 5 minutes
pakhi-fieldForce/ folder to your web server root.C:/wamp64/www/pakhi-fieldForce/ | XAMPP: htdocs/pakhi-fieldForce/
http://localhost/pakhi-fieldForce/admin/install.phppakhi_fieldforce database, imports all 40+ tables, and seeds default data (company, roles, admin user, service types).
admin/install.php immediately for security. The installer page itself will remind you.
admin/config/constants.php and update APP_URL to match your local or live server URL.
admin/assets/uploads/ is writable. On Linux/Mac: chmod 755 admin/assets/uploads/. On WAMP/XAMPP this is usually automatic.
http://localhost/pakhi-fieldForce/admin/login.phpadmin@pakhi.com / password
database/pakhi_fieldforce.sql. If the database already exists, re-running install.php will re-import it. Always delete install.php after first successful setup.Manual Database Import (Alternative)
Complete project directory layout
Use these to access the system after installation
http://localhost/pakhi-fieldForce/admin/login.phpadmin@pakhi.compassword/admin/index.php (Main Dashboard)admin@company.comadmin123service@company.comadmin123dispatcher@company.comadmin123inventory@company.comadmin123accounts@company.comadmin123hr@company.comadmin123http://localhost:8888/#/logintech@pakhi.compasswordTECH001Quick Reference — All Credentials
| Role | Password | Key Access | |
|---|---|---|---|
| Super Admin | admin@pakhi.com | password | Full system |
| Admin | admin@company.com | admin123 | All modules |
| Service Manager | service@company.com | admin123 | Service + Field |
| Dispatcher | dispatcher@company.com | admin123 | Assignment + Tracking |
| Inventory | inventory@company.com | admin123 | Stock management |
| Accountant | accounts@company.com | admin123 | Billing + Finance |
| HR Manager | hr@company.com | admin123 | Attendance + Teams |
| Technician 📱 Mobile | tech@pakhi.com | password | Flutter App (port 8888) |
password. All passwords are stored using PHP's password_hash() (bcrypt). Change all passwords before going live on a production server.Connection settings and table reference
Edit admin/config/database.php to set your database credentials:
Edit admin/config/constants.php for app-level settings:
db() function uses a singleton pattern — it creates the PDO connection once and reuses it across the entire page request. Call $pdo = db(); anywhere after including init.php.All Database Tables (40+)
How to brand and extend the system
Changing App Name & URL
Update config/constants.php — change APP_NAME and APP_URL. The name propagates automatically through all page titles, emails, and headers.
Changing Theme Colors
Adding a New Module Page
Adding to Sidebar Menu
Open admin/includes/sidebar.php and add a new <li> entry inside the appropriate section:
Configuring SLA Rules
Go to Settings → SLA Policies to configure response and resolution time rules by service type and priority. SLA timers are automatically applied to all new service requests.
statusBadge() and priorityBadge() helper functions in functions.php automatically map status/priority strings to Bootstrap badge colors. Add new statuses to the $map array to extend them.7 built-in roles with module-level permission control
| Role | Slug | Module Access |
|---|---|---|
| Super Admin | super_admin | Full system — all modules, all companies, all settings |
| Admin | admin | All modules within assigned company |
| Service Manager | service_manager | Service Requests, Work Orders, Job Cards, AMC, Warranty, Complaints, Technicians, Reports |
| Dispatcher | dispatcher | Job Assignment, Technician Availability, Calendar, Live Tracking |
| Inventory Manager | inventory_manager | Products, Stock, Warehouses, Stock Adjustments, Transfers |
| Accountant | accountant | Quotations, Invoices, Payments, Expenses, Financial Reports |
| HR Manager | hr_manager | Technician Profiles, Attendance, Teams |
role_permissions table (module + action columns) and loaded into $_SESSION['permissions'] on login. Use hasPermission('module', 'view') anywhere to check access. Admins can manage roles from Settings → Roles & Permissions using the visual permission matrix.Permission Matrix (Example)
Detailed breakdown of all 7 modules
CRM Module
Files: leads.php, lead-add.php, customers.php, customer-add.php, customer-profile.php, assets.php
Lead capture with pipeline tracking (New → Contacted → Qualified → Quotation → Won/Lost). Full customer profile with 9 tabs: Overview, Service History, Assets, Invoices, Quotations, AMC Contracts, Complaints, Notes, and Documents. Customer assets management with warranty and serial number tracking. Lead-to-customer conversion flow.
Service Module
Files: service-requests.php, sr-add.php, work-orders.php, wo-add.php, wo-detail.php, job-cards.php, job-add.php, job-detail.php, amc.php, amc-add.php, warranty.php, complaints.php
Service Requests: Customer-raised requests with SLA timer, priority levels (Low/Normal/High/Urgent/Emergency), auto-number generation (SR-XXXXX). Full lifecycle: New → Assigned → In Progress → On Hold → Completed/Cancelled.
Work Orders: Planned maintenance jobs with multi-item task lists and technician assignment.
Job Cards: Field execution record with parts consumed, photos uploaded, customer signature, and 12-stage status flow.
AMC Contracts: Annual Maintenance Contracts with visit scheduling, expiry alerts, and renewal tracking.
Warranty: Product warranty register with expiry tracking.
Complaints: Dedicated complaint module separate from service requests.
Field Operations Module
Files: technicians.php, technician-add.php, technician-profile.php, teams.php, assignment.php, calendar.php, attendance.php, live-tracking.php
Technicians: Full technician master with skills matrix, certifications, zone coverage, status (Available/On Job/On Leave/Offline), and photo.
Teams: Create and manage technician groups for large projects.
Smart Assignment: View all open jobs and available technicians side-by-side with drag-assign capability.
Calendar: Monthly technician schedule view showing all assigned jobs per day.
Attendance: Daily check-in/check-out records with summary reports.
Live Tracking: Real-time map showing all technician locations — GPS coordinates pushed from the mobile app.
Inventory Module
Files: products.php, stock.php, warehouses.php, stock-transfer.php
Product master with SKU, HSN code, purchase price, selling price, GST rate, and category. Real-time stock levels per warehouse with low-stock alert thresholds. Stock adjustment (add/reduce with reason). Multi-warehouse management. Inter-warehouse stock transfer with auto stock deduction and addition. Stock usage is auto-deducted when parts are recorded in Job Cards.
Billing Module
Files: quotations.php, invoices.php, invoice-add.php, invoice-view.php, payments.php, payment-add.php, expenses.php
Quotations with line items, GST calculation, and convert-to-invoice action. GST invoices with CGST/SGST/IGST breakdown, print-ready view, and PDF export. Payment recording with method tracking (Cash/UPI/Card/Cheque/Bank Transfer). Outstanding balance tracking per customer. Expense management with category, amount, receipt upload, and approval workflow (Submit → Approve/Reject).
Reports Module
Files: reports.php
All reports in one place with date range filters and export options. Service Report: by type, status, SLA compliance. Technician Performance: jobs completed, ratings, on-time %. Customer Activity: SR count, job count, revenue per customer. Finance Report: revenue trend, collection summary, payment methods. Management Dashboard: high-level KPIs. Inventory Report: low stock alert list, parts used per job. All reports support Excel/CSV download.
Settings Module
Files: company.php, branches.php, users.php, user-add.php, user-edit.php, roles.php, service-types.php, sla.php, profile.php, change-password.php
Company profile (name, logo, GSTIN, address, contact). Branch management for multi-location businesses. User management with role assignment. Visual roles & permissions matrix. Service Types configuration (AC, RO, CCTV, etc.). SLA policy setup (response time & resolution time by priority). Profile page and password change for logged-in users.
Technology stack and core capabilities
Automatic SLA timers on every service request. Visual breach alerts on dashboard and reports.
Real-time technician location map. Coordinates pushed from mobile app via REST endpoint.
Annual contract scheduling, visit history, expiry alerts, and renewal reminders.
Print-ready GST invoice view with CGST/SGST/IGST. PDF export support built in.
bcrypt password hashing, session timeout, CSRF protection, audit trail on every action.
Clean Bootstrap 5.3 responsive design with Inter font, Chart.js charts, and DataTables.
Revenue trend bar chart, jobs-by-status doughnut, technician availability progress bars.
Monthly calendar showing each technician's scheduled jobs day by day.
In-app notification center for new SRs, SLA breaches, AMC expiries, and job updates.
Technology Stack
| Layer | Technology | Notes |
|---|---|---|
| Backend | PHP 8.x (Native — no framework) | PDO, sessions, OOP helper functions |
| Database | MySQL 5.7+ / MariaDB | InnoDB, utf8mb4_unicode_ci, 40+ tables |
| Frontend | HTML5, CSS3, Bootstrap 5.3 | Fully responsive, mobile-friendly |
| Icons | Bootstrap Icons 1.11 | 1,800+ icons, CDN loaded |
| Fonts | Google Fonts — Inter | 300–800 weights |
| Charts | Chart.js 4.4 | Bar, doughnut, line charts on dashboard |
| Tables | DataTables 1.13 | Search, sort, pagination on all lists |
| Dropdowns | Select2 4.1 | Searchable selects for customers, technicians |
| Date Pickers | Flatpickr | Date & time pickers on forms |
| Alerts | SweetAlert2 11 | Confirm dialogs for delete & status changes |
| jQuery | 3.7.1 | AJAX calls, DOM helpers |
Visual overview of key screens in Pakhi FieldForce
Complete business overview — stats, charts, today's schedule, technician status & recent activity
| Time | Job # | Customer | Technician | Status |
|---|---|---|---|---|
| 09:00 AM | JOB-00042 | Ravi Kumar | Suresh K. | Completed |
| 11:30 AM | JOB-00043 | Metro Store | Arjun P. | In Progress |
| 02:00 PM | JOB-00044 | Priya Shah | Unassigned | New |
Full SR lifecycle with SLA timer, priority, assignment, and status tracking
| SR # | Customer | Type | Priority | SLA | Status |
|---|---|---|---|---|---|
| SR-00123 | Ravi Kumar | AC Repair | Urgent | ⚠ 1h left | Assigned |
| SR-00122 | City Mall | RO Service | High | ✓ 8h left | In Progress |
| SR-00121 | Priya Shah | CCTV Install | Normal | ✓ 2d left | Completed |
Manage field engineers, view availability, assign jobs, and track locations in real-time
| Name | Skills | Zone | Status | Current Job |
|---|---|---|---|---|
| Suresh Kumar | AC, RO | North | On Job | JOB-00043 |
| Arjun Patel | CCTV, Solar | South | Available | — |
| Mohan Reddy | Electrical | East | On Leave | — |
Full job execution record — parts, photos, customer signature, status updates, and billing
| Part / Product | SKU | Qty | Unit Price | Total |
|---|---|---|---|---|
| AC Filter 1 Ton | ACFL-001 | 1 | ₹350 | ₹350 |
| Copper Pipe 6mm | COP-006 | 2 | ₹480 | ₹960 |
| Refrigerant Gas R32 | GAS-R32 | 1 | ₹850 | ₹850 |
Annual Maintenance Contracts with visit tracking, expiry alerts, invoicing, and payment collection
| Contract # | Customer | Equipment | Expiry | Status |
|---|---|---|---|---|
| AMC-0041 | City Hospital | 8 ACs (2 Ton) | 28 days | Active |
| AMC-0040 | Raju Office | RO System x3 | 142 days | Active |
| AMC-0039 | Metro Mall | CCTV 32-ch | Expired | Expired |
Common issues and solutions
Database connection failed on first load
Check that MySQL is running in your WAMP/XAMPP tray. Open admin/config/database.php and verify the host, username, password, and database name. Ensure the database pakhi_fieldforce exists and the SQL file was imported. Also confirm that the PDO and PDO_MySQL PHP extensions are enabled in php.ini.
Login says "Invalid email or password"
Make sure the installer ran successfully and database/pakhi_fieldforce.sql was imported — it creates the default admin account. Default login: admin@pakhi.com / password. If the issue persists, run this SQL to reset the password:UPDATE users SET password = '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi' WHERE email = 'admin@pakhi.com'; (this sets password to password).
SQL file not found during installation
The installer looks for the SQL file at database/pakhi_fieldforce.sql (one level above the admin/ folder). Ensure the file exists at pakhi-fieldForce/database/pakhi_fieldforce.sql. If missing, import directly via phpMyAdmin instead.
stat() / function not found errors on dashboard
This happens when a PHP built-in function name collides with a custom helper. For example, calling stat() instead of dashStat() in index.php. Check all function calls in admin/index.php and make sure they use the correct function names defined in config/functions.php.
Uploaded files / images not saving
Ensure the admin/assets/uploads/ directory exists and is writable. On Linux: chmod 755 admin/assets/uploads/. On WAMP/XAMPP, right-click the folder → Properties → Security → allow write access. The max upload size is 5MB by default — increase in php.ini if needed: upload_max_filesize = 10M and post_max_size = 12M.
Charts not showing on dashboard
All JS libraries including Chart.js 4.4 are loaded via CDN from includes/footer.php. Ensure your server has internet access or host the libraries locally. Also check the browser console for JavaScript errors. Charts require <canvas id="revenueChart"> to be present in the page HTML.
Session times out too quickly
The default session timeout is 2 hours (7200 seconds). Change it in admin/config/constants.php: define('SESSION_TIMEOUT', 28800); for 8 hours. Users will be redirected to the login page with a ?timeout=1 parameter when the session expires.
How do I add a new service type (e.g. Solar Panels)?
Go to Settings → Service Types and click Add Service Type. Enter the name, description, and default SLA settings. The new type will appear automatically in Service Request and Job Card forms. No code change is needed.
How does Live GPS Tracking work?
The Live Tracking UI is pre-built and ready. GPS coordinates are stored in the technician_locations table and displayed on an interactive map. To enable live tracking, the technician's mobile app (Android/iOS) must POST latitude/longitude to the ajax/jobs.php endpoint with the technician's token. Contact our team for the mobile app integration guide.
How do I reset a user's password?
Admins can reset any user's password from Settings → Users → Edit User. Alternatively, update via SQL: generate the hash in PHP using echo password_hash('newpassword', PASSWORD_DEFAULT);, then run UPDATE users SET password = 'generated_hash' WHERE email = 'user@example.com'; in phpMyAdmin.
How do I add a new branch?
Go to Settings → Branches and click Add Branch. Enter the branch name, address, phone, and manager. Each user can be assigned to a specific branch. Reports and data can be filtered per branch across all modules.
Can I deploy this on a live hosting server?
Yes. Upload all files via FTP/cPanel File Manager, create a MySQL database on your hosting panel, import database/pakhi_fieldforce.sql, update admin/config/database.php with hosting DB credentials, and change APP_URL in constants.php to your live domain URL. Ensure mod_rewrite is enabled for Apache. Use HTTPS in production — update APP_URL to use https://.
Get help with installation, customization, and deployment
| Channel | Details |
|---|---|
| Phone / WhatsApp | +91 79058 34592 |
| WhatsApp Direct | Click to Chat on WhatsApp |
| support@pakhigst.com | |
| Website | www.pakhigst.com |
| Support Hours | Mon – Sat, 10 AM – 7 PM IST |
Industries This System Serves
Installation, servicing, gas charging, AMC contracts.
Filter change, servicing, annual contracts.
Installation, DVR config, maintenance.
Panel installation, inverter service, inspections.
Wiring, panel upgrades, breakdown calls.
Leak repair, pipeline work, sanitation.
Treatment scheduling, AMC, chemical tracking.
Washing machine, fridge, TV repair & service.
Router, network setup, IT AMC, support visits.
Our team is available to help you tailor Pakhi FieldForce to your exact business — new modules, mobile app integration, GPS tracking, custom reports, or live server deployment.