Back to Notes
engineering, ai, climbing

I finally built Rock Climbing Portugal. I never wrote a single line of code.

Every independent developer has one of these. The side project that is always "next month." You sketch the schema on a napkin, buy the domain, set up the repo, and then a client calls and the whole thing goes back in the drawer.

This one has been sitting in my head for years.

Rock Climbing Portugal started as a simple itch. Portugal has incredible climbing. Granite walls in Sintra and Peneda-Gerês, limestone in the Coimbra region and south of Lisbon, the sea cliffs of Serra da Arrábida with views that make you forget you are supposed to be sending. Sport crags and bouldering areas scattered across the whole country, many of them unknown even to Portuguese climbers, left undocumented and slowly forgotten. Most climbers outside Portugal have never heard of half of it.

There was no single place online that brought all of it together. No community directory. No proper crag index. Just scattered beta on forums, outdated PDFs, Facebook groups with posts from 2017, and the odd page with three routes and a photo nobody remembers taking.

I wanted to build that place. I just never had the time to actually do it.

The project that kept getting postponed

Every independent developer has one of these. The side project that is always "next month." You sketch the schema on a napkin, buy the domain, set up the repo, and then a client calls and the whole thing goes back in the drawer.

That was rockclimbingportugal.com for me. Every time I carved out a weekend for it, either a consulting engagement pulled me back in, or honestly, the weather was good and I just went climbing instead. I regret nothing about the second reason.

The other blocker was data. Building a crag directory without data is just building an empty table. And scraping, normalising, and structuring climbing data from a dozen disparate sources was genuinely tedious work. Inconsistent formats, broken coordinates, crag names spelled four different ways across four sites. The kind of work that kills momentum before you even get to the interesting parts.

What changed: building fully AI-native

I have been using AI in my workflow for a while now, across client projects and general tooling. But Rock Climbing Portugal was the first project where I went all in on a different role: prompt engineer, not developer.

I did not write a single line of code. Not one.

What I did was write prompts, review commits, and approve PRs. My job was to think clearly about what I wanted, describe it precisely, iterate on the output, and make judgment calls on direction. The implementation was entirely AI-generated.

This felt strange at first. My instinct is always to open a file and start typing. Eighteen years of muscle memory. But stepping back and operating at the architectural and editorial level turned out to be faster and, in a lot of ways, more focused. When you are not in the code, you stay in the problem.

The tech stack that came out of it is deliberately boring, which is a compliment. Next.js with App Router, PostgreSQL, TypeScript end to end, Tailwind for styling, Docker and Docker Compose handling deployments, and a Hetzner VPS with Cloudflare sitting in front. Everything automated with scripts, self-hosted, and running at a cost that would make a Vercel bill blush. Exactly what you want when you are not the one maintaining it line by line.

The part AI genuinely transformed: data

If there is one thing I would highlight as a before and after moment in how I build things, it is scraping and data normalisation.

I used to dread this work. Parsing inconsistent HTML structures across dozens of sites, writing fragile selectors that break the moment someone updates a stylesheet, massaging coordinate formats, deduplicating entries that should be the same place. It is important work, but it is grim work. The kind of task that sits on the list for weeks because starting it feels worse than not having done it.

With AI, that whole category of work changed shape. I described what I needed, pointed at the sources, and iterated on the extraction logic through conversation rather than through trial and error in a terminal. Large messy datasets that would have taken days to wrangle came together in hours. The AI handled the convolution. I handled the judgment calls: which source to trust when they conflict, how to structure the hierarchy, what data was worth keeping.

Portugal has a lot of climbing that deserves to be documented properly. Getting the data layer right was always the foundation. AI made that foundation possible to actually build.

Why this project, why now

Rock Climbing Portugal is part of Tufa.dev, a climbing software studio I have been quietly building alongside my consulting work. The goal is simple: make better tools for climbers. The first is Gora, a mobile app for finding climbing partners worldwide. Rock Climbing Portugal is the community layer underneath it all, a proper home for Portuguese climbing beta that has never really had one.

These projects exist because I genuinely care about the climbing community here, and I think Portugal is underrepresented in the tools and platforms that exist for climbers.

It is also a proof of concept for something I believe more broadly: that the role of the developer is shifting. Not disappearing. Shifting. The ability to think clearly about systems, to communicate intent precisely, to make good architectural decisions, that is still the work. The typing was never really the point.

Rock Climbing Portugal is live at rockclimbingportugal.com. There is more to add, more crags to map, more features to build. But it is out there, which is more than it was last year.

Go explore. Then go climb.

Something to add or contest? I'm always open to technical debate.

Start a discussion