What I Built in January

,
A dual-monitor computer setup in a dimly lit room. The left monitor displays lines of code in a dark-themed editor, and the right monitor shows a mountain road wallpaper with a "PAPERIZE" logo overlay. A keyboard, mouse, and a smartphone displaying a music player are on the desk in the foreground.

Back in September, Aaron Francis gave a keynote talk at the Commit Your Code conference.

During that talk, he asked us to raise our hands if we were building something cool. And naturally, we all raised our hands.

Then he asked us to raise our hands if we were talking about the cool things we were building. And almost every hand went down.

So this year, I have a goal to talk about what I’m building.

Here’s what I worked on in January.

Creating New ArtisanPack UI Packages

The biggest thing I’ve been working on in January is a set of three new ArtisanPack UI packages that will primarily be for the internal content management system I’m building, but will absolutely work with any Laravel app.

As you’ll see, these packages will be a big help for any Laravel app that needs support for forms, analytics, and SEO. 

Forms

The first new package I built is the Forms package.

This package adds a form builder that lets you create almost any type of form you need for your website. The builder offers several fields to add to a form, and you can drag and drop them to arrange them in any order. Plus, you can add multi-step forms.

You can also send custom notifications. For example, you can send one notification to yourself on submission with a single message, and automatically email the submitter with another message.

And the package uses the Hooks package, which allows other packages and the app to hook into the submit event to send data to destinations like ConvertKit, Mailchimp, a CRM, and more.

Analytics

The next package I built this month was the Analytics package.

This package is a local-first, privacy-focused analytics package that can be included in any Laravel application.

By default, the data remains in the app and is not sent elsewhere. Plus, visitors can accept or decline cookies.

You can also view stats, including real-time stats, to see what pages people are landing on, where they are coming from, and more.

Plus, you can set up goals to track specific events.

And if you want to use a third-party analytics platform, like Google Analytics 4 or Plausible, there are hooks that you can use to send data to them.

SEO

The final new package I created this month was the SEO package, which adds search engine optimization to a Laravel application.

The package adds metadata fields to specified tables and models, such as meta descriptions.

It also adds functionality, like analyzing posts (and other content) to identify where SEO can be improved, helping it rank better.

And it adds the correct JSON-LD schema for the app’s content.

It’s relatively light on major features, but it can be a big help for any Laravel app looking to improve its SEO.

Updating the ArtisanPack UI Media Library Package

Next up, I added a couple of features to the Media Library package to get it ready for the Visual Editor package I’m starting in February.

For this, I needed to slightly alter the add media modal to make it work in the eventual block-based editor format.

I also needed to update it slightly for the new 2.0 version of the Livewire UI Components package (more on that in the next section).

All told, this was definitely the easiest package to work on, since it only needed minor changes.

It’s ready to work with a Laravel application to quickly and easily add a full-featured media library.

Releasing v2.0 of the ArtisanPack UI Livewire UI Components Package

Speaking of the Livewire UI Components package, it received the most significant makeover in January.

First, with the release of Livewire 4, I wanted to make sure the package was compatible with the new version and took advantage of its latest features while still supporting the Livewire 3 branch. Fortunately, there was only one breaking change in the components package—a minor issue with the toast component—, and I was able to add a function to check the Livewire version before implementing any Livewire 4 features.

Next came the visual overhaul for the glass background. As it’s a fork of Mary UI, it’s essentially a wrapper around the Daisy UI package, which supports a basic glass background. I wanted to take this a bit further and add full support for a liquid-glass-esque background if a developer wanted to use it. As it turns out, that wasn’t as hard as I thought (thanks for the help, Claude).

I also replaced the chart.js package that Mary UI has with ApexCharts. While the old package was nice to start with, I honestly found the chart designs to be really lacking, and I think ApexCharts just look a lot better for modern user interfaces. Along with the new chart package, I also added a KPI component and a Sparkline component to help show trends.

The last big thing I added for this package was a live theme preview. Here, a developer could play with the various settings and see what it would look like in the browser. Then they could export those settings and import them into their app. Right now, this is only a route that’s included with the package and is hidden by default. But I’m planning to include it on a page of the upcoming ArtisanPack UI website.

Update on the ArtisanPack UI Security Package

The one thing I wasn’t able to get to this month was figuring out a solution for the Security package.

As I mentioned in an earlier post, I spent a good chunk of December working on version 2.0 of the package, but after completing all the tasks, I realized it was doing too much.

I’m hoping to figure out the best way to split the package in February and launch all security-related packages that month.

Creating a Long-term Support Plan for ArtisanPack UI

Finally, I’ve started working on a long-term support plan for all of the ArtisanPack UI packages.

With so many packages released and decent-ish download numbers from Packagist, I now need to get serious about maintaining them in a way that works best for the time I have in the day.

This is an ongoing process, and it’s still a work in progress.

But it’s definitely giving me a good start to maintaining all of this in the future.

Update on Digital Shopfront CMS

Meanwhile, I am pressing the pause button on Digital Shopfront CMS, as I mentioned at the beginning of the month.

I got through the first phase, which was great for building the CMS Framework package for ArtisanPack UI, but I’m shifting my priorities a bit.

It will eventually restart, but for now it’s been put on the sidelines.

Leave a Reply

Your email address will not be published. Required fields are marked *