Skip to content
View joehahndev's full-sized avatar

Block or report joehahndev

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
joehahndev/README.md

Joe Hahn

Senior Drupal & web developer. 20+ years building, migrating, and maintaining sites for universities, nonprofits, and businesses.

Drupal is my specialty — I've carried sites through every major version from Drupal 6 to 11, built custom themes and editorial workflows, and rescued more than one inherited or failing codebase. A lot of my best work is the untangling kind: stepping into an existing site, figuring out how it's actually put together, fixing what's broken, and making changes safely without breaking what already works.

Available for part-time, remote, and contract work.

What I do

  • Drupal & WordPress — builds, redesigns, upgrades, long-haul migrations, and ongoing support
  • Analytics & tag management — GA4 migrations, Google Tag Manager from scratch, Consent Mode v2
  • CRM & fundraising — Salesforce (certified Admin, Platform Developer I, JavaScript Developer I), Marketo, GiveCampus, Blackbaud Luminate
  • Email — hand-coded, bulletproof responsive HTML templates
  • Accessibility — WCAG 2.1 AA audits and remediation

Selected work

drupress A WordPress-style admin experience for Drupal 11 — module suite, admin theme, and install recipe, built as a strict presentation layer
petrichor Agent-first project management on Drupal 11: projects, wiki and durable agent memory as content entities, with a built-in MCP server. Replaced Leantime in two days and has run every project since
peanut-gallery Timestamped comments on hours-long audio for Drupal 11 — streams multi-GB files, node-access sharing, passwordless invites, 54 PHPUnit tests
drupaltui Go terminal UI for writing Drupal content over JSON:API + OAuth2; no delete code path by design
mag2026 Dependency-free Drupal 10/11 magazine theme; hand-written CSS grid, no framework
drupal-module-ci Reusable GitHub Actions workflow: phpcs, phpstan and PHPUnit against a freshly built Drupal site, PHP × Drupal matrix
drupal-claude-skills Claude Code skills that keep an AI agent writing modern, standards-compliant Drupal
bulletproof-email-templates Production modular Marketo email template built for a large weekly alumni newsletter
givecampus-link-tool Self-service tool for advancement teams — prepopulated, fully tracked giving links
marketo-api-tools Small tools on the Marketo REST API to remove repetitive work from an email team's day

How I work

Every repo above ships with a license, CI and a tagged release. Drupal code runs through drupal-module-ci (phpcs Drupal + DrupalPractice, phpstan with deprecation rules, PHPUnit) on every push, and the drupal-claude-skills repo is how I keep AI-assisted work to the same standard.

Elsewhere

portfolio.joehahn.dev · LinkedIn · joehahn@gmail.com

Pinned Loading

  1. drupress drupress Public

    A WordPress-style admin experience for Drupal 11.

    PHP

  2. bulletproof-email-templates bulletproof-email-templates Public

    A production modular Marketo email template and a rendered example from it, built for The University of Chicago's ForwARD This Week newsletter, sent weekly to a large alumni audience.

    HTML

  3. givecampus-link-tool givecampus-link-tool Public

    A self-service web app for advancement/fundraising teams on GiveCampus: build prepopulated, fully tracked giving links — designation, amount, UTMs, appeal codes, tributes, special instructions — wi…

    JavaScript

  4. mag2026 mag2026 Public

    Standalone, dependency-free Drupal 10/11 magazine theme — a Bootstrap-free rebuild with a hand-written CSS grid and vanilla JS. Portfolio code example.

    Twig

  5. petrichor petrichor Public

    Agent-first project management for Drupal 11: projects, wiki and durable agent memory as content entities, with a built-in MCP server

    PHP