C.SWEENEYFRONTEND ENGINEER
Start a project
← All work

Personal project · Full-Stack Web App

LocalEvents

Event listings for the Raleigh-Durham area were scattered across a dozen city and venue sites. I built LocalEvents, a full-stack aggregator that pulls listings from ticketing APIs and city calendars into one searchable, map-based feed with saved events, email/SMS digests, and a moderated edit workflow.

Context

Finding out what’s happening nearby in the Triangle (Raleigh, Durham, Chapel Hill) means checking Ticketmaster, SeatGeek, Bandsintown, and a handful of city and venue calendars separately, since no single site aggregates them. I built LocalEvents to pull those sources together into one place people could search by location and date.

The problem

Beyond simply aggregating feeds, the harder problems were: reconciling event data that arrives in different shapes from every source, avoiding duplicate listings when the same show appears on multiple platforms, and giving the community a way to fix bad data (wrong venue, stale listing) without opening write access to everyone.

What I built

  • A Go API (chi router, PostgreSQL/pgx) that normalizes events and venues from Ticketmaster, SeatGeek, Bandsintown, and several city/tourism sites into a shared schema, with scheduled scraper jobs run via cron.
  • Geospatial + full-text search over events and venues, with a pgvector-backed embedding store for semantic matching alongside standard filters (location radius, date range, category, venue).
  • A React/TanStack Start front end with Mapbox for location search and browsing, Clerk for authentication, and role-based access (user, author, admin) enforced by the API.
  • A suggestion/review pipeline: any signed-in user can propose an edit to an event or venue; authors and admins approve or reject changes to their own listings, and admins can moderate anything.
  • Notifications: opt-in email and SMS digests (Twilio, with STOP/START compliance handling) built on each user’s saved location and category preferences, plus R2-backed image uploads for user-submitted photos.

Outcome

LocalEvents runs as a deployed Go service with a Postgres database, a React front end, and an admin dashboard for reviewing author applications, edit suggestions, and platform stats — replacing the “check five different sites” experience with one searchable feed.