ARTICLES

Everything I've written.

tailwind

Tailwind v4 Container Queries — Component-First Responsive Design Without Plugins

The same card looks broken in a sidebar and great in a hero. Container queries fix it — and Tailwind v4 ships them out of the box, no plugin required.

10 min read
tailwind

Tailwind CSS v4 Dark Mode in Laravel — CSS-First with @custom-variant

Tailwind v4 killed tailwind.config.js. This walkthrough wires class-based dark mode end-to-end — @custom-variant in app.css, @theme tokens, an Alpine toggle, and a tiny inline script that kills the white flash on first paint.

11 min read
filament

Custom Filament v4 Actions with Confirmation Modals and Notifications

A walkthrough of building a Filament v4 Action that opens a confirmation modal, collects form input, runs the side-effect, and fires the right notification — without dropping into raw Livewire.

10 min read
filament

Filament v4 Many-to-Many Relation Managers — Pivot Fields, Attach, and Detach

How to surface pivot data in a Filament v4 relation manager — withPivot, AttachAction with form fields, scoped record selects, and a safe detach story.

10 min read
filament

Build a Custom Form Field in Filament v4 — From make:filament-form-field to Production

A working walkthrough of building a custom Filament v4 form field — from the new artisan generator through Alpine state, validation, reactive callbacks, and a Pest test.

10 min read
stripe

Stripe Identity Verification in Laravel — KYC Without a Compliance Vendor

Stripe Identity is right there in the dashboard you already use, costs $1.50 per US check, and rides on the same session + webhook pattern as Checkout.

11 min read
laravel

Laravel Octane + FrankenPHP — Production Deployment Without Surprises

FrankenPHP turns Octane from a benchmark trick into a production runtime. Here's the actual checklist for shipping it behind Nginx without a 3am incident.

9 min read
laravel

Laravel 13 Reverb Database Driver — WebSockets Without Redis

The Reverb database scaling driver lets you run real-time WebSockets on a single Laravel box without standing up Redis. Here's the production setup.

8 min read