d3vnz / issuetracker
Filament-based issue reporter with optional centralised TicketMate integration (GitHub issues + branded confirmation emails handled remotely).
Requires
- php: ^8.3
- filament/filament: ^3.0 || ^4.0 || ^5.0
- graham-campbell/github: ^12.0 || ^13.0
- guzzlehttp/guzzle: ^7.0
- laravel/framework: ^11.0 || ^12.0 || ^13.0
Suggests
- ext-openai: Set OPENAI_API_KEY and ISSUETRACKER_AI_ENABLED=true to enable AI-assisted triage of new issues (duplicate detection + automatic request-for-more-info emails).
- dev-main
- v1.5.10
- v1.5.9
- v1.5.8
- v1.5.7
- v1.5.6
- v1.5.5
- v1.5.4
- v1.5.3
- v1.5.2
- v1.5.1
- v1.5.0
- v1.4.0
- v1.3.3.0
- v1.3.2.0
- v1.3.1.0
- v1.3.0.0
- v1.2.0.8
- v1.2.0.7
- v1.2.0.6
- v1.2.0.5
- v1.2.0.4
- v1.2.0.3
- v1.2.0.2
- v1.2.0.1
- v1.2.0.0
- v1.0.2.0
- v1.0.1.21
- v1.0.1.20
- v1.0.1.19
- v1.0.1.18
- v1.0.1.17
- v1.0.1.16
- v1.0.1.15
- v1.0.1.14
- v1.0.1.13
- v1.0.1.12
- v1.0.1.11
- v1.0.1.10
- v1.0.1.9
- v1.0.1.8
- v1.0.1.7
- v1.0.1.6
- v1.0.1.5
- v1.0.1.4
- v1.0.1.3
- v1.0.1.2
- v1.0.1.1
- v1.0.0.30
- 1.0.0.29
- 1.0.0.28
- 1.0.0.27
- 1.0.0.26
- 1.0.0.25
- 1.0.0.24
- 1.0.0.23
- 1.0.0.22
- 1.0.0.21
- 1.0.0.20
- 1.0.0.19
- 1.0.0.18
- 1.0.0.17
- 1.0.0.16
- 1.0.0.15
- 1.0.0.14
- v1.0.0.13
- v1.0.0.12
- v1.0.0.11
- v1.0.0.10
- v1.0.0.9
- v1.0.0.8
- v1.0.0.7
- v1.0.0.6
- v1.0.0.5
- v1.0.0.4
- v1.0.0.3
- v1.0.0.2
- v1.0.0.1
- v1.0.0.0
This package is auto-updated.
Last update: 2026-04-19 11:20:23 UTC
README
Filament-based issue tracker that creates GitHub issues from your app, mirrors them locally, and can optionally surface enriched data from a central TicketMate instance.
Requirements
- PHP 8.3+
- Laravel 11 / 12 / 13
- Filament 3 / 4 / 5
- (Optional) TicketMate instance at
https://helpdesk.d3v.nz
Installation
composer require d3vnz/issuetracker
php artisan vendor:publish --tag=d3vnz-issuetracker-migrations
php artisan migrate
php artisan vendor:publish --provider="GrahamCampbell\GitHub\GitHubServiceProvider"
.env
GITHUB_TOKEN=ghp_yourPersonalAccessToken GITHUB_OWNER=d3vnz GITHUB_REPO=mostech-v2
In config/services.php add:
'github' => [ 'token' => env('GITHUB_TOKEN'), 'owner' => env('GITHUB_OWNER'), 'repo' => env('GITHUB_REPO'), ],
Console schedule
Schedule::command('github:sync-issues')->everyThirtyMinutes();
TicketMate integration (recommended)
Instead of standalone polling + per-app email plumbing, point the package at a central TicketMate. TicketMate watches the GitHub repo via webhook, runs AI triage, captures URL screenshots, surfaces issues alongside support tickets and uptime alerts in one inbox.
One-time setup in TicketMate
- Open
https://helpdesk.d3v.nz/admin/repositoriesand create a record for the repo (e.g.d3vnz/mostech-v2). Set the brand and link a client/domain. - Copy the Webhook URL and Webhook secret, add them to GitHub → Settings → Webhooks (events: Issues + Issue comments, content-type
application/json). - Copy the API token shown on the same page.
.env additions for the consuming app
TICKETMATE_API_URL=https://helpdesk.d3v.nz TICKETMATE_API_TOKEN=the-token-from-the-repo-page TICKETMATE_USE_REMOTE_LISTINGS=true
When these are set, the package runs in fully centralised mode:
- The consuming app does NOT need a
GITHUB_TOKEN— TicketMate creates the GitHub issue with its own token and returns the result. - The package writes no issue data to your local database. Issues live in TicketMate (and GitHub). Locally they're cached for 10 minutes in your default
Cachestore (Redis if configured). - The Filament
IssueResourcetable is rendered from that cache — first hit refreshes, subsequent hits within 10 minutes serve the snapshot. - The package sends no emails. TicketMate handles the branded confirmation to the issue creator (and any subsequent status / comment notifications).
- Optional cron safety net (the lazy refresh on-render is usually sufficient):
// console.php Schedule::command('ticketmate:sync --quiet-on-empty')->everyTenMinutes();
Migrations from earlier versions (issues + issue_comments tables) are no longer needed when TicketMate is enabled. You can drop them safely:
php artisan tinker >>> Schema::dropIfExists('issue_comments'); >>> Schema::dropIfExists('issues');
When TICKETMATE_* env vars are NOT set, the package keeps its original behaviour (GitHub poll + local DB + local emails).
Configuration reference
See config/issuetracker.php for full options.