@if (is_file(public_path('build/manifest.json'))) @vite(['resources/css/app.css']) @endif

Secure setup

{{ $locked ?? false ? 'Application is already installed.' : (($completed ?? false) ? 'Installation completed successfully.' : 'Welcome to '.config('app.name', 'Repair Shop')) }}

@if ($locked ?? false) The installer is permanently locked to protect this production application. @elseif ($completed ?? false) Database tables, configuration, and the administrator account have been verified. The installer is now permanently locked. @else This guided wizard safely configures a new MySQL installation. It never creates or deletes databases. @endif

@if (! ($locked ?? false) && ! ($completed ?? false)) @endif
@if ($errors->any()) @endif @if ($locked ?? false) Go to login @elseif ($completed ?? false)
@foreach ($progress ?? [] as $item)
✓{{ $item['label'] }}
{{ $item['detail'] }}
@endforeach
Go to login @elseif ($step === 1)

Start installation

For ownership verification, open storage/app/installation/setup-code in cPanel File Manager and enter its value below. This code is never displayed by the website.

@csrf
@elseif ($step === 2)

Server requirements

Every critical requirement must pass before installation can continue.

@foreach ($requirements as $requirement)
{{ $requirement['passed'] ? '✓' : '✗' }} {{ $requirement['label'] }}
{{ $requirement['detail'] }}
@endforeach
@csrf
@elseif ($step === 3)

Database configuration

Use a pre-created, empty MySQL database. The installer checks it and will refuse databases containing tables.

@if ($databaseStatus)
{{ $databaseStatus['ok'] ? '✓' : '✗' }} {{ $databaseStatus['message'] }}
@endif
@csrf
@elseif ($step === 4)

Application configuration

@csrf
@elseif ($step === 5)

Administrator account

Use at least 12 characters with uppercase, lowercase, number, and symbol. Your password is hashed immediately.

@csrf
@elseif ($step >= 6)

Install and verify

The installer will run Laravel migrations through Artisan, seed required data, create the administrator, verify the result, then permanently lock itself. Do not close this page while it is running.

@if (!empty($progress))
@foreach ($progress as $item)
{{ $item['passed'] ? '✓' : '✗' }}{{ $item['label'] }}
{{ $item['detail'] }}
@endforeach
@endif
@csrf
@endif