A full-featured web-based helpdesk ticketing system built with PHP, MySQL, and Bootstrap. Supports role-based access for Admin, Technician, and Employee users with real-time notifications, performance tracking, and customizable themes.
In many organizations, IT support requests are handled through informal channels such as email, phone calls, or walk-in requests. This approach leads to several critical issues:
- Lost Requests - Without a centralized system, support requests can be lost, forgotten, or overlooked, leading to unresolved issues and employee frustration
- Lack of Accountability - No clear ownership of tickets makes it difficult to track who is responsible for resolving each issue
- No Priority Management - Urgent issues may not be prioritized appropriately, causing delays in critical system repairs
- Poor Visibility - Management lacks insight into IT support performance, workload distribution, and common issue patterns
- Inconsistent Service - Without standardized workflows, the quality and speed of support vary greatly between technicians
- No Historical Data - Organizations cannot analyze past issues to identify recurring problems or make informed decisions about IT investments
This IT Helpdesk Ticketing System addresses these challenges by providing:
- Centralized Request Management - All support requests are captured in one place with automatic ticket numbering and categorization
- Clear Ownership and Accountability - Tickets are assigned to specific technicians with full audit trails of all actions
- Priority-Based Workflow - Critical issues are flagged and prioritized to ensure timely resolution
- Real-Time Visibility - Dashboards provide instant insights into ticket status, technician performance, and system health
- Standardized Processes - Consistent workflows ensure every request receives the same level of attention and care
- Data-Driven Decisions - Historical reports help identify trends, recurring issues, and opportunities for process improvement
- Improved User Satisfaction - Employees can track their requests and receive timely updates, improving overall satisfaction with IT support
- Reduction in average ticket resolution time
- Improved first-response time
- Better resource allocation based on workload data
- Enhanced communication between IT staff and end users
- Increased accountability and transparency in IT operations
- Data-backed decisions for IT infrastructure investments
- Admin - Full system access: manage users, departments, categories, view reports, and all tickets
- Technician - View and update assigned tickets, add comments, change ticket status
- Employee - Create tickets, view own tickets, reopen resolved tickets
- Create, view, update, and close support tickets
- Ticket number auto-generation (TKT-YYYYMMDD-XXXX)
- Priority levels: Low, Medium, High, Critical
- Status workflow: Created > Assigned > In Progress > Resolved > Closed
- File attachments with extension validation (JPG, PNG, GIF, PDF, DOC, DOCX, TXT, ZIP)
- Comment system with role badges and timestamps
- Ticket reassignment between technicians
- Admin Dashboard - Total tickets, open/pending/resolved/closed counts, monthly trend chart, status distribution with percentages, technician performance metrics, recent tickets
- Technician Dashboard - Assigned tickets overview, priority/status pie charts, recent tickets
- User Dashboard - Personal ticket stats, status doughnut chart, quick actions
- Real-time notification bell with unread count badge
- Auto-polling every 30 seconds for new notifications
- Mark all as read / individual mark as read
- Notifications for: assignment, status changes, comments, resolves
- Upload and manage profile photo (JPG, PNG, GIF, max 2MB)
- Photo displayed in navbar avatar and users table
- Fallback to initials when no photo is set
- Edit personal information (name, email, phone)
- Change password with current password verification
- 10 preset theme colors + custom color picker
- Light and Dark mode
- Compact mode option
- Per-user theme persistence via database
- Real-time preview in settings page
- User Management - Create, edit, activate/deactivate, delete users with profile photos
- Department Management - CRUD operations for departments
- Category Management - CRUD operations for ticket categories
- Reports & Analytics - Date range filters, status/priority/category/department breakdowns, Chart.js visualizations, printable reports
- CSRF protection on all forms
- Prepared statements for all SQL queries (PDO)
- Password hashing with
password_hash()(bcrypt) - Session-based authentication with 30-minute timeout
- Role-based access control middleware
- File upload extension whitelist validation
| Layer | Technology |
|---|---|
| Backend | PHP 8.1 (Native, no framework) |
| Database | MySQL 8.0 |
| Frontend | HTML5, CSS3, JavaScript |
| CSS Framework | Bootstrap 5.3.0 (CDN) |
| Charts | Chart.js (CDN) |
| Font | Inter (Google Fonts) |
| Icons | Inline SVG |
| Server | Laragon (Apache + MySQL) |
helpdesk_system/
├── admin/ # Admin role pages
│ ├── dashboard.php # Admin dashboard with analytics
│ ├── tickets.php # View and manage all tickets
│ ├── view_ticket.php # Ticket detail view
│ ├── users.php # User management (CRUD)
│ ├── departments.php # Department management (CRUD)
│ ├── categories.php # Category management (CRUD)
│ ├── announcements.php # Manage announcements
│ ├── create_announcement.php # Create new announcement
│ ├── edit_announcement.php # Edit announcement
│ └── reports.php # Reports and analytics
├── technician/ # Technician role pages
│ ├── dashboard.php # Technician dashboard
│ ├── tickets.php # Assigned tickets list
│ ├── view_ticket.php # Ticket detail view
│ └── update_ticket.php # Update ticket status
├── user/ # Employee role pages
│ ├── dashboard.php # Employee dashboard
│ ├── tickets.php # My tickets list
│ ├── view_ticket.php # Ticket detail view
│ ├── create_ticket.php # Create new ticket
│ └── reopen_ticket.php # Reopen resolved ticket
├── auth/ # Authentication pages
│ ├── login.php # Login page
│ ├── logout.php # Logout handler
│ ├── forgot_password.php # Password reset request
│ └── reset_password.php # Password reset form
├── pages/ # General user-facing pages
│ ├── index.php # Landing/redirect page
│ ├── announcements.php # View announcements
│ ├── notifications.php # Full notifications list
│ ├── profile.php # User profile with photo upload
│ ├── settings.php # Theme and notification preferences
│ └── seed_dummy_data.php # Database seeder
├── api/ # AJAX endpoints
│ ├── get_notification_count.php # Get unread notification count
│ └── mark_notifications_read.php # Mark notifications as read
├── docs/ # Documentation pages
│ ├── active_directory.php # Active Directory documentation
│ ├── network_topology.php # Network topology documentation
│ ├── remote_desktop.php # Remote desktop documentation
│ └── server_room.php # Server room documentation
├── config/
│ └── database.php # DB config, helper functions, CSRF, session
├── database/
│ └── database.sql # Database schema and seed data
├── includes/
│ ├── header.php # HTML head, theme CSS variables, meta tags
│ ├── navbar.php # Role-based navigation, notifications, avatar
│ ├── footer.php # Footer, modals, flash messages
│ └── auth.php # Authentication middleware, role checks
├── assets/
│ ├── css/
│ │ ├── bootstrap.min.css # Bootstrap CSS
│ │ └── style.css # Custom styles
│ └── js/
│ ├── bootstrap.bundle.min.js # Bootstrap JS
│ ├── chart.js # Chart.js library
│ └── main.js # Custom JavaScript
├── uploads/
│ └── profile/ # User profile photos
└── index.php # Entry point/router
| Table | Description |
|---|---|
roles |
Admin, Technician, Employee |
departments |
IT, HR, Finance, Administration, Operations |
ticket_categories |
Network, Hardware, Printer, Software, Account, Email, Internet, Others |
users |
User accounts with profile_photo column |
tickets |
Support tickets with status, priority, assignment |
ticket_comments |
Comment threads on tickets |
ticket_attachments |
File attachments for tickets |
notifications |
User notifications for assignments and updates |
activity_logs |
Audit trail for user actions |
user_settings |
Per-user theme preferences |
| Role | Username | Password |
|---|---|---|
| Admin | admin | admin123 |
| Technician | tech_carlos | password123 |
| Technician | tech_maria | password123 |
| Technician | tech_james | password123 |
| Technician | tech_anita | password123 |
| Employee | juan_d | password123 |
| Employee | anna_m | password123 |
| Employee | robert_c | password123 |
| Employee | rachel_b | password123 |
| Employee | kevin_t | password123 |
- Place project in
C:\laragon\www\helpdesk\helpdesk_system\ - Ensure Laragon Apache and MySQL are running
- Import
database/database.sqlor runpages/seed_dummy_data.phpto populate tables - Access at
http://localhost/helpdesk/helpdesk_system/
Aldrian C. Loberiano - Devloped as a comprehensive IT helpdesk ticketing system with advanced features and security best practices.