Report issues from inside a Laravel app
SHIFT is an open-source Laravel portal for teams who want users to report bugs and requests from the app page where they happen.
The current focus is practical: wyxos/shift-php adds the task tools to a Laravel app, sends the page URL, route, signed-in user, environment, and selected request details to the portal, and lets a developer reply in the task thread without piecing the report together from email, screenshots, and logs.
The portal still has the normal structure needed to manage the work (organisations, clients, projects, tasks, attachments, and threads), but the public starting point is issue reporting inside Laravel, not a general project-management pitch.
- In-app issue reports: Report issues from a Laravel page through
wyxos/shift-php. - Page and request details: Send environment, app URL, route, signed-in user, and selected request fields with the report.
- Laravel error reports: Attach cleaned exception details to tasks.
- Task threads: Keep developer follow-up beside the original app report.
- Portal structure: Organize work by organisations, clients, projects, tasks, attachments, and collaborators.
- Modern Laravel stack: Laravel 12, Vue 3, TypeScript, Inertia, Tailwind CSS.
- PHP 8.3+
- Node.js 22+
- Composer
- MySQL/PostgreSQL
# Clone the repository
git clone https://github.com/wyxos/shift.git
cd shift
# Install dependencies
composer install
npm ci
# Setup environment
cp .env.example .env
php artisan key:generate
# Configure your database in .env then create the local development fixtures:
php artisan migrate --seed
# Build assets
npm run build
# Start the development server
composer devVisit http://localhost:8000 and log in with the seeded development account.
Set APP_ENV=production, disable debug mode, and choose a registration policy before exposing the application:
APP_ENV=production
APP_DEBUG=false
REGISTRATION_MODE=invite_onlyREGISTRATION_MODE accepts open, invite_only, or closed. Invite-only installations accept registrations only through signed links for pending project or organisation invitations. Closed installations disable all registration, including invitation links.
Install dependencies, build the frontend, and migrate without development seed data:
composer install --no-dev --optimize-autoloader
npm ci
npm run build
php artisan migrate --forceOn a new database, create the first user once from an interactive shell:
php artisan shift:bootstrap-userThe command accepts the password only through a hidden prompt, marks the initial user as verified, and refuses to run after any user exists. Do not pass passwords through command arguments, environment variables, deployment logs, or seeders. After the first user signs in, they can create an organisation and invite the rest of the team.
The portal exposes a browser install flow for Laravel apps using the SDK.
POST /api/sdk/install/sessionscreates an install session and returns the device/user codes plus verification URLs./sdk/installlets a signed-in user enter or prefill a code, log in if needed, and approve the install session.POST /api/sdk/install/sessions/poll,/projects,/projects/create, and/finalizelet the CLI wait for approval, list manageable projects, create a new project when needed, and finish credential setup.- The final step reuses an existing project token when possible, otherwise creates one, then issues a user API token once and registers the selected environment URL.
- Report Issues - Bug reports and feature requests
- Website - More information about Wyxos
Licensed under the MIT License.