How it's built · 2026
A local calendar, built like a local cares.
FranklinWhat is a one-person project. Here's what powers it, where the data comes from, and why some choices look the way they do.
The short version
Static site on GitHub Pages. Twice-daily Python scrapers hit 30 local sources, run them through a deterministic
validator pipeline, and write the events.json the homepage reads at page load (merged with a couple of curated feeds).
Every upcoming evento also gets its own static HTML page with Schema.org Event markup —
that's the SEO piece. The whole site is bilingual (English and Spanish at /es/), ships a 47-spot dining
guide and a dozen field guides alongside the calendar, and installs as an offline-capable app.
Total monthly hosting cost: $0.
The stack
/event/{slug-id}/ with Event + BreadcrumbList JSON-LD. Period pages (/today/, /this-week/, /this-weekend/) carry ItemList markup, the field guides carry FAQPage markup, and restaurants ship Restaurant data. Every page declares its English/Spanish hreflang pair. The sitemap regenerates every run.docs/. GitHub Actions runs the scrapers at 4 AM and 4 PM ET, commits the output, pushes. A separate daily "freshness watchdog" workflow opens a GitHub issue if events.json hasn't been updated in 36+ hours — so silent failures don't stay silent./es/ — built for Macon County's Spanish-speaking residents, not tourists (neutral Latin-American Spanish). The Spanish pages are derived from the English ones at build time rather than maintained by hand, with reciprocal hreflang and an opt-in language toggle.Dónde the eventos come from
Every evento surfaced here comes from a public source. No private Facebook groups. No scraping behind a login. The sources, by drive-time band:
Mi also read the local papers — The Franklin Press and Macon Sense — for community eventos worth surfacing. They cover Macon County better than anyone; go subscribe to them.
Why some choices look this way
No pop-ups. No login wall.
The audience research is clear: small-town NC distrusts both. So the site never throws a modal in your face, never gates content, and never interrupts a first visit. There's one quiet opt-in — a once-a-week "Este fin de semana in Franklin" email — but signing up is never forced: no pop-up, no interstitial, and nothing here is ever locked behind a sign-in.
Why a full Spanish version?
Macon County has a real Spanish-speaking community that lives and works here year-round. The /es/ site is for them — neutral Latin-American Spanish, the whole calendar and every guide, not a tourist phrasebook. English and Spanish stay in lockstep because the Spanish pages are generated from the English ones at build time.
No Facebook scraping.
Facebook's Terms of Service prohibit it, and a meaningful share of the audience hates the idea on principle. Events that only live on Facebook can still get added through the project owner's submission channel — the site just won't scrape Meta's surfaces to get them.
No AI-generated content.
Editorial copy (the field guides, the category landing pages, this page) is hand-written and fact-checked against public sources. AI assisted with the scaffolding and the codebase, but the words on a page about Pickin' on the Square come from the town's own published schedule, not from a language model's training set.
Per-evento pages instead of a SPA modal.
Google's Event rich result requires a single-evento URL. A SPA hides every evento behind one address — invisible to the rich result. Pre-rendering per-evento HTML is the single biggest organic-discovery lift available for a $0 site.
Twice-daily updates, not real-time.
Most local evento listings change weekly, not hourly. Twice-daily is a deliberate budget for both compute and source-site bandwidth. If a real-time signal becomes valuable later, the architecture supports it.
Who built this
Built by Seth — a Franklin local — under his Cruxsmith studio (cruxsmith.com, launching soon). Reach the builder directly at [email protected]. Want a small, fast, SEO-honest site for your shop, project, evento, or community? Say hi — the same stack scales down to a one-page business site or up to a regional aggregator. The codebase is public — have a look.
"Built for the folks who actually live here, not the weekend tourists."
Acknowledgements
Photos & data sourced from each listed venue's public web presence. Schema.org for the JSON-LD vocabulary. The Appalachian Trail Conservancy, USDA Forest Service, and US Census Bureau for the factual baseline. KnoxWhat — the sister site in Knoxville, TN — for the original blueprint.