In a single week in January, I built a completely new forms package for the ArtisanPack UI Library.
It was the first step of 2026 towards creating an in-house content management system, Keystone CMS, as well as Digital Shopfront CMS.
It’s a crucial part of any website, and allowing developers and users alike to create and display forms quickly and easily is vital.
So, here’s how I created the forms package for ArtisanPack UI.
Why Create a New Forms Package?
So, obviously, the biggest question is: why create a completely new forms package when there are already many out there? And you’re not wrong to ask this question.
The biggest reason for me to do this was control.
I wanted a package I could control so I could build and maintain it the way I wanted. I wanted to make sure this package would be easy to use for developers and website users alike.
I had a very specific idea of what I wanted the form builder to be, and to make that happen, I would have to build it myself.
Plus, as with everything I build, I wanted to make sure it was as accessible as possible, and that would only be possible if I built it myself from the ground up.
So challenge accepted.
The Plan for the Package
The plan for the package was pretty simple.
It would need to be a drag-and-drop form builder using the artisanpack-ui/livewire-drag-and-drop NPM package, allowing users to build the forms they need for their website easily.
Additionally, they would need to be able to customize almost every part of the forms, including conditional fields, custom notifications, and more.
Also, I knew I wanted to have support for multi-step forms right out of the box.
And there had to be hooks so that other packages could add integrations with services like Kit, Mailchimp, and the like.
That all seemed like a good, achievable set of goals for version 1.0.
Creating the Package
With the plan in place, it was now time to build the package.
And this is where Claude Code really shone bright.
It was able to take the plan I created and break it down into tasks with enough detail for anyone to complete.
It then completed those tasks almost flawlessly. I still looked over the code to make sure it met my standards, and for the most part, it turned out pretty good, thanks to the planning stage.
The trickiest part was testing the package.
I had to create a section in my ArtisanPack UI testing site for forms, which took almost as long as the development process.
But once that was completed, I was able to test the package thoroughly and fine-tune it to be production-ready on day one of version 1.0.
And that was that. In total, it took me all of a week to get the package out the door.
The Future for the Forms Package
So, what is the future for the forms package?
Well, I need to create integrations with other services, such as Kit, Mailchimp, and Google Analytics. I think those will be separate packages under the forms umbrella, but I haven’t made a final decision.
And then I definitely need to add more advanced fields, like name fields, calculation fields, and even payment fields.
Version 1.0 is very strong, I feel, and it’s ready to be used in any Laravel app. But I hope I can continue to work on it and make it an absolutely amazing package that becomes the standard in the Laravel ecosystem.




