LocalFinds - Local Directory Template (Astro + Airtable + Cloudflare)

Table of Contents

LocalFinds is a production-ready local-business Astro directory template built on Astro 7 and Tailwind v4, using Airtable as the CMS and deploying to Cloudflare Workers. It’s fast, owned outright (no monthly platform fees), and built to be re-skinned for any local vertical.

Get LocalFinds$34.99Lifetime access · One-time payment · Free updates
LocalFinds Astro directory template - homepage screenshot

It ships configured as a hand-picked Sunshine Coast restaurant guide - a complete, real, working example - but “restaurants” is just a config value. Change one file and the same codebase becomes a hairdresser directory, a mechanic finder, a gym guide, whatever vertical you’re building a local directory for.

View the live demo here - it’s the real thing, try it before you buy. Or read the full docs first to understand what you are getting.

⚡ 30-Second Verdict

  • What it is: a local-business Astro directory theme built on Astro 7 + Tailwind v4, using Airtable as the CMS and deploying to Cloudflare Workers (or Vercel, Netlify).
  • The headline trick: one config file (src/site.config.ts) controls the entire vertical - names, URLs, categories, colours, SEO copy. Switching from restaurants to beauty salons is a config edit, not a rewrite.
  • Content via Airtable: you manage listings in a friendly spreadsheet-style grid. No database to run, no admin panel to build.
  • Genuinely fast: statically generated HTML. No per-request database hits, no plugin bloat.
  • Cheap to run: mostly static on Cloudflare’s free/near-free tier. No monthly SaaS rent.
  • Batteries included: filtering, map view, search, blog, three working forms with built-in spam protection, full SEO + structured data.
  • Documented properly: a full docs set, including a step-by-step “convert it to a different vertical” walkthrough. Read the complete documentation before you buy.
  • You own it: a commercial template, your code, your data. No lock-in.

The One-Config Idea

Here’s the part I’m proudest of, because it’s what makes the template actually reusable instead of just “a restaurant site you have to gut.”

Nothing in the components or routes says “restaurant.” The code is written in generic primitives - an Item (the thing you list), Taxonomies (the ways you categorise it), an optional Tier (price level). What those mean for your directory lives entirely in src/site.config.ts:

item: {
  singular: 'Place to Eat',
  plural: 'Places to Eat',
  slugBase: 'place',        // detail pages live at /place/<slug>
},
taxonomies: [
  { key: 'cuisine', label: 'Cuisine', plural: 'Cuisines', slugBase: 'cuisine', /* … */ },
  { key: 'area',    label: 'Area',    plural: 'Areas',     slugBase: 'area',    /* … */ },
  { key: 'tag',     label: 'Tag',     plural: 'Tags',      slugBase: 'tags',    /* … */ },
],

To turn it into a hairdresser directory, you change the labels - Cuisine becomes Specialty, Tags becomes Services, Place becomes Salon - rename the matching Airtable tables, and you’re done. No component touched, no route rewritten. The included walkthrough does exactly this conversion step by step.

That’s the difference between a template you buy once and reuse, and a template you buy once and outgrow immediately.

Airtable as Your CMS

You don’t run a database. You don’t build an admin panel. You manage your listings in Airtable - a spreadsheet that behaves like a database - and pull them into the site with a single command.

Add a listing: new row, fill in the name, drag in some photos, link a category. Feature it on the homepage: tick a box. Hide it: untick “Published.” It’s the kind of interface a non-technical client or VA can manage without you.

When your content changes, one command (pnpm run refresh:airtable) saves it as a snapshot inside your project. Builds and deploys read that snapshot, so they make zero Airtable API calls - you never burn through Airtable’s free-plan limit, and a deploy can’t fail because Airtable is having a bad day. Your content gets baked into fast HTML with no live database call on any page view, which is exactly why it’s quick and cheap. Connect the repo to Cloudflare and every git push deploys automatically.

Two practical touches that matter in the real world: Airtable’s image URLs expire, so the refresh downloads your photos into the project and Astro serves them as right-sized, optimised images rather than hot-linking. And there’s an optional CSV bulk-import script for seeding a directory with dozens of listings at once.

What’s Actually Included

This isn’t a landing-page-and-a-prayer. It’s a production-ready Astro business directory template:

  • Listings with live filtering. Filter by your categories and price tier, with an “Open now” toggle that reads each listing’s opening hours. Mobile gets a proper slide-in filter drawer, not a squashed desktop layout.
  • Rich detail pages. Photo gallery with lightbox, an Open/Closed status pill, an embedded map, “Visit website / Directions / Call” action buttons, breadcrumbs, and long-form markdown content per listing.
  • A map view. Powered by MapLibre with free, keyless OpenFreeMap tiles - no Google Maps or Mapbox account, no per-load billing.
  • Site search. Static, instant search via Pagefind - no search server to run.
  • A blog. For the “stories”/guides content that pulls in local SEO traffic, authored in MDX.
  • Three working forms - submit-a-business, contact, and newsletter - wired to Airtable, with built-in spam protection (honeypot, timing checks, origin/User-Agent validation, field limits, and per-IP rate limiting on Cloudflare), plus Cloudflare Turnstile built in - switch it on with two keys. It’s invisible to almost every visitor, so real users don’t get CAPTCHA friction.
  • Security-hardened. Secrets are read at request time and never baked into the deployed code, and everything that comes from Airtable is escaped, so even a shared Airtable base can’t inject scripts into your site.
  • SEO done right. Per-page titles and descriptions, Open Graph + Twitter cards, JSON-LD structured data, an auto-generated sitemap, and robots.txt. Category pages even generate their own templated, keyword-friendly titles and get noindex’d automatically when they’d otherwise be thin.

Why an Astro Directory Template Beats WordPress for This Job

I write a lot about WordPress’s plugin security problems and the trade-offs of newer stacks, so it’s a fair question: why this stack?

A directory is mostly read-heavy, structured content - exactly the workload static generation was built for. You don’t need a PHP runtime and a MySQL database spinning on every request to show a list of restaurants that changes a few times a week. You need fast HTML and a clean way to manage the data.

Astro generates that HTML. Cloudflare serves it from the edge for a rounding-error of a hosting bill. Airtable gives you the friendly editing layer. And because there’s no plugin ecosystem with database-level access, there’s no weekly patch-or-get-hacked treadmill. The only server-side code is the three form endpoints, and they ship hardened.

The honest trade-off: this is a developer’s template. You’ll use the command line to set it up and deploy it. Once it’s running, day-to-day content management is all in Airtable and requires no code - but the initial setup assumes you’re comfortable with git clone, a config file, and a deploy command. The included documentation walks through every step, but it’s written for someone willing to touch “code”.

Who This Is For

  • Developers and agencies building a local directory for a client - or as a productized, repeatable offering across multiple niches and towns.
  • Founders launching a niche directory (a “best X in Y” site) who want to own the asset instead of renting a directory SaaS.
  • Anyone tired of the WordPress directory-plugin experience - the slowness, the plugin sprawl, the maintenance.

Who it’s not for: if you’ve never opened vscode and don’t intend to, this isn’t the right pick - a hosted directory builder will serve you better, even at the cost of monthly fees and less control.

What You Get

  • The full source code, via a private GitHub repository.
  • Complete documentation: getting started, a full configuration reference, Airtable setup, the forms guide, deployment (including automatic deploys from Git), theming, troubleshooting, and the restaurants-to-hairdressers conversion walkthrough.
  • A changelog with upgrade notes for every release, so staying current is a git pull and a two-minute read.
  • Support from me via email if you run into any problems.
  • The example Airtable base, ready to copy into your own Airtable workspace (works on the free plan).
  • A real, deployed live demo so you know exactly what you’re buying and getting.

FAQ

Is this a free or paid Astro directory template? It’s paid, $34.99, one-time. Lifetime access, free updates, no subscription.

What happens after I purchase LocalFinds? Right after checkout you’ll get an email with an invite to a private GitHub repository containing the full LocalFinds source. Accept the invite, then either clone the repo or download it as a zip - whichever you prefer. You’ll also keep getting free updates pushed to the same repo, so a git pull is all it takes to stay current.

Do you offer refunds? LocalFinds is a digital product with instant access on purchase, so refunds aren’t offered. I understand that can be disappointing, but I’d much rather help you get it working than have you walk away unhappy. If you hit any issue, big or small, email me and I’ll do my best to sort it out.

Can I use this Astro directory template for niches other than restaurants? Yes. The vertical lives in one config file; relabel it for salons, mechanics, gyms, or any local niche without touching code. A full restaurants-to-hairdressers walkthrough is included.

Do I need to know Astro to use it? No Astro experience needed, but you do need to be comfortable with the command line for setup and deploy (git clone, edit a config file, run a deploy command). Day-to-day content editing is all in Airtable, no code.

How does the Airtable CMS work with Astro? Whenever your content changes, you run pnpm run refresh:airtable. It reads your Airtable tables over the API, turns the linked records into clean URLs, downloads the images, and saves everything as a snapshot in your project. Builds read that snapshot and render static HTML - no Airtable calls at build time, and no live database call per visit, which is why it’s fast and cheap. Commit and push, and the site rebuilds.

Where do I deploy an Astro directory template like this? It’s configured for Cloudflare Workers out of the box (mostly static, so cheap and fast), including automatic deploys every time you push to GitHub. Being standard Astro, it also runs on Netlify or Vercel with their Astro adapter. The forms need a small server runtime, so on a purely static host everything except the forms would work.

Is LocalFinds still maintained? Yes - see recent updates below. Every release lands in the same private repo, with upgrade notes in the changelog.

Recent Updates

“Free updates” only means something if updates actually ship. Here’s what has shipped so far. Buyers get each one with a git pull, and every release comes with upgrade notes:

  • v1.2 (October 2026) - Astro 7. Upgraded to Astro 7, Vite 8 and the latest Cloudflare adapter. Before releasing it, I compared every page against the previous version - text, links, images, SEO tags and structured data all match.
  • v1.1 (October 2026) - security and reliability. Hardened security (secrets read at request time, escaped Airtable content, built-in Cloudflare Turnstile), sturdier forms with clear confirmation messages, support for the latest pnpm, and a new guide for deploying straight from GitHub.
  • May-June 2026. Builds now read a committed Airtable snapshot instead of calling the Airtable API on every build, plus a dev-server fix for pnpm 11.

The Bottom Line

If you want a local directory site powered by Astro that’s fast, cheap to host, owned outright, and re-skinnable for any vertical, this is built for you. It’s the directory I wanted to exist and couldn’t find: not a SaaS you rent forever, not a WordPress build you babysit, but a clean, modern, documented codebase you configure once and reuse.

Live Demo

Try the live demo first. It’s the actual product running in production - if it feels fast and looks right, the code behind it is all yours to use.

▶ View the live demo · Get LocalFinds - $34.99

Lifetime access, free updates, no subscription.

Matt

Do NOT trust review sites. Affiliate commissions dictate their rankings. This is an affiliate site too, but I’m being honest about what I earn and I rank by quality instead of payout. Even if it means I get paid $0. Read about my approach and why I stopped bullshitting. Here’s the raw data so you can fact-check everything.

VPNs | Hosting | Cloud | Tools


Related Posts