& Consultant
Senior Laravel Specialist
I architect Laravel systems that scale.
10+ years building production SaaS platforms, developer tools, and open-source packages. Turning complex business requirements into clean, maintainable Laravel applications.
Who I Am
I build and migrate production Laravel applications - the kind that serve thousands of users across multiple currencies and languages. My open-source packages have been downloaded over 784,859 times, and I'm currently migrating a large-scale, US-based engineering training platform from WooCommerce to Laravel.
What I've Built
WooCommerce to Laravel Migration
Migrating a 15+ year-old engineering training platform from WordPress/WooCommerce to Laravel + Filament - and expanding it significantly along the way. Thousands of students globally, multi-language, multi-currency. The new stack covers e-commerce, course delivery, project management, HPC server provisioning with automated allocation and billing, license management, marketing tools, team collaboration, reporting, and many more.
A selection of what I can share - most client work is under NDA or kept private at their request.
Open Source Packages
package downloads across 6 open-source packages
Anthropic PHP
PHP client for the Anthropic API: messages, streaming, tool use, thinking, web search, code execution, batches, and more.
Anthropic Laravel
Laravel integration for the Anthropic API: facade, config publishing, install command, testing fakes, messages, streaming, tool use, thinking, and batches.
Laravel Scout Bulk Actions
Import, flush, and queue-import all your Laravel Scout searchable models at once. Auto-discovers models, runs in bulk, tracks progress.
Laravel Modules
Laravel package that auto-discovers and registers module assets (configs, routes, views, migrations, commands, Livewire, Filament, Nova, and more) from a Modules/ directory at the project root.
CommonMark Routes
A CommonMark extension that lets you use Laravel's route(), url(), and asset() helpers in Markdown links and images.
Laravel Searchable
Advanced multi-column, relation, and morph search for Laravel Eloquent models
How I Can Help
Laravel Architecture & Development
Custom Laravel application development from scratch. Architecture design for scalable, maintainable systems with clean API design and third-party integrations.
WooCommerce to Laravel Migration
Full platform migration from WordPress/WooCommerce to Laravel + Filament. Currently executing a multi-language, multi-currency migration - a proven engagement, not a theoretical offering.
Laravel Performance Optimization
Performance auditing and bottleneck identification. Query optimization, caching strategies, N+1 resolution, and infrastructure tuning to make your application fast.
Technical Leadership
Fractional CTO and interim technical lead engagements. Code review, architecture assessment, team mentoring, and technical direction for growing engineering teams.
Every Project Includes 1 Year of 24/7 Monitoring
Every application I deliver ships with automated, round-the-clock monitoring - included at no extra cost for the first year.
Latest from the Blog
Thoughts on Laravel, PHP, and building better software.
Anthropic Prompt Caching in Laravel: A Practical Guide
Running Sevantia, our AI chat product, I watched the same 2,800-token system prompt get re-billed on every single user message. Multiply that by thousands of conversations a day and you're paying Anthropic to re-read the same instructions into Claude's context over and over. Prompt caching fixes this. It took me longer than it should have to get the mental model right, and the docs skip over the parts that trip up most people. This is the guide I wish I'd had when I first enabled it.
5 Laravel Scheduler Failures That Only Show Up in Production
"But it worked locally." The Laravel scheduler is the duct tape of every production app I've worked on. It triggers the reports, cleans up expired data, pings the health checks, rotates the tokens, sends the digests. It works quietly for weeks, then one morning the team realises nothing has run for six days and nobody got an alert. If you've already read my queue worker version of this list, the scheduler has its own set of silent failure modes. Every one below cost me or a client real money or real trust. None of them show up in php artisan schedule:list. All of them are avoidable once you know where to look. Examples target Laravel 11 and later (so routes/console.php and bootstrap/app.php). On Laravel 10 and earlier, the same calls live in the schedule() method of App\Console\Kernel.
The Laravel Bug Your Tests Will Never Catch
In a previous post, I listed "your job runs before the data exists" as one of five queue failures that only show up in production. I showed the afterCommit() fix and moved on. But that post didn't answer the question that kept nagging me: why do your tests always pass when this bug is sitting right in your code? And where else in your app is this same timing problem hiding, beyond direct dispatch() calls? This post digs into both.
Let's Talk About Your Project
Have a project in mind? Tell me about it and I'll get back to you shortly.
Get in Touch
Whether you're planning a new Laravel project, considering a platform migration, or need help scaling your existing application - I'd like to hear about it.
Currently accepting projects for Q2 2026
Quick response guaranteed - usually same day.