FRANK
ANAYA

Work / Drupal

Drupal 11 sites, built and shipped with AI in the loop.

I'm a web developer with 12 years on the front end and the back end. Since 2025 I've worked hands-on in Drupal 11 on two production sites with 160,000+ attendees and a million visits a show season.

Ontario, CA · Inland Empire / Southern California · remote

What I build

Five kinds of Drupal work I do every week.

01

Themes and components

Custom Bootstrap 5 / Twig themes and Single Directory Components. On semashow.com I build the theme and the new SDCs, and I own the attendee and exhibitor pages: Why Attend, Why Exhibit, Plan Your Visit, transportation, floor-plan maps, schedule and planner.

02

Migrations

Drupal 8 to Drupal 11 on two production sites: content, config and theme. I wrote LLM-assisted migration tooling for the parts that were too messy for a plain script and too repetitive for a person.

03

Headless Drupal

Drupal 11 as the content API (JSON:API with OAuth) and Astro as the front end. 30+ components on a design-token CSS system, with an automated SEO and redirect parity suite that compares old and new.

04

CI/CD

Git-based pipelines on Cloudflare and GitHub Actions. Composer, Drush, npm and Vite in the build. I deploy daily and write release notes for every deploy, including out-of-cycle fixes during show season.

05

AI in the loop

Claude Code with project-specific skills and runbooks. 33 idempotent seed scripts so a person or an agent stands the codebase up in one command. Scripts where a model would be waste, the model where it saves a day.

Proof

Three sites, all live.

semashow.com

Drupal 11 · 160,000+ attendees · 1M+ visits a show season

  • Part of the Drupal 8 to 11 migration (content, config, theme).
  • Custom Bootstrap 5 / Twig theme and new Single Directory Components.
  • Design and page improvements for the attendee and exhibitor flows.
  • Designed and built a headless Drupal 11 + Astro architecture: JSON:API + OAuth, 30+ components, 15 Architecture Decision Records, about 1,000 commits, automated SEO/redirect parity tests and automated accessibility checks. The organization moved production rollout to a vendor; the architecture, seed scripts and runbooks carried into the current platform.
semashow.com case study →

sema.org

Drupal 11 · 7,000+ member companies

  • Same Drupal 8 to 11 migration, same Cloudflare CI/CD pipeline.
  • Redesign was a team project. My part: the advocacy pages, components and documentation.
  • On staging, Lighthouse accessibility went from 89 to 96 and SEO from 85 to 100.
sema.org case study →

semagarage.com

Astro · Cloudflare · GitHub Actions

  • Launched the site and the pipeline that deploys it.

Before SEMA: ten years of volunteer UX and front-end work on a global nonprofit's logged-in applications (Angular, 400,000+ users).

How I work

I write it down while I build it.

A deploy a day is only safe when the tooling carries the discipline. These are the six things that carry it.

Decision records

Fifteen ADRs on the semashow.com architecture. The options, the cost, why we picked one.

Runbooks

Every production gotcha gets written down so the next person, or the next agent, does not relearn it.

Seed scripts

33 of them, idempotent. One command stands the codebase up from nothing.

Parity tests

Automated SEO and redirect checks that compare the old site to the new one before anything ships.

Release notes

One for every deploy. Show season has out-of-cycle fixes, and those get notes too.

Security

Found and rotated a leaked GitHub token and an OAuth secret, then documented the response. The Drupal editor side sits behind Cloudflare Access SSO.

Stack

What I work in.

How I run the AI side is on the agents in production page.

  • Drupal 10/11
  • PHP 8.3
  • Twig
  • Single Directory Components
  • Composer
  • Drush
  • MySQL
  • JSON:API
  • Astro
  • Bootstrap 5
  • Vite
  • Cloudflare Pages
  • Cloudflare Workers
  • Cloudflare Access
  • Pantheon
  • GitHub Actions
  • Playwright
  • Claude Code