← All projects

Full-stack

Local Events App

A location-based concert discovery app. Search live music near you by artist, genre, date and price, backed by the JamBase catalog through a FastAPI backend that smooths over the API’s quirks.

Local Events app showing live music events near Los Angeles as image cards
Type
Solo project
Category
Full-stack
Stack
FastAPI · React · Vite · JamBase API · Claude Code

How it fits together

Architecture diagram: React + Vite app and FastAPI router (search ⇄ events); FastAPI router to JamBaseClient (search); JamBaseClient to JamBase Data API (request per genre); JamBaseClient to Open-Meteo (geocode, cached)

The server adapts JamBase for the UI: it geocodes locations, sends one concurrent request per selected genre, merges and de-duplicates the results, and turns upstream errors into readable messages.

The problem

Finding a good show means jumping between venue sites and ticketing pages. This app puts live music near you in one searchable, filterable place, and the backend absorbs the awkward parts of the JamBase API so the interface can stay simple.

Approach

  • A FastAPI backend acts as a thin adapter over JamBase. It owns geocoding, parameter mapping, response normalization and error translation, so the React frontend consumes one stable shape
  • Location comes from browser geolocation or any typed city or ZIP. Free-text locations are geocoded with Open-Meteo and cached, since JamBase only accepts coordinates
  • Search by artist (debounced) within 10, 25, 50 or 100 miles, with filters for date (including a day-aware “This weekend”), genre across 15 options, and price, all in one dropdown with an active-count badge
  • Event cards show the image, headliner and support acts, venue, date and time, distance, genre tags, price range and a direct ticket link; cancelled shows are labelled rather than hidden
  • Results are paginated with Load more and a running event count. A mock-data mode lets the app run without hitting the API. Scaffolded with Claude Code

Highlights

  • Search by location, artist, date, genre and price
  • Backend handles API limits: coordinates-only locations, one genre per request, errors returned as HTTP 200
  • Documented REST API with interactive FastAPI docs
  • Mock-data mode for development without API calls