Every developer hits a wall at some point.
For me, it wasn’t a lack of ideas, but the opposite.
I was building my ecommerce platform, Digital Shopfront CMS, and my mind was already racing ahead to what was next. I love building tools that empower small businesses, and the possibilities seemed endless.
But I quickly realized the path I was on wasn’t sustainable. It was a one-way ticket to burnout.
I had to find a better way.
That’s the story of how solving my own problem led me to create ArtisanPack UI.
The Scaling Problem with Digital Shopfront CMS
As Digital Shopfront began to take shape, I started thinking in the long term.
What if I wanted to create a CMS for sports teams? Or a booking system for local businesses?
The core functionality, like user management, security, and a media library, would be pretty much the same.
The thought of rebuilding everything from scratch each time was just exhausting. It would mean maintaining multiple, almost identical codebases.
That’s not just inefficient. It’s a recipe for spending all my time fixing bugs instead of creating new and exciting things.
My first idea was to put the reusable parts into their own packages inside Digital Shopfront.
But that felt weird.
Using an ecommerce package for a sports CMS just didn’t make sense. I needed something cleaner and more flexible.
It was time for a new approach.
Why Create ArtisanPack UI?
ArtisanPack UI came directly from those pain points.
It was clear these reusable components didn’t belong to just one project. They needed their own home. A dedicated space where they could be maintained and used across any Laravel app I wanted to build.
Creating a separate suite of packages would solve my maintenance headache. I’d only have to manage the code in one place.
But then a bigger idea hit me: what if other developers could use these tools too?
That idea was energizing.
It shifted my focus from just solving my problem to creating something for the whole Laravel community. That’s what really reignited my passion.
The Game Plan
My plan was pretty simple.
I listed out all the packages I knew I’d need for a CMS. Features such as a CMS Framework, accessibility, security, UI components, a media library, and a visual editor, to name a few.
I’d start with the packages I had already created for Digital Shopfront.
From there, I’d build the UI Components package, then the CMS Framework, before moving on to the rest.
Bringing Over Existing Packages
The first step was the easy part.
I had already created accessibility, icons, and security packages. All I needed to do was move them into the ArtisanPack UI group in GitLab and do a quick search-and-replace on the naming.
Once they were ready, I published the “new” packages to Packagist and deprecated the old ones, pointing them to their new home.
With the easy part done, the real work began.
Building the Livewire UI Components Package
The cornerstone of ArtisanPack UI is the Livewire UI Components package. I mean, “UI” is in the name!
But it was also the most challenging one to work on. I really struggled to find the right approach.
I started from scratch. I tried using Flux as inspiration. I even tried Tailgrids’ components.
Nothing worked.
The breakthrough was finding Mary UI. It had most of what I needed, but I saw some “holes” where I could add more value.
So I decided to fork the package. This let me make the theming easier for developers to customize and add in more components to make it more robust.
It took a while, but I got there in the end.
Creating the CMS Framework
The other huge piece is the CMS Framework package.
It basically scaffolds the backend for a content management system, handling all the tricky stuff with users, roles, settings, dashboards, and content.
This gives developers a massive head start, allowing them to get right to building the front end with their favorite framework.
I’ll be using this to build the Digital Shopfront CMS and any other applications that require a CMS.
And There’s More…
But these aren’t the only packages.
I’m currently working on a media library package and a visual editor.
There will also be a Livewire Drag and Drop NPM package that focuses on making drag and drop as accessible as possible.
There’s also a code style package that’s similar to the one for WordPress.
Additionally, there will be packages available for SEO, performance, and privacy.
Tying It All Together with a Livewire Starter Kit
With all these packages, it was time to tie them all together.
The release of Laravel 12 introduced custom starter kits, which was the perfect opportunity. Now, a developer can spin up a new Laravel app using a simple –using flag.
I figured it would be neat to create a starter kit with the required ArtisanPack UI packages already there. You can even select other packages, like the CMS Framework, during installation.
It wasn’t quite as smooth as I would have liked, but I got it working. It should help developers get started much faster.
The Future is Bright
The future of ArtisanPack UI feels really bright.
It has a solid start that’s only going to get better as I use it with live projects and add new features.
There are still packages I want to create for tasks such as SEO and performance optimization. And I’m sure new ideas will come up as I build things like Digital Shopfront CMS.
Plus, this is an open-source project, so that anyone can contribute.
I’m eager to see where things go from here.