This is a ticketing/helpdesk system built with Laravel.
It is designed for IT, user, and vendor collaboration, with role-based access and management for tickets, users, departments, vendors, categories, and ticket statuses.
- Ticket creation, assignment, and status tracking
- Role-based access for Admin, IT, User, and Vendor
- Management modules for Users, Departments, Vendors, Categories, and Ticket Statuses
- Modern UI using Tailwind CSS (via Laravel Breeze)
- MIT Open Source License
These features are not yet developed
- Kanban view
-
Clone the repository:
git clone git@github.com:kidino/ith.git cd ith -
Install dependencies:
composer install npm install
-
Copy and configure your environment:
cp .env.example .env
Edit
.envand set your database and mail settings. -
Generate application key:
php artisan key:generate
-
Run migrations and seeders:
php artisan migrate php artisan db:seed
-
β οΈ IMPORTANT - Change Default Admin Credentials:A default admin user is created during migration with these credentials:
- Email:
admin@admin.com - Password:
Admin123
π SECURITY WARNING: You MUST change these default credentials before deploying to production!
Option A: Update the existing admin user
# Access your application at http://localhost:8000 # Login with admin@admin.com / Admin123 # Go to Profile and update email/password
Option B: Create a new admin user and delete the default
# Use the application to create a new admin user, then delete the default one - Email:
-
Build frontend assets:
npm run build
-
Start the development server:
php artisan serve
-
Access the application: Open http://localhost:8000 in your browser.
First Login:
- Email:
admin@admin.com - Password:
Admin123
β οΈ Remember to change these credentials immediately after first login! - Email:
The system includes automated ticket status updates and scheduled tasks for improved workflow efficiency.
- Automatic Status Updates: Tickets automatically change status based on user actions
- Smart Notifications: Email and in-app notifications for relevant users
- Auto-Closure: Resolved tickets automatically close after 7 days of inactivity
To enable automatic ticket closure and other scheduled tasks, you need to set up Laravel's task scheduling.
Add this cron entry to your server's crontab:
# Edit crontab
crontab -e
# Add this line (replace /path/to/your/project with actual path)
* * * * * cd /path/to/your/project && php artisan schedule:run >> /dev/null 2>&1Option A: Using Laravel's built-in scheduler (Recommended for development)
# Run this command in your project directory
php artisan schedule:workOption B: Windows Task Scheduler
- Open Task Scheduler (
taskschd.msc) - Create Basic Task
- Name: "Laravel ITH Scheduler"
- Trigger: Daily at startup
- Action: Start a program
- Program:
php.exe - Arguments:
artisan schedule:run - Start in:
C:\path\to\your\ith\project
Option C: Manual execution (for testing)
# Test the auto-close command manually
php artisan tickets:auto-close-resolved
# Or run all scheduled tasks once
php artisan schedule:runAdd this to your Docker container or use a separate cron container:
# Add to your Dockerfile or create a separate cron service
RUN echo "* * * * * cd /var/www && php artisan schedule:run >> /dev/null 2>&1" >> /etc/crontabThe system automatically updates ticket status based on these rules:
| User Action | From Status | To Status | Condition |
|---|---|---|---|
| IT/Admin comments | new |
in_progress |
First response |
| Vendor assigned | Any (not resolved/closed) | pending_vendor |
Vendor user assigned |
| Vendor comments | pending_vendor |
in_progress |
Vendor provides update |
| User comments | pending_user |
in_progress |
User provides info |
| Admin resolves | Any | resolved |
Only admins can resolve |
| Auto-closure | resolved |
closed |
After 7 days no activity |
To verify scheduling is working:
# Check if commands are registered
php artisan schedule:list
# Test the auto-close command
php artisan tickets:auto-close-resolved
# Check Laravel logs for automation activity
tail -f storage/logs/laravel.logThe system creates a default administrator account during installation:
- Email:
admin@admin.com - Password:
Admin123
- Change default credentials immediately after installation
- Use strong passwords for all user accounts
- Enable email verification in production environments
- Review user permissions regularly
- Monitor system logs for suspicious activity
- Change default admin email and password
- Configure proper mail settings in
.env - Set up HTTPS/SSL certificates
- Configure cron jobs for Laravel scheduling
- Set up proper backup procedures
- Review and update
.envsecurity settings
- This project is mostly developed using GitHub Copilot to demonstrate AI-assisted software development and for learning purposes.
- The codebase is intended for educational use and as a reference for building Laravel-based systems.
This project is open-sourced under the MIT license.