One platform.
Three niches. Same engine.

Static Hugo frontends pulling from a shared headless WordPress API, with per-site Meilisearch indexes scoped by taxonomy. New niche, new domain, same infrastructure.

the sites

localvintagestores.com

live · visit

Vintage, antique, and thrift stores across the United States.

findlocalcoffeeshops.com

live · visit

Coffee shops, roasters, and cafes.

localveganspots.com

live · visit

Vegan restaurants, cafes, bakeries, and food trucks.

findlocalbikeshops.com

coming soon

Bike shops, repair, and rentals.

findlocalbreweries.com

coming soon

Breweries, taprooms, and brewpubs.

how it works

3 layers

Shared API

One WordPress install handles listings for every site. A taxonomy separates which listings belong where — no duplicate infrastructure, no per-site CMS to maintain.

Per-site search

Each frontend gets its own Meilisearch index with a scoped API key. Coffee-shop queries never reach the vintage-store index. Search is fast and isolated.

Static frontends

Hugo builds flat HTML at content time. No server rendering, no PHP on the frontend. The result is a site that loads instantly and survives traffic spikes for free.

dependencies

package.json · partial

hugo

static site generator

wordpress

headless CMS (shared API)

meilisearch

per-site full-text search

cloudflare

images, DNS, CDN

linode

VPS hosting

brevo

transactional email

anthropic

Claude API for content generation

google

Places API for listing data

architecture

request flow

# Browser → static HTML → search

Browser         → Hugo static site  (cached at edge)
                ↑    ↓
                │    ├─ APIWordPress  (headless CMS)
                │    └─ SEARCHMeilisearch  (per-site index)
                │
                └─ Cloudflare (images · DNS · CDN · edge cache)