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.
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.
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.
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...
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Explore the project in detail.
Each major technical aspect of the project has its own page. Pick what interests you.
Architecture
4 sub-projects, 5 CI/CD pipelines, Vercel + Hetzner infra, merge gates, and every technical decision explained.
The Copilot Loop
My AI development methodology. 10 phases, a loop that refines itself with every iteration.
Design System
Tokens, gold/copper/warm-rose palette, two font pairings, live component gallery, white-label vision.
Technical SEO
7 JSON-LD schemas, Sitemap Index per language, hreflang, bot detection, Lighthouse CI.
Deployment Monitor
Live dashboard with metrics from every deploy: tests, E2E, Lighthouse, trends per release.
Case Study: Shop
The full e-commerce case study: decisions, implementation, and results.
OpenClaw + Jira
Coordinator agent that reviews Jira, classifies requests, and orchestrates execution with Claude Code.
Let's talk
Drop me a note — questions, feedback, or just want to say hi.