Featured repos

Open these on GitHub. Fork them if they help.

keepary

A private family app I built end to end. React, Vite, Tailwind, and Supabase. Real sign-in, invites, and posts. React, Supabase, Full-stack.

tocflow

A free WordPress table of contents block. It reads your headings and builds a clear, accessible outline. WordPress, Gutenberg, PHP.

ridgesandvalleys

The Ridges & Valleys Studio site. Sage 11, local SEO, accessibility, and Gettysburg work. WordPress, Sage, Local SEO.

Live from GitHub

ridgesandvalleys

Ridges & Valleys Studio's main WordPress site — a rebranded Sage theme on the Pressroot framework, with an earthy Gettysburg / South Central PA palette, design mockups, and built-in SEO, performance, and accessibility tooling.

HTML · 1 stars

All public repos

Snippets

Tiny examples, the same style I drop into blog posts. Copy them into a post, a theme, or a gist. Change the names so they match your project. Sharing is the point.

A tiny WordPress shortcode

Paste into a plugin or your theme PHP. Then type [hello] in a post. Good first snippet for a blog.

add_shortcode('hello', function () {
    return '<p>Hello from a shortcode.</p>';
});

Skip to content that actually works

Keep the first focusable control a skip link. Hide it until it has focus.

<a class="skip-link" href="#main">Skip to main content</a>

Readable line length

Cap body text around 65 characters. Short lines are easier at a 6–8 grade level.

.prose {
  max-width: 65ch;
  font-size: 1.125rem;
  line-height: 1.7;
}

One brand color, reused

Change --brand once. Links and buttons can share it. Same idea as this theme.

:root {
  --brand: #2563EB;
}

a {
  color: var(--brand);
}

Safe link in Blade

Escape URLs and labels you did not write yourself.

<a href="{{ esc_url($url) }}">{{ esc_html($label) }}</a>

Get the current page title in Blade

Sage templates already have $title. Use get_the_title() if you are not on a standard loop.

{{ $title }}
{{-- or --}}
{{ get_the_title() }}

Fetch GitHub without hammering the API

Cache the response. Respect rate limits. Show a fallback if GitHub is down.

$key = 'mh_ghu_' . md5($user);
$data = get_transient($key);
if (false === $data) {
    $data = mh_fetch_github_user($user);
    set_transient($key, $data, 6 * HOUR_IN_SECONDS);
}