Spreadsheet-driven operations replaced by a Filament admin panel

Staff were exporting data to spreadsheets to make routine changes, and non-technical edits were being applied by a developer running SQL against production.

Engagement

Role: Filament panel build, founder-led.

Shape: Resource-by-resource delivery against the existing Eloquent models.

Duration: 2–3 weeks.

Stack: Laravel 11 · Filament 3 · Livewire 3 · Alpine.js · PostgreSQL · Tailwind CSS · Pest.

What was wrong

  • Routine record changes were exported to spreadsheets and re-imported, so the database was rarely the source of truth.
  • Non-technical edits required a developer to run SQL against production.
  • There was no record of who changed what, so mistakes could not be traced.
  • Every team could see every record because access control lived in the UI rather than in policies.

What was built

  1. Filament resources built against the real Eloquent models rather than a parallel data layer.
  2. Role-gated actions and policies so each team only sees and edits its own records.
  3. Server-side filters, bulk actions and CSV export to replace the spreadsheet round trip.
  4. An audit trail on the destructive actions so changes can be traced to a user.

Architecture after the work

Resources on the real models — Filament resources built directly against the existing Eloquent models and relationships, so there is no parallel data layer to keep in sync.

Policy-backed access — Roles and Laravel policies gate both the panel navigation and each individual action, enforced server-side.

Server-side data work — Filters, sorting, bulk actions and CSV export run as database queries instead of loading collections into PHP.

Audit trail — Destructive and financial actions record actor, timestamp and changed attributes so a change can be traced back to a person.

Trade-offs and what was left out

  • The customer-facing front end was untouched; the panel was scoped to internal operations only.
  • Reporting dashboards were kept deliberately small — the agreed scope was replacing manual edits, not building analytics.

Outcome

Day-to-day record changes are made by the operations team in the panel, and production SQL is no longer part of a routine workflow.

Frequently asked questions

Is Filament suitable for a production admin panel?
Yes, when the panel is for staff rather than customers. Filament sits on Livewire and your existing Eloquent models, so an internal tool that would take weeks as a bespoke SPA is delivered in days, and access control is enforced by Laravel policies on the server rather than by hidden UI.
Can Filament be added to an existing Laravel app?
Yes. It installs alongside the current application, uses the models and migrations that already exist, and can be scoped to a subset of resources so the first release covers the workflows that hurt most.

Related services