A Laravel package for submitting tasks to the SHIFT Dashboard from within your application. It provides a Vue-based UI component plus API endpoints to send issue reports or feature requests directly to your SHIFT project.
composer require wyxos/shift-php
php artisan install:shiftBy default, install:shift now uses the SHIFT browser/device verification flow:
- Validates
APP_ENVandAPP_URL - Creates a SHIFT install session
- Prints the verification URL and short code for browser approval
- Polls until the session is approved or expires
- Loads the projects you can install into and lets you choose one, or create a new standalone SHIFT project if none exist yet
- Finalizes the install and writes
SHIFT_TOKEN/SHIFT_PROJECT - Registers the current app environment for external collaborator lookup
- Scaffolds
App\Services\ShiftCollaboratorResolverwhen it does not exist - Publishes frontend and config files
If SHIFT_TOKEN and SHIFT_PROJECT are already configured, the installer keeps using those values and skips browser verification.
If you need the old raw-token path, run:
php artisan install:shift --manualAdd your SHIFT credentials to .env:
SHIFT_TOKEN=your-api-token
SHIFT_PROJECT=your-project-token
SHIFT_URL=https://shift.wyxos.com
SHIFT_COLLABORATORS_RESOLVER=App\Services\ShiftCollaboratorResolverOptional: publish config to customize routes and middleware.
php artisan vendor:publish --tag=shiftconfig/shift.php example:
return [
'token' => env('SHIFT_TOKEN'),
'project' => env('SHIFT_PROJECT'),
'url' => env('SHIFT_URL', 'https://shift.wyxos.com'),
'routes' => [
'prefix' => 'shift',
'middleware' => ['web', 'auth'],
],
];After installing, the task submission UI is available at:
/shift
This route uses the default web and auth middleware unless you customize it.
All endpoints are prefixed by default with /shift/api and require authentication:
GET /shift/api/tasks- List tasksPOST /shift/api/tasks- Create a new taskGET /shift/api/tasks/{id}- View a taskPUT /shift/api/tasks/{id}- Update a task
You can interact with them using Laravel's Http facade:
$response = Http::post('/shift/api/tasks', [
'title' => 'Bug in report form',
'description' => 'Submit button does not work on mobile.',
]);When tasks are submitted, the package automatically includes:
- The authenticated user's name, email, and ID
- The current environment and application URL
install:shift registers the current consumer environment with SHIFT, and the package exposes:
GET /shift/api/collaborators/external
SHIFT calls this endpoint using the project token to retrieve eligible external users for the selected project environment.
The generated resolver is intentionally permissive only for APP_ENV=local. For every other environment it returns no users until you replace the TODO stub with your app-specific rules.
Run a test submission with:
php artisan shift:testThis creates a dummy task to verify setup.
install:shift- Interactive installationinstall:shift --manual- Manual raw token and project entryshift:test- Submit a test taskshift:publish- Manually publish package assets
MIT Wyxos. See LICENSE.md for details.