Inspiration
I wanted to find a boulder gym near me and couldn't find a decent German-language directory. Every existing site was either outdated, incomplete, or buried in a general climbing database. The gap was obvious. So I built it.
What it does
Boulderhallenfinder lists 139 boulder gyms across 35+ German cities. You can filter by amenities (kids area, cafe, courses, competition wall), see gyms on a map, and find city-specific landing pages with local context. I also built a blog covering beginner guides, gear comparisons, and technique topics, all in German.
How I built it
I built it entirely with Claude Code. I have no prior web development experience. The stack is Astro for static generation, Airtable as a headless CMS, Tailwind CSS, and Leaflet for maps. I scraped the initial gym data manually, used AI to enrich it with descriptions and amenity detection, then imported everything into Airtable. The site deploys automatically to Vercel on every push.
Challenges I ran into
Three stood out.
Airtable's free plan allows 1,000 API calls per month. I burned through 7,000 in a single month because one page template was fetching data twice per city during the build. I fixed it by restructuring how data flows through getStaticPaths(), dropping from roughly 156 calls per build to 8.
Markdown-rendered tables were breaking the mobile layout. Setting overflow-x: auto on the table itself didn't work as expected. I fixed it by injecting a JS wrapper div around each table at runtime, using max-width: calc(100vw - 2rem) as the key constraint.
GDPR compliance turned out to be a bigger design challenge than I expected. I had to self-host all fonts (no Google CDN), build a cookie consent banner with GA4 Consent Mode v2, add consent checkboxes to every form, and document third-party data processing in the privacy policy. All of it needed to be correct before going live.
Accomplishments that I'm proud of
Getting my amenity detection system from roughly 10% accuracy to 87% across categories. The three-layer detection approach (structured data, review text, AI enrichment) turned what would have been 8 hours of manual work per city into about 5 minutes.
Also just: shipping a GDPR-compliant production site with a real content strategy, as someone who couldn't have written a single line of HTML a year ago.
What I learned
Systems thinking matters more than coding ability in this workflow. My biggest wins came from understanding data flow and spotting where complexity was hiding, not from writing better code. AI removes the implementation bottleneck. It doesn't replace the decisions.
I also learned to start manual before automating anything. Scraping a few gyms by hand first is what made the automated pipeline actually useful.
What's next for Boulderhallenfinder
Individual gym detail pages with full amenity info, photos, and a contact option. A premium listing tier for gyms that want more visibility. Outreach to gym owners for backlinks and data accuracy. And eventually, expanding coverage to Austria and Switzerland.
Built With
- airtable
- astro
- claude
- formspree
- javascript
- leaflet.js
- tailwind-css
- typescript
- vercel

Log in or sign up for Devpost to join the conversation.