Build write-up · 3 min read
How I built Door County Found
A curated guide to a Wisconsin peninsula, built as a real product: every place is structured data, the filters are real, and the person who keeps it current has never touched the code.
- Role
- Everything: product, identity, build
- Built with
- Astro 5, markdown content collections, Leaflet, Pages CMS
- Runs on
- Cloudflare Pages and one edge function, about $12 a year all in
- Editor
- My sister, through a web form
My approach
-
01Research
- Decades on the peninsula, in every season, in one long family document
- 49 places seeded by script, then geocoded
- No AI: the knowledge is the product
-
02Design
- Hand-built identity from an approved brand board
- The real design is a typed schema: town, dog policy, veg flags
- Every filter is a query over it
-
03Build
- Astro 5, statically built, markdown validated by a Zod schema
- Leaflet map, Python image ladder, one Cloudflare edge function
- AI wrote the code. I chose the stack and cut what needed a server
-
04Handover
- Pages CMS: a hosted form over the private repo, no code added
- A push to main is live about two minutes later
- A half-filled form cannot break the build
The problem
Decades of family time on the peninsula built up real knowledge of it, and not the summer kind only. Door County is a year-round place, with one set of places worth the drive in February and another in July, and the family knew which. That knowledge lived where it usually lives: in heads, in a long document, in “ask your aunt.” The big guide sites, meanwhile, compete on completeness and list every restaurant whether or not anyone would send a friend there.
So the product bet is the opposite: fewer places, every one vouched for, each led by a “why we love it” written the way the family actually talks. Best perch you will ever have. Real goats on the roof. Sentences a directory cannot produce.
The same bet reaches the pictures. A guide like this runs on trust, and there is a real difference between an illustration in the spirit of the peninsula and an image that appears to document what a place looks like. So invention has a place, and it is the identity: the campaign art, the drawn map, the cut-out ephemera. It has no place beside a real restaurant or trail, where the photograph has to be the place. The brand rules say it in one line, that generated imagery is never used as if it depicts an actual venue, dish, room, trail or view, and the build holds to it: the stand-in photographs that let an image-heavy layout be judged before the real ones arrived sit behind a flag and cannot reach a build.
Every place is data, not a blog post
The decision everything else hangs on: a place is a structured record, not an article. Name, town, category, address, dog policy, vegetarian flags, badges, good-to-know notes, photos, and one paragraph in the family voice. There are 58 live today.
Because everything is a field, the product parts come free:
- Dog-friendly and vegetarian are real filters, not tags someone remembers to add
- Every card’s town and category stamps render from the record
- The directions button and the good-to-know panel draw from the same place, so nothing drifts
The signature feature is a filter
The first note in the family document was “add where dogs are welcome.” That became the sharpest edge: every place carries a dog policy with room for the caveat that matters, leashed at all times, keep them back from the edge. A dedicated Door County with your dog page is built from those fields, and vegetarian and vegan flags get the same treatment on every restaurant.
One deliberate omission: no lodging. That is where every competitor fights, and skipping it keeps the guide personal and maintainable.
Boring technology, chosen on purpose
Every piece is chosen so there is nothing to maintain:
- Astro, statically built; the vintage identity of cream paper, harbor navy, and beacon gold is hand-built, not themed
- Cloudflare Pages hosting, about $12 a year all in, nothing to patch
- Pages CMS for editing: a hosted form over the repository’s own content, zero code added to the site
- An honest exit: everything is structured markdown, so migrating it anywhere is mechanical, not a rewrite
The one mid-build switch proves the criterion. The first editing tool turned out to need a server runtime and a GitHub App, exactly the moving parts this site exists to avoid, so it went.
-

The map, and chips that count themselves
-

The dog guide, polaroids intact
Built for its editor, not its builder
The real user of the workflow is my sister, who is not a developer and should never have to become one. She signs into a web form, fills in the fields, hits save, and the change is live about two minutes later. The product ships with its own operating manual, down to how the photo cropping works.
That is the part I would show a client. Building the site is the visible work; designing the workflow so the right person can keep it alive without me is the product thinking, whether the editor is my sister or your content team.