Search

That Escalated Quickly: All the New Things

December 10, 2023 —John Koster

Hello, everyone! The last three-to-four months have been pretty busy on my end. After publishing my latest mega-series about a hybrid-cache system for Statamic, I started working on a new article series about writing a custom Statamic search provider, focused on documentation-heavy websites.

About eighty pages into the draft for that article I decided it would be nice to also have a sample site to go along with it, as well as make some of the content simpler to write, since I could target a known site.

I started working on that sample site to go along with the article. After tinkering on the sample site for a while I thought "with a little bit more work I could probably make this into a starter kit!" (can you see where this is going?)

Weeks later the refactored sample site was now a standalone starter kit! Fantastic! This is normally where you'd assess the situation and think "things are in a good spot, lets ship it."

Well, no. That first draft of the starter kit contained a lot of useful things that might be better released as their own Statamic addons. So I started along that path: breaking down the custom items into seven new Statamic packages. That went rather well, and I wanted to provide great documentation for all of the new things (releasing something focused on documentation-writing without good documentation would be rather ironic).

Sitting with seven new packages and two new starter kits, one for "regular sites" and an example pre-configured with Statamic's multi-site feature, I sat down to start writing adding the documentation to my website (this very one). While writing the documentation I realized that I was rather bored with my existing website and decided to do a complete refresh before releasing the new Statamic packages and starter kits.

That escalated quickly.

Well, here is a brief overview of all the things that I've released or updated recently!

#Tidal Starter Kits

The "example site" that started it all. Tidal is a starter kit for Statamic, with a focus on making it simpler to manage documentation-heavy websites. Tidal allows you to manage multiple projects, versions, as well as supports Statamic's multi-site feature.

#Social Media Image Kit

Social Media Image Kit provides a framework to help generate social media images for collection entries using Antlers or Blade templates.

Social Media Image Kit provides the following features:

  1. Simple image management: Social Media Image Kit ships with a custom fieldtype, making it simple to manage generated social media images (or replace them with custom ones)
  2. Customizable templates and image sizes: generate an arbitrary number of images for a variety of platforms. Update the existing default template, or create specific collection or blueprint templates for maximum flexibility
  3. Battle-tested rendering: The default template renderer uses Spatie's amazing Browsershot packaging, making finding guidance on installing and configuring Puppeteer easier
  4. Automation and Queue support: Social Media Image Kit can be configured to generate images whenever someone changes an entry in the control panel. Generation can be dispatched to a queue, with advanced options for preventing duplicate jobs
  5. Assets and filesystem disks: Social Media Image Kit stores all images as asset. It can also be configured to use a custom filesystem disk to easily store images locally, on AWS S3, or any other supported storage provider.
  6. And a whole lot more!

#Documentation Search

Documentation Search is a powerful search provider for Statamic. Documentation Search was developed with documentation-heavy websites in mind, and supports the following features:

  1. Split larger entries into smaller sections that can be indexed independently
  2. Customizable indexer content, built using either Antlers or Blade templates
  3. A custom documentation:results Antlers tag, providing advanced features designed to work directly with the search provider
  4. Advanced indexer transformers, allowing for customizations of both indexed content and user search queries. Perfect for implementing "close enough" searches, or supporting common misspellings.

#Site Essentials for Statamic

Site Essentials for Statamic is a Statamic addon that aims to make it simpler to rapidly develop websites.

  • Handfuls of Antlers tags and modifiers: Site Essentials ships with many different types of Antlers tags and modifiers. Examples include capturing sections of a template to be emitted later, creating unique IDs for HTML elements, and a whole lot more.

  • Dedicated Front-end Asset Management: Site Essentials ship with dedicated front-end asset queues, which can help to include arbitrary scripts and styles on a page. This feature behaves similarly to manually crafted sections, but with a friendlier development experience.

  • Favicon Generation: Site Essentials provides a system for generating a configurable number of favicons from Assets or other, arbitrary image sources.

  • Web Manifest Generation: Generate site.webmanifest files (using a PHP configuration file as the source-of-truth). This feature also integrates with the favicon generator, simplifying things even more.

  • Metadata Manager: An incredibly robust framework for managing a site's <meta /> and <link /> tags. Site Essentials ships with support for Open Graph, X/Twitter, most link/meta tags, but also allows for custom meta tags to be registered. Metadata is managed in PHP code, and can be emitted with a single Antlers tag. The metadata manager can integrate with existing SEO addons, offering the best of all worlds.

  • Site Essentials for Statamic Documentation

  • Site Essentials for Statamic GitHub

  • Site Essentials for Statamic Marketplace Listing

#Search Report for Statamic

Search Report for Statamic is a simple Control Panel and utility addon that allows you to log searches made on your site, and view them within Statamic's Control Panel.

#Bard Heading Permalinks for Statamic

Bard Heading Permalinks for Statamic is a simple addon that can generate permalinks for headings within Bard fields. This addon is compatible with Statamic's markdown permalink configuration.

#Attribute Renderer for Statamic

Attribute Renderer is a utility addon designed for use within other addons. It provides an advanced system for converting PHP arrays to HTML attribute strings; it is used by many of my new addons.

#Template Resolver for Statamic

Template Resolver for Statamic is a simple utility addon, intended to be used by other addons. It provides a simple utility for selecting and rendering a template based on an entry's blueprint and collection, with support for a fallback default template.

Example use-cases:

  • Selecting templates dynamically to generate social media images from HTML,

  • Generating HTML documents on-the-fly, without requiring network requests to the site,

  • Anything where you need to support customizable templates based on an entry's blueprint/collection details

  • Template Resolver Documentation

  • Template Resolver GitHub

#Blade Parser

I also released an updated version of Blade Parser, my independent library for parsing and validating Blade templates. This new version brings parity with recent changes related to component tag parsing, as well as adds compiler support for the new @use directive.

#Wrapping Up

It's been quite a long and busy year (between work, "real-life" stuff, and all of the open-source work), and its hard to believe that its already almost 2024. Creating these starter kits, addons, packages, and libraries takes a considerable amount of time and effort. If you find them useful, consider sponsoring me on GitHub (its greatly appreciated!).

That's all for now and I really hope you enjoy all of these new packages and updates, and hope you have a fantastic rest of the year!

Some absolutely amazing
people

The following amazing people help support this site and my open source projects ♥️
If you're interesting in supporting my work and want to show up on this list, check out my GitHub Sponsors Profile.