// Notes
Blog
Insights on AI, engineering, and building products
Filter by category:
Filter by tag:
Automating CloudPanel Deployments with GitHub Actions: A Complete CI/CD Setup Guide
CloudPanel is excellent for self-hosted server management, but automating deployments to it has always required custom scripts or third-party services. CloudPanel Deploy Action brings professional CI/CD pipeline deployments to CloudPanel in a five-minute setup. This guide walks through the complete configuration.
LaraLink: Solving the Most Painful Part of Laravel Package Development
If you develop more than one Laravel package, you know the pain: every small change means editing composer.json, running composer update, and hoping the autoloader notices. LaraLink replaces this entire workflow with a single Artisan command that creates live, symlinked package connections. Here is how it works.
Replacing Laravel Flash Messages with Sonner Toast Notifications Using Laravel Sooner
Laravel's session flash messages work, but they are not beautiful. Sonner is one of the best toast notification libraries available — but wiring it into a PHP-first Laravel application has always been unnecessarily complex. Laravel Sooner fixes that with a fluent PHP API that makes dispatching beautiful toasts as simple as calling a static method.
Adding Keyboard Shortcuts to Your Laravel Application with Laravel Ninja Keys
Power users judge an application by how well it responds to their keyboard. Adding keyboard shortcuts to a Laravel Blade application has traditionally meant writing custom JavaScript. Laravel Ninja Keys gives you a fluent PHP API and a Blade directive — and a fully searchable command overlay — in under ten minutes.
Laravel Driver.js: How to Add Product Tours to Any Laravel App Without Touching JavaScript
User onboarding is one of those features that gets deprioritised in every product roadmap because it seems hard. Laravel Driver.js makes it straightforward: define your entire tour in PHP, add one Blade directive, and your application guides new users through every important feature automatically.
Laravel Grid.js: Eloquent-Powered Data Tables Without the Framework Overhead
Most Laravel data table solutions force you to choose between heavy JavaScript framework components and featureless HTML tables. Laravel Grid.js takes a different approach: wrap the lightweight Grid.js library in a PHP API that speaks Eloquent natively. Here is how it works and why I built it.
Filament Command Palette Pro: Making Filament Admin Panels Keyboard-First
Command palettes have become the defining UX pattern of professional developer tools. Yet Filament admin panels — despite their engineering quality — have never had one. I built Filament Command Palette Pro to change that, and this article explains the how and why.
Why You Should Replace Browser alert() and confirm() Dialogs Today
Every web developer has shipped `alert()` and `confirm()` calls in production at some point. They work, but they look terrible, cannot be styled, block the JavaScript event loop, and signal to users that the application is not production-quality. Alertify.js is the drop-in replacement that fixes all of that in minutes.
Building Filament URL Image Uploader: Why I Created the Package Every Filament Developer Needed
I built Filament URL Image Uploader because the workflow of downloading an image just to re-upload it through a file dialog was something I was doing multiple times a day across client projects. This is the story of the package, its architecture, and the lessons I took away from shipping it.