Skip to content

Strip the front end (headless server)#18

Merged
edgrosvenor merged 1 commit into
mainfrom
feat/headless
Jun 15, 2026
Merged

Strip the front end (headless server)#18
edgrosvenor merged 1 commit into
mainfrom
feat/headless

Conversation

@edgrosvenor

Copy link
Copy Markdown
Contributor

Strip the front end (headless server)

Matte is a headless background-removal API — it has no user interface, yet cloud-installed instances were serving the starter-kit login/registration/settings UI. That's needless attack surface. This removes it entirely, mirroring the headless treatment applied to Hone.

Removed

  • All Blade views (resources/views/* — welcome, dashboard, auth, settings, layouts, components, flux).
  • Livewire/Flux/Fortify auth + settings: app/Livewire/*, app/Actions/Fortify/*, app/Concerns/*, app/Providers/FortifyServiceProvider.php, config/fortify.php, routes/settings.php, and the InstallFluxPro command.
  • Auth data layer: app/Models/User, UserFactory, and the users / passkeys / two-factor migrations.
  • Composer packages: laravel/fortify, livewire/flux, livewire/livewire (+ transitive passkey/webauthn/2FA deps).
  • The auth/settings/dashboard tests.

Rewired (to hone's headless shape)

  • routes/web.php → a JSON health endpoint ({name: "Matte", status: "ok"}).
  • config/auth.php emptied; .env.example SESSION_DRIVER=array (no sessions table needed).
  • bootstrap/providers.php / bootstrap/app.php drop Fortify + the Flux Pro installer.
  • AppServiceProvider drops the password-policy block; DatabaseSeeder emptied.
  • New MatteSmokeTest: root route boots, /v1/remove is 401 without a token, and the matte:* commands register.

The API is untouchedmatte-server registers its own routes/commands and the built-for-cloud token auth is unchanged.

Gate

composer ready green — pint clean, phpstan 0 errors, pest 3/3, audit clean.

Note

Existing prod tables (users/sessions/passkeys) aren't dropped by removing the migrations; they're simply orphaned and harmless. Recommend setting SESSION_DRIVER=array on the deployed env so it no longer depends on the orphaned sessions table.

Matte is a headless background-removal API with no user interface, so the
starter-kit web front end is unnecessary attack surface. Mirror the headless
treatment applied to Hone: remove all Blade views, the Livewire/Flux/Fortify
auth + settings UI, the User model + users/passkeys/two-factor migrations and
factory, config/fortify.php, and the front-end composer packages
(laravel/fortify, livewire/flux, livewire/livewire + transitive auth deps).

web.php is now a JSON health endpoint; config/auth.php is emptied; sessions
default to the array driver; bootstrap providers/commands drop Fortify and the
Flux Pro installer. The API (matte-server) and its routes are unaffected.
Adds a smoke test covering the root route, unauthenticated /v1/remove, and the
registered matte:* commands.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@edgrosvenor edgrosvenor merged commit 4aa2f1a into main Jun 15, 2026
2 checks passed
@edgrosvenor edgrosvenor deleted the feat/headless branch June 15, 2026 17:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant