laravel-ticket maintained by coprotoai
A simple helpdesk ticketing system for Laravel 5.1+ (5.1 – 5.8 and 6.* - 7.* - 8.* - 9.* - 10.* - 11.* - 12.* - 13.*) which integrates smoothly with Laravel default users and auth system. It will integrate into your current Laravel project within minutes, and you can offer your customers and your team a nice and simple support ticket system.
Fork Notice
This is a fork of binshops/laravel-ticket, maintained here to add and validate support for newer Laravel major versions as they're needed. Published under the package name coprotoai/laravel-ticket.
Each Laravel major version this fork has been validated against gets its own branch, cut at the point that version was confirmed working — these are frozen snapshots, not branches under ongoing parallel maintenance. If you're on an older Laravel version, check out the branch matching it rather than main/master.
| Laravel version | Branch |
|---|---|
| 10, 11 | laravel-11 |
| 12 | laravel-12 |
| 13 | laravel-13 |
Note: as of the laravel-12 branch, this fork no longer depends on jenssegers/date (abandoned since 2020, incompatible with Laravel 12's mandatory Carbon 3). Localized/translated ticket timestamps are now provided by a small internal class built directly on Carbon's own native translation support — no functionality was lost, and no third-party dependency risk was traded in for another.
Features:
- Three main users roles users, agents, and admins
- Users can create tickets, keep track of their tickets status, giving comments, and close their own tickets (access permissions are configurable)
- Auto assigning agents to tickets, the system searches for agents in specific department and auto select the agent with lowest queue
- Simple admin panel
- Localization (Arabic, Brazilian Portuguese, Deutsch (German), English, Farsi, French, Hungarian, Italian, Persian, Russian, and Spanish language packs are included)
- Very simple installation and integration process
- Admin dashboard with statistics and performance tracking graphs
- Simple text editor for tickets descriptions and comments allows images upload
Quick Installation:
Requirements
First Make sure you have got this Laravel setup working:
- Laravel
- Users table
- Laravel email configuration
- Bootstrap 3, or Bootstrap 4
- Jquery
Dependencies that are getting installed and configured automatically by LaravelTicket (no action required from you)
Installation steps (<5 minutes)
Step 1. Run this code via your terminal
composer require 'binshops/laravel-ticket'
Step 2. After installing the package, you have to add this line on your config/app.php in Service Providers section.
Binshops\LaravelTicket\LaravelTicketServiceProvider::class
Step 3. Check if App\Models exists
Step 4. Make sure you have authentication set up. In 5.2+, you can use php artisan make:auth
Step 5. Setting up your master view for LaravelTicket integration
Step 6. Register at least one user into the system and log it in.
Step 7. Go ahead to http://your-project-url/tickets-install to finalize the installation.
Default laravel-ticket front route: http://your-project-url/tickets
Default laravel-ticket admin route: http://your-project-url/tickets-admin
Notes:
Make sure you have created at least one status, one priority, and one category before you start creating tickets.
If you move your installation folder to another path (or server), you need to update the row with slug='routes' in table laravelticketsettings. After that, don't forget to flush the entire cache.
Documentation
Integrating Laravel Ticket views with your project template
Configuring the master view
Laravel Ticket views system is developed to integrate with the current project master view (Laravel Ticket uses Bootstrap framework). The master view file is the main view file that is using "yield" to call header, content, footer sections. It should be located at resources/views (ex. resources/views/layouts/master.blade.php), open it and make sure it yields for page, content, and footer.
@yield('page') Page section for passing the current page title
<head> ...
<title>My website - @yield('page')</title>
</head>
@yield('content') Content section for the content
<body> ...
@yield('content')
...
</body>
@yield('footer') Footer section for passing the jquery scripts, so make sure it is called after you call the jquery
<body> ...
@yield('content')
...
<script src="/js/jquery.min.js"></script>
..
@yield('footer')
</body>
Here's a quick example of a layout file.