Building in public · 2026
🍺 Buy me a beer

It's not a portfolio. It's a laboratory in production.

CuevasLab is a real project deployed to production: four sub-projects, five CI/CD pipelines, six languages, and an AI development methodology built from practice. These pages explain and show the different problems I've encountered along the way — in case it helps someone.

4 sub-projects
+300 tests
+25 releases
6 languages

In case you don't know me. I'm Andrés Cuevas, a Product Owner with a technical background who likes to understand the "why" behind every problem. This project was born from my curiosity and desire to dive into the world of AI to understand how it works and how far it can be genuinely helpful. Here I try not to show theory... or official docs... or Claude Code cheatsheets... I try to share not just what can be done, but how it works.

Why this project exists.

I've always been a restless person who likes to learn new things and experiment. But I don't like learning without a real context, without a concrete project to apply what I'm learning. I don't like theory without practice, or practice without real consequences.

CuevasLab serves that purpose. It's a portfolio built in public and a laboratory where every experiment has real consequences: code in production, real users, pipelines that fail if the code isn't good enough.

From a landing page to an ecosystem.

When I started playing with AI, the first idea was simple: let's build a portfolio, a static page to test what AI can do. With my €20/month Claude Code subscription... let's see what happens. And I think it's getting out of hand.

Phase 1 — The landing

A portfolio in one afternoon

With Lovable we created the design and tweaks, and in one afternoon we had the site up. A GitHub repository, a domain, Vercel for deployment, and not much else. But it felt too easy.

Phase 2 — Not enough

Mini-games, cookies, analytics

It was so smooth and simple that I decided to explore further. The idea of mini-games on the homepage came up — a bit more challenging, but still straightforward. In one weekend we had static pages, to which we gradually added features: several mini-games, cookie scripts, the CV, analytics...

Phase 3 — The e-commerce

Same thing happened... I needed more... and that's when it hit me: all these years maintaining other people's e-commerce and I've never had my own.

That's when I started writing down the strengths of my previous projects and defining how I wanted it to be. Above all with one rule: "don't spend money." And that's how we started: headless backend with Medusa.js on a Hetzner VPS, storefront with Next.js, PostgreSQL, Redis, Docker Compose, Nginx with SSL. From zero to production.

Phase 4 — Content

Strapi v5 as headless CMS

One of the main problems I've always had in my projects has been content and how to make it follow the same format as the store without breaking the design. So in CuevasLab, content is no longer hardcoded. Strapi manages home blocks in 6 languages, static page layouts with dynamic zones, and SEO metadata. The CMS runs in Docker alongside the backend.

Phase 5 — The methodology

The Copilot Loop

From daily practice with Claude Code came the need for a methodology, a development framework, to unify how we develop. It currently has 10 phases. Not theory — each phase has a skill that automates it, and each skill was created and refined through real use in this very project.

Phase 6 — Quality

Tests, CI/CD, merge gates

Yes... I know... rookie mistake... leaving tests for last. But I was so excited about everything I could do, and the speed at which I could do it... that I didn't think about tests. Now we have over 300 tests (unit + E2E), Lighthouse on every deploy. Strict merge gates: nothing reaches production without green tests, green CI on staging, and a version tag.

Phase 7 — Automation

OpenClaw + Jira

The natural next step: a coordinator agent that reviews Jira requests, classifies them as bugs or stories, and orchestrates execution with Claude Code. Maximum automation, with the human validating via PRs.

Four pieces, one ecosystem.

Each sub-project has its own stack, CI/CD pipeline, and independent lifecycle. But they all share a domain, visual identity, and quality standards.

Diagrama de arquitectura full-stack de CuevasLab

web/ — This portfolio

What you're reading now. Static HTML, vanilla CSS design system, mini-game arcade, interactive case study, live deployment dashboard. cuevaslab.es → Vercel.

storefront/ — The shop

Next.js with TypeScript. 6 languages, 7 JSON-LD schemas, WCAG AA accessibility, optimized LCP. Over 300 tests (unit + E2E). Automatic staging. shop.cuevaslab.es → Vercel.

shop/ — The backend

Medusa.js with PostgreSQL 15 and Redis 7. Docker Compose with Nginx reverse proxy and automatic SSL. shop-backoffice.cuevaslab.es → Hetzner VPS.

cms/ — Content

Strapi v5 managing home, page snippets, full static pages and SEO metadata in 6 languages with dynamic zones. cms.cuevaslab.es → Hetzner VPS.

Beyond the code.

CuevasLab is not about proving I can code — I mostly stepped away from that a while ago. It's about showing how I think, how I make decisions, and how I balance speed with quality when both matter.

01

Full-stack vision

From static HTML to Docker on VPS. Frontend, backend, databases, CI/CD, infra, SEO, observability. I understand how the pieces fit together — not just how to use each one separately.

02

Product mindset

Every feature has a why and a scope. Nothing gets built just because. Real prioritization, explicit trade-offs, scope freezes after planning. The work of a PO who also writes understands code.

03

Quality as a habit

Over 300 tests. Lighthouse on every deploy. Merge gates that don't get skipped. Semantic versioning on every release. Quality isn't a phase at the end — it's how you work from the first commit.

04

AI as a professional tool

Claude Code doesn't generate magic code. It's a copilot with which I've developed a structured and repeatable methodology. The Copilot Loop documents how I integrate AI into a real workflow.

This isn't over.

CuevasLab is a living project. Each iteration adds depth. These are the open threads.

Product reviews ✓

Shipped in v1.22–v1.23. Full system with user reviews, AI summaries, AggregateRating in JSON-LD, and backoffice moderation. Stars visible in Google.

ISR + Revalidation ✓

Shipped in v1.24. ISR (Incremental Static Regeneration) on catalog pages, shared cache, and /api/revalidate endpoint with Medusa webhooks. Reduced Vercel Functions CPU time.

Documentation i18n

All these pages in English and Spanish, using the same i18n engine as the portfolio.

Regression alerts

Automatic notifications when Lighthouse drops or E2E tests fail. Active observability, not passive.

GSO — Generative Search Optimization

Optimize content to appear in AI-generated answers (ChatGPT, Gemini, Perplexity). The natural evolution of technical SEO.

PWA + Push Notifications

PWA manifest for installability and OneSignal for push notifications. The storefront as a native app.

Home
Storefront home page — hero, collections, featured products
Category
Product listing page — category grid with filters
Product
Product detail page — images, variants, reviews, related products

Explore the project in detail.

Each major technical aspect of the project has its own page. Pick what interests you.

Let's talk

Drop me a note — questions, feedback, or just want to say hi.

Message sent! I'll get back to you soon.

Something went wrong. Please try again.