# Adopt Rescue Foster

Adopt Rescue Foster is a volunteer-run dog rescue in Peculiar, down in Cass County, and almost every dog they take in waits for a home with a foster family. I rebuilt their website from scratch and donated it. Every adoptable dog now comes straight from Shelterluv, the software ARF already keeps its dogs in, so a new dog shows up on the site without anybody touching it, and every dog gets a turn as Dog of the Day. Under Google's throttled mobile test the homepage scores 98, against a median of 55 for Kansas City small-business sites.

## The challenge

ARF's old site was WordPress and a page builder on shared hosting, and it had gotten away from them. The adoptable dogs sat inside a Shelterluv frame, so not one of them had a page of its own on ARF's site to share or to turn up in a search. On a phone the homepage pulled about 2 MB, and close to half of that was one picture at the top. None of that is on them. The people who'd keep a rescue's website up are the same ones taking care of the dogs. So the new site had to keep its dog list current by itself, without anybody having to remember to do it.

## What I built

The site reads ARF's list in Shelterluv every half hour. A new dog shows up on its own, an adopted dog comes down on its own, and nobody has to update the website for either one. Each dog gets a page on ARF's own site with their photos, the basics, who they get along with, their story, and buttons to apply, ask about them, share them or sponsor them. The adopt page filters by size, age, sex and who a dog is good with, and a filtered list can be sent to somebody as a link.

The homepage has a Dog of the Day. That one was my idea. I wanted every dog to get a turn front and center. Just after midnight a new dog goes up, picked at random from the dogs who haven't had a turn yet, and nobody repeats until every dog has had a day. A litter shares one day, so a batch of puppies can't take over the week, and a dog who gets adopted mid-round drops out. Right below it is a strip for the dogs who have waited the longest.

Their Community Pets program helps local families keep the pets they already have, and the request form for it used to be a WordPress plugin. Now it's part of the site, and it only asks the vet questions when someone checks a vet option. All four forms on the site check what's filled in, turn away bots and arrive in ARF's email laid out the same way every time. For the look, ARF asked for color and some pizzazz, so the whole rainbow from their logo runs through the site, with round, friendly type and paw prints tucked here and there.

## The results

Under Google's throttled mobile test on 2026-11-05, the homepage scored 98 for performance, 100 for accessibility, 100 for SEO and 100 for best practices, with a 2.3-second Largest Contentful Paint, against a median mobile performance of 55 across the 105 Kansas City small-business sites I surveyed. During the build, every page was scanned for accessibility problems with axe-core at phone and desktop width, and the scans came back clean. Links people shared to the old WordPress pages still work, because the old addresses redirect to their new pages. And when we pointed the domain at the new site, ARF's email didn't move. Every mailbox stayed where it was, and nobody had to change anything in Outlook.

Measured under Google's throttled mobile (Lighthouse) test on 2026-11-05. *Medians from my [survey of 105 KC small-business websites](https://2kwebdev.com/blog/state-of-kc-small-business-websites-2026/). No CrUX real-user field data is available for this site, so every figure here is a lab measurement.

## The stack, for the curious

Static pages built with Node and Nunjucks, no framework, served by one Cloudflare Worker that handles the parts that move: the dogs from Shelterluv and their photos, Dog of the Day, the live dog counts on the homepage and the forms. A scheduled run every half hour refreshes the dogs and the counts and picks the next Dog of the Day after midnight. Whatever it fetches is cached in Cloudflare KV, so if Shelterluv has a bad minute the site keeps showing the last good list. Shelterluv only hands out its photos at full size, so the Worker resizes each one through Cloudflare to the size the page shows it at and sends it as AVIF or WebP. A dog card on a phone gets a small photo instead of the full-size original. ARF's own photos ship as AVIF with a JPEG fallback, both fonts are self-hosted, and a strict content security policy covers every page. Form email goes out through Cloudflare's own email sending, so there's no third-party form service in the middle. A checker reads every built page for broken links, missing alt text and missing descriptions, and it was tested against planted mistakes to prove it catches them. Analytics are cookieless, through LiveDash.

[Visit www.adoptrescuefoster.org ↗](https://www.adoptrescuefoster.org)

## Who built Adopt Rescue Foster's site?

Adam Williams of 2k Web Developments, hand-coded from the first line and donated to the rescue. There is no template or page builder behind it, and the dogs come from the Shelterluv account ARF already keeps.

## Who owns the site and the accounts?

The client does. Every line of code, the domain and every account are handed over at launch, with no strings.

## How fast is Adopt Rescue Foster's site?

Under Google's throttled mobile test, measured 2026-11-05, it scores 98 for performance, 100 for accessibility, 100 for SEO and 100 for best practices, with a 2.3-second Largest Contentful Paint. The median Kansas City small-business site in my 105-site survey scores 55.

## How big is the site?

47 indexable pages at launch. Most of them are a page for each adoptable dog and each event, so the count moves as dogs go home and new ones come in.

## What happens after launch?

Updates are a text to the person who wrote the code, not a support ticket.

Want a site that loads instantly and does real work, like this one?

See what I do for [businesses in Peculiar, MO](https://2kwebdev.com/areas/missouri/kansas-city/peculiar/).

Source: https://2kwebdev.com/work/adopt-rescue-foster/
