Tell me about Shore Dogs Site.
Shore Dogs Site
Shore Dogs is a dog treat bakery based in Onancock, Virginia on the Eastern Shore — handmade, all-natural treats with no preservatives or artificial ingredients. A friend asked me to help them get off their aging WordPress site, and it turned into a clean opportunity to demonstrate what a modern static stack can do for a small business.
- Live site: shore-dogs.com
- GitHub: nateblaine/shore-dogs-site

The Migration
The original site ran on WordPress + WooCommerce on an AWS Lightsail instance — costing around $15/month, requiring security patches, and carrying the full weight of PHP and a plugin ecosystem for a site with 4 pages and a contact form.
The replacement stack:
| Layer | Tool |
|---|---|
| Framework | Astro 6 (static site generation) |
| Styling | Tailwind CSS v4 |
| Forms | Formspree (no backend needed) |
| Hosting | AWS Amplify + CloudFront |
| DNS | Route 53 |
| Deployment | Custom bash script via AWS CLI |
Running cost: ~$0.50/month. No PHP, no plugin updates, no attack surface.
The Claude Code Angle
This is the part worth documenting. I handed Claude Code two things:
- The live WordPress site URL
- A full WordPress bundle export from the Lightsail deployment
It nearly one-shotted the Astro rebuild — pages, nav, color palette, layout, responsive behavior. I stepped in for a few passes on branding refinements and the deploy pipeline, but the bulk of the migration happened in a single session. That workflow — legacy bundle in, modern static site out — is something I expect to use again.

Stack Decisions
Why Astro? Zero JavaScript by default, outputs pure HTML/CSS, and perfect for content-only sites. The entire source is ~40KB (excluding images), with 3 npm dependencies total.
Why Amplify? Already familiar with it from this site. The deploy script builds the Astro dist, zips it, uploads to Amplify via AWS CLI, and polls until the deployment goes live — same pattern I use here.
Why Formspree? The contact form needed to send email without a backend. Formspree handles routing externally — no Lambda, no SES config, no spam filtering to maintain.