Skip to content
Original
Reddit · ClaudeCode / Codex / VibeCoding· /u/CoachPuzzleheaded138·· 19 hours agoAI score62

用 Claude Code 搭建聚合 101 个日历源的本地活动站

Original title: Vibe-coded a local events site that pulls from 101 calendars every 6 hours. PHP + SQLite on GoDaddy shared hosting, no framework.

The title and summary in the selected language are awaiting translation.

AI overview

一位系统工程师用 Claude Code 搭建了本地活动聚合站 elmiracorningevents.com,抓取纽约州 3 个县及宾州北部的 101 个日历源,每 6 小时由 cron 运行一次,冷启动全量抓取约 8.5 分钟。

Full text

I live in Elmira, NY, in the Southern Tier, the stretch along the PA line between Corning, Watkins Glen and the Finger Lakes. There's a lot going on here, but it's scattered everywhere. The library posts on LibCal, the brewery on Squarespace, the school district on some app platform, the chamber in a newsletter, the speedway on a racing site, and the glider club on a WordPress page from 2014. The local paper's calendar is behind a wall, and half of everything else is on Facebook. Nobody has the whole picture, so you only find out about things the day after. I wanted one page that answers "what's going on this weekend," so I had Claude Code build something that checks all of those calendars for me.

https://elmiracorningevents.com

Current numbers

  • 101 sources across 3 NY counties and part of northern PA. 21 of them are public libraries.
  • 1,855 listings over the next 90 days, which become 1,767 events after duplicates are merged
  • About 250 events in any given week
  • 159 venues in 36 towns. About a quarter of the events are in PA.
  • About two-thirds of the events are free
  • Library programs are about 65% of everything. I did not see that coming.
  • A cold full run takes about 8.5 minutes, mostly deliberate delays between requests. Cron runs it every 6 hours.
  • About 8,300 lines of PHP, JS and CSS. No framework, no Composer, no npm, no build step.
  • Costs: hosting I already had and a domain. No AI calls at runtime.

How it works

  • Each source is one entry in a PHP array with a fetch function. Most reuse a generic reader: WordPress Events Calendar REST, ICS/Google Calendar (with full recurring-event support), Squarespace, Wix, ChamberMaster, Tockify, a school-district platform, JSON-LD, RSS. About 20 odd sites get a custom HTML parser.
  • Everything goes into one SQLite table, keyed on source + source ID. If a source stops listing an event, the event gets deleted, so cancellations mostly handle themselves.
  • Duplicates are merged when the page is displayed, not when data is stored. Two events match if their dates overlap and their titles overlap at least 60% by word. Two different known venues never merge, and common events like trunk-or-treats and farmers markets never merge across towns. A venue's own listing beats the chamber's, which beats the tourism site's, and the winner fills in missing images and prices from the copies it absorbed.
  • Geography was the surprise hard part. Troy, Athens, Canton and Tioga exist in both NY and PA, so those PA names only count when there's a PA ZIP code or ", PA" in the listing.
  • Local TV news RSS gets matched to events as "In the news" links. Radio station community posts come in as leads, and the clean ones get approved automatically.
  • The admin page tracks each source's health: ok, quiet (seasonal, like the speedway in October), warning, failing, or dead after 3 days. That's what keeps 101 scrapers maintainable.
  • Visitors get filters by town, day, category and free, plus pages for each event, town and venue. There are also RSS feeds and subscribable calendars for the whole area or a single town, and seasonal themes: gliders in spring (Elmira is the "Soaring Capital of America"), Seneca Lake in summer, foliage in fall, snow in winter.

No ads, no accounts, no cookies. Visitor stats are cookieless and only I see them. Organizers can submit events for free.

I'm a systems engineer, not a web dev. I can read the code and argue about architecture, but I wouldn't have built 18 phases of this by hand on nights and weekends.

Feedback welcome!

Source: Reddit · ClaudeCode / Codex / VibeCoding · reddit.com