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.
Repos and short snippets. If you’re new to WordPress or Sage, start with the snippets, then open a repo and read the README. Questions are welcome on the contact page.
Open these on GitHub. Fork them if they help.
A private family app I built end to end. React, Vite, Tailwind, and Supabase. Real sign-in, invites, and posts. React, Supabase, Full-stack.
A free WordPress table of contents block. It reads your headings and builds a clear, accessible outline. WordPress, Gutenberg, PHP.
The Ridges & Valleys Studio site. Sage 11, local SEO, accessibility, and Gettysburg work. WordPress, Sage, Local SEO.
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.
Concept website for a Gettysburg tour company
Gettysburg self guided tour map
Hallowed Grounds concept WooCommerce Wp Theme
Concept project for R&V Pintfield Creamery WooCommerce Theme
Concept for a Gettysburg creamery site
Concept website for a Gettysburg realtor
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.
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>';
});
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>
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;
}
Change --brand once. Links and buttons can share it. Same idea as this theme.
:root {
--brand: #2563EB;
}
a {
color: var(--brand);
}
Escape URLs and labels you did not write yourself.
<a href="{{ esc_url($url) }}">{{ esc_html($label) }}</a>
Sage templates already have $title. Use get_the_title() if you are not on a standard loop.
{{ $title }}
{{-- or --}}
{{ get_the_title() }}
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);
}