# Santiago Gómez de la Torre Romero · sgomez.dev

> The whole content of sgomez.dev in markdown, in English. The short summary is at https://sgomez.dev/en/llms.txt.

---

# Santiago Gómez de la Torre Romero

> Full-stack engineer who takes AI to production, not to demos. Creator of NudaUI and of a live semantic search over its catalog.

Santiago Gómez de la Torre Romero is a full-stack engineer who takes AI to production. Co-founder of SkyQuetz Consulting, creator of NudaUI and of a live semantic search (RAG) over its catalog. Developer at Evenbytes and organizer of GDG Santander.

Canonical URL: https://sgomez.dev/en

## Profile

- Role: Full-Stack Engineer (AI/LLM), at Evenbytes.
- Co-founder of SkyQuetz Consulting (https://skyquetz.com). Co-founder, one of four partners, not the sole founder.
- Co-founder of Forgia (https://forgia.es). Co-founder, one of two partners, leading the whole technical side.
- Location: Santander, Cantabria, Spain. I work remotely.
- Contact: contact@sgomez.dev

## Projects

- **Claude Canvas**: A Claude Code plugin that gives Claude a display of its own. It opens an interactive terminal pane beside the conversation, you act in it, and your answer comes back as an exact value instead of prose the model has to interpret. Nine canvas kinds (picker, form, table, image, diff, dashboard, calendar, document, flight), one length-prefixed JSON transport over a local socket, and CI on Linux, macOS and Windows. It is a fork of David Siegel's proof of concept, extended at length, with one IPC layer where there had been two incompatible ones, reusable primitives, composition, more than 600 tests and CI on three operating systems where there had been none. (TypeScript, Bun, React, Ink, tmux) https://claude-canvas.sgomez.dev Case study: https://sgomez.dev/en/work/claude-canvas
- **NudaUI Semantic Search (RAG)**: Natural-language search over 1,000+ NudaUI components. A complete RAG pipeline with no RAG frameworks. It includes embeddings with Voyage, cosine retrieval, evaluation with its own golden set, a FastAPI service and a live UI. He raised first-result precision from 67% to 80% (hit@1) and reported even the category that got worse. (RAG, Embeddings, Python, FastAPI, Evals) https://blog.sgomez.dev/rag-busqueda-semantica-nudaui Case study: https://sgomez.dev/en/work/nudaui-semantic-search-rag
- **NudaUI**: Open-source library of more than 1,500 copy-paste UI components and animations, framework-agnostic (HTML + CSS, JS only when needed), organized in 81 categories. Zero dependencies, zero build. Creator and sole maintainer. (Next.js, TypeScript, CSS, framework-agnostic) https://nudaui.dev Case study: https://sgomez.dev/en/work/nudaui
- **EliteEstate Manager**: Complete real estate management PWA with authentication, properties, appointments, zones and an admin panel. End-to-end project for a real client. (React, Vite, Firebase, TailwindCSS) https://elite-estate-manager.vercel.app/
- **GeekLab**: Full-stack e-commerce of IT products with an advanced catalog, persistent cart, real-time forum with WebSockets, GraphQL API and admin panel. (Svelte 5, Node.js, Express, MongoDB, GraphQL, Socket.io) https://github.com/sgomez-dev/GeekLab
- **SyncCart**: Chrome extension that unifies shopping carts from multiple stores (Amazon, PcComponentes, MediaMarkt) in a single interface with a budget calculator. (Plasmo, React 18, TypeScript, Chrome APIs) https://github.com/sgomez-dev/SyncCart
- **Sortlab**: Interactive visualizer of 15 sorting algorithms with dynamic animations and structured explanations. (React, TypeScript, Framer Motion) https://sortlab.sgomez.dev
- **Docs - SGOMEZ**: Visual documentation of his technology stack with a galaxy-themed interface. (React, Vite, TailwindCSS, Framer Motion) https://docs.sgomez.dev
- **CorvexTalk.AI**: Translation chat powered by artificial intelligence. Deployed with Docker and a CI/CD pipeline in Jenkins. (Node.js, JavaScript, Docker, Jenkins) https://corvex-talk-ai.vercel.app
- **sgomez CLI**: CLI published on npm to initialize frontend and backend projects with multiple frameworks. (Node.js, npm) https://www.npmjs.com/package/sgomez-cli
- **Skyzen**: Real-time weather app with geolocation and extended forecast. (React, Vite, TailwindCSS, Framer Motion) https://skyzen.sgomez.dev
- **Galardón**: Web app to create and share digital graduation invitations. (Vue, TypeScript, CSS) https://galardon-gamma.vercel.app

## Pages

- [About me](https://sgomez.dev/en/about)
- [Contact](https://sgomez.dev/en/contact)
- [Portal for developers and agents](https://sgomez.dev/en/developers)
- [Privacy](https://sgomez.dev/en/privacy)

## For agents

- [llms.txt](https://sgomez.dev/en/llms.txt): `text/markdown`
- [llms-full.txt](https://sgomez.dev/en/llms-full.txt): `text/markdown`
- [agents.md](https://sgomez.dev/en/agents.md): `text/markdown`
- [openapi.json](https://sgomez.dev/openapi.json): `application/json`
- [openapi.yaml](https://sgomez.dev/api/openapi.yaml): `application/yaml`
- [sitemap.xml](https://sgomez.dev/sitemap.xml): `application/xml`
- [robots.txt](https://sgomez.dev/robots.txt): `text/plain`
- [manifest.webmanifest](https://sgomez.dev/manifest.webmanifest): `application/manifest+json`
- Public API: `GET https://sgomez.dev/api/v1/profile`

---

# About Santiago Gómez de la Torre Romero

> Full-stack engineer in Cantabria, Spain. I take AI to production, not to demos. Co-founder of SkyQuetz Consulting and creator of NudaUI.

Santiago Gómez de la Torre Romero is a full-stack engineer at Evenbytes, co-founder of SkyQuetz Consulting, creator of NudaUI and organizer of GDG Santander. This page covers his career, his education and what he works on today.

Canonical URL: https://sgomez.dev/en/about

## Who I am

My name is Santiago Gómez de la Torre Romero and I'm a full-stack engineer. “Gómez de la Torre” is a compound surname, not separate surnames. I live in Cantabria, Spain, and work remotely. Today I build software at Evenbytes with Angular, Node.js and Google Cloud, and in 2026 I co-founded SkyQuetz Consulting with three more partners, where I handle the engineering.

Some people come to technology by chance. I didn't. I have always been hooked on understanding how everything works on the inside: how a service gets deployed, why a system fails, what makes an interface flow or break. Over time, that curiosity stopped being an impulse and became my way of working, which is to understand in order to build and to build in order to improve.

My career combines systems administration, web development and cloud architecture. I started at FUNIBER on the technical writing team, moved on to sysadmin and QA, continued as an IT support technician at Universidad Europea del Atlántico (where I am also studying Computer Engineering) and since June 2025 I have been a developer at Evenbytes. That mix of running systems before writing them is why I care as much about deployment and observability as about code.

## What I work on now

I build AI that reaches the product, not just demos. I design systems that can be measured. I use RAG pipelines with embeddings and cosine retrieval, evaluation with my own golden sets, and language models integrated into the real product. NudaUI's semantic search answers in natural language over more than 1,000 components, and with my own evals I raised first-result accuracy from 67% to 80% (hit@1), also reporting the category that got worse. I also run a B2B conversational assistant built on the Claude API in production. All of this without magic frameworks, understanding every piece of the pipeline.

In 2026 I co-founded SkyQuetz Consulting with three more partners, a custom software consultancy for Spanish-speaking businesses, fully remote and with no intermediaries. I am a co-founder, one of four partners, not the sole founder. I handle the engineering, and two in-house products have come out of it: Synentria, an SEO and GEO audit engine whose findings are deterministic and not decided by any model, and Packatrack, a settlement reconciliation SaaS for last-mile operators.

And when I'm not building for clients, I build for the community. I am the creator and sole maintainer of NudaUI, an open-source library with more than 1,500 copy-paste UI components in 81 categories that work in any framework, and of sgomez-cli, a tool published on npm to start full-stack projects with a single command. I also organize events with GDG Santander and have competed in Hack2Progress.

The third is Claude Canvas (https://claude-canvas.sgomez.dev), a Claude Code plugin that gives the model a screen of its own. It opens an interactive terminal pane beside the conversation (you pick a file, approve a diff hunk by hunk, fill in a form) and your answer comes back to it as an exact value instead of prose it has to interpret. There are nine pane kinds, a transport of its own over a local socket, more than 600 tests and CI on Linux, macOS and Windows. I started from David Siegel's proof of concept (https://github.com/dvdsgl/claude-canvas), which he published as an unsupported proof of concept, and took it to something that holds up under daily use. I say this every time I tell the story. The idea is his, the license is MIT and it keeps his copyright. It is a project of mine, not a SkyQuetz Consulting product.

## Career

- **2021** · Getting Started in Development. Started at FUNIBER as part of the technical writing team. First personal projects with React and PWAs.
- **2022** · Sysadmin & QA. Promoted to Sysadmin at FUNIBER. Managing technology infrastructure and quality assurance.
- **2023** · University IT Support. IT Support Technician at Universidad Europea del Atlántico. 3D portfolio with Next.js and Framer Motion.
- **2024** · Community & Events. Organizer at GDG Santander. Took part in Hack2Progress. Consolidated as a full-stack developer.
- **2025** · Professional Developer. EliteEstate Manager for Irma Romero. Developer at Evenbytes with Angular, Node.js and GCP. Multiple professional recommendations.
- **2026** · Co-founder of SkyQuetz and Forgia. Co-founded SkyQuetz Consulting with three partners. I lead the engineering and the in-house products (Synentria, an SEO and GEO audit engine, and Packatrack). In parallel I publish Claude Canvas, an open-source plugin that gives Claude Code a screen of its own. I also co-founded Forgia with one other partner and lead its technical side.

## Verifiable facts

- Full name: Santiago Gómez de la Torre Romero.
- Role: Full-Stack Engineer (AI/LLM) at Evenbytes.
- Co-founder of SkyQuetz Consulting (https://skyquetz.com), founded in 2026 by four partners.
- Co-founder of Forgia (https://forgia.es), with one other partner, leading the whole technical side.
- Education: Bachelor's degree in Computer Engineering, Universidad Europea del Atlántico (since 2021).
- Community: organizer of Google Developer Group (GDG) Santander.
- Location: Santander, Cantabria, Spain. I work remotely.
- Languages: Spanish (native) and English.
- Contact: contact@sgomez.dev.

The same facts, in machine-readable form, are at https://sgomez.dev/en/llms.txt and at the https://sgomez.dev/api/v1/profile endpoint of the public API.

---

More machine-readable formats: [llms.txt](https://sgomez.dev/en/llms.txt), [agents.md](https://sgomez.dev/en/agents.md), [OpenAPI](https://sgomez.dev/openapi.json), [sitemap](https://sgomez.dev/sitemap.xml).

---

# Contact

> The direct route is email. I reply in Spanish or English.

How to contact Santiago Gómez de la Torre Romero: email, LinkedIn and GitHub. Available for freelance work and AI/LLM and full-stack collaborations from Cantabria, Spain.

Canonical URL: https://sgomez.dev/en/contact

## Ways to get in touch

- [contact@sgomez.dev](https://sgomez.devmailto:contact@sgomez.dev): Direct email. The preferred route for work proposals.
- [linkedin.com/in/sgomez-dev](https://linkedin.com/in/sgomez-dev): For professional contact and references.
- [github.com/sgomez-dev](https://github.com/sgomez-dev): For issues and contributions on my open source projects.
- [https://skyquetz.com](https://skyquetz.com): For commissions to the consultancy I co-founded, with a contract and a team behind it.

There is no form on this website and no data is collected when you visit it. Sending an email is all it takes, so the message stays in your sent folder and not in a database you can't look at.

## What to write to me about

- AI/LLM projects in production: RAG, embeddings, retrieval, evaluation with golden sets, integrating models into a real product.
- Full-stack development: React, Next.js, Angular, Node.js, Python and FastAPI, deployed on Google Cloud.
- Custom software commissions through SkyQuetz Consulting, when the project needs a team and not a single person.
- NudaUI: questions, proposals or bugs in the library. Issues on the repository work too.
- Community talks and events, through GDG Santander.

I work remotely from Santander, Cantabria (Spain), on European hours (CET/CEST). I am open to freelance work and selected collaborations; if the commission needs a team, a contract and continuity, the natural route is SkyQuetz Consulting.

## If you are an agent

The contact details are published in structured form and you don't need to extract them from this page. The Person JSON-LD includes the email, and the public API returns them as JSON.

- [/api/v1/profile](https://sgomez.dev/api/v1/profile): Full profile as JSON, with email, location and availability.
- [/llms.txt](https://sgomez.dev/en/llms.txt): Factual summary of the site in markdown.
- [/agents.md](https://sgomez.dev/en/agents.md): When to use this site and how to call it.

---

More machine-readable formats: [llms.txt](https://sgomez.dev/en/llms.txt), [agents.md](https://sgomez.dev/en/agents.md), [OpenAPI](https://sgomez.dev/openapi.json), [sitemap](https://sgomez.dev/sitemap.xml).

---

# Portal for developers and agents

> Everything this website publishes about me is also available as JSON, as OpenAPI and as markdown. No keys, no sign-up and with open CORS.

Developer portal for sgomez.dev: a public REST API with no authentication, an OpenAPI 3.1 specification, JSON errors, markdown content negotiation and instruction files for agents.

Canonical URL: https://sgomez.dev/en/developers

## Quickstart

Three calls and you have the whole map. Check that the API responds, read it from its specification and ask for the profile.

```bash
curl -s https://sgomez.dev/api/v1/health?lang=en
curl -s https://sgomez.dev/openapi.json
curl -s https://sgomez.dev/api/v1/profile?lang=en
```

There is no separate sandbox or test keys, because the API is read-only and all of its content is already public, so the production environment IS the test environment. There is nothing you can break with a GET. The API answers in Spanish by default and accepts `?lang=en` or `Accept-Language: en` for English.

## Endpoints

| Method and path | operationId | What it returns |
| --- | --- | --- |
| GET /api/v1/health | getHealth | Service status and entry links. |
| GET /api/v1/profile | getProfile | Identity, role, location, contact and availability. |
| GET /api/v1/about | getAbout | Long biography and year-by-year timeline. |
| GET /api/v1/projects | listProjects | Published projects, with stack and link. |
| GET /api/v1/projects/{slug} | getProject | A single project by its slug. |
| GET /api/v1/experience | listExperience | Positions, organizations and periods. |
| GET /api/v1/skills | listSkills | Technologies by category, with years of use. |
| GET /api/v1/certifications | listCertifications | Certifications with a link to the credential. |
| GET /api/v1/education | listEducation | Formal education. |
| GET /api/v1/recommendations | listRecommendations | Recommendations written by colleagues and clients. |
| GET /api/v1/search?q= | searchContent | Keyword search over all of the above. |

Collections accept `limit` (1-100) and `offset` (0-1000). `search` accepts `q` (required) and `limit` (1-50). Every successful response is wrapped in `{ "data": …, "meta": … }`, and `meta` includes `count`, `total`, `self` and `documentation_url`.

## Errors

Errors are JSON too, always in the same envelope. `code` is stable and can be used in a `switch`; `hint` says what to do to fix it, which is what an agent lacks when it gets an empty 404.

```json
{
  "error": {
    "status": 404,
    "code": "not_found",
    "message": "No project with slug \"nope\".",
    "hint": "Known slugs: nudaui, sortlab, … List them with GET /api/v1/projects.",
    "documentation_url": "https://sgomez.dev/developers"
  }
}
```

- `400 invalid_parameter`: a parameter is missing or out of range.
- `404 not_found`: the resource or the endpoint does not exist. Any unknown route under /api responds with JSON, never HTML.
- `405 method_not_allowed`: the API is read-only; the response includes the `Allow` header.

## Authentication and limits

There is no authentication or API keys because there is no private data behind it, so a key would only be red tape. There is no per-client rate limit either, beyond the CDN's ordinary protection. In exchange, responses are served cached (`Cache-Control: public, max-age=300, s-maxage=3600`). If you need the whole catalog, one call per collection is enough, and repeating the same call in a loop won't give you fresher data.

CORS is open to any origin (`Access-Control-Allow-Origin: *`) for GET, HEAD and OPTIONS, so the API can be called from the browser. The data is published under the CC BY 4.0 license, so you can use it with attribution.

## OpenAPI specification

The specification is OpenAPI 3.1 and is generated from the same code that serves the endpoints, so it cannot describe a route that no longer exists. Each operation has a unique `operationId`, a `summary`, a `description`, typed parameters and a response schema per status code, which is exactly what a function-calling client needs to turn it into tools.

- [/openapi.json](https://sgomez.dev/openapi.json): Canonical location.
- [/api/openapi.json](https://sgomez.dev/api/openapi.json): The same document under /api.
- [/api/openapi.yaml](https://sgomez.dev/api/openapi.yaml): The same document as YAML.

## Markdown for agents

Content pages are served as markdown when the request asks for it, following the acceptmarkdown.com convention. The canonical URL does not change and the response carries `Vary: Accept`, so a CDN does not hand an agent the HTML variant it cached for a browser.

```bash
curl -s -H "Accept: text/markdown" https://sgomez.dev/en/about

# or, if you prefer an explicit URL:
curl -s https://sgomez.dev/en/about.md
```

It works on `/`, `/about`, `/contact`, `/privacy` and `/developers`, and on their English twins under `/en/…`. Routes that are already markdown (`/llms.txt`, `/agents.md`) are served as they are. A route that does not exist returns 404 with a markdown body that says where to go, instead of an error page an agent can't read.

## Files for agents

- [/llms.txt](https://sgomez.dev/en/llms.txt): Factual summary of the site, with the “when to use this” section.
- [/agents.md](https://sgomez.dev/en/agents.md): Usage instructions covering what this site is for and how to call it.
- [/sitemap.xml](https://sgomez.dev/sitemap.xml): All published URLs.
- [/robots.txt](https://sgomez.dev/robots.txt): AI crawlers explicitly allowed.
- [/manifest.webmanifest](https://sgomez.dev/manifest.webmanifest): Web app manifest.

## Versioning

The version is in the path (`/api/v1`). Within v1 only fields and endpoints are added, because removing a field or renaming an `operationId` would be a breaking change and would ship as `/api/v2`. Error `code` values are part of the contract and are not renamed.

---

More machine-readable formats: [llms.txt](https://sgomez.dev/en/llms.txt), [agents.md](https://sgomez.dev/en/agents.md), [OpenAPI](https://sgomez.dev/openapi.json), [sitemap](https://sgomez.dev/sitemap.xml).

---

# Privacy policy

> In short, sgomez.dev sets no cookies, runs no analytics and has no forms. There is no data of yours that I can look at.

sgomez.dev collects no data of its own. No cookies, no analytics and no forms. It covers hosting, external links and data protection rights.

Canonical URL: https://sgomez.dev/en/privacy

## Data controller

The person responsible for this site is Santiago Gómez de la Torre Romero, in Santander, Cantabria (Spain). For any question about this policy, the channel is contact@sgomez.dev. This site is a personal portfolio that sells nothing, registers no users and has no private area.

## What is NOT collected

- First-party cookies: none. The site writes no cookies and does not use localStorage or sessionStorage to track you.
- Analytics: none. There is no Google Analytics, no Tag Manager, no Plausible and no other measurement script.
- Forms: none. Contact is a mailto link, so the message leaves from your email client and does not pass through this server.
- Advertising and profiling: none. No data is sold or shared, because there is no data to share.
- Remote fonts: none. Next.js downloads Inter Tight and Instrument Serif at build time and the site serves them from this same domain, so your browser requests nothing from a third party to render the page.
- Third-party images: none. The server fetches and optimizes the blog post covers and serves them from this same domain, so your browser requests nothing from third parties to show them.

## What does happen, and worth knowing

The site is hosted on Vercel. Like any web server, its infrastructure logs the requests it receives (IP address, user agent, requested path, date and time) to serve the page and protect itself from abuse. Those logs are generated and kept by the hosting provider under its own policies, not by a tool I installed, and I do not use them to identify anyone or cross them with any other source.

If you email me, I process your address and the content of the message for the sole purpose of replying and, where applicable, managing the professional relationship that follows. The legal basis is your own request (legitimate interest and, where relevant, performance of a contract). I do not use that address to send you commercial communications and I keep the email only for as long as the conversation makes sense.

The site links to third-party sites (GitHub, LinkedIn, npm, Google Drive for the certificates). When you follow one of those links you leave sgomez.dev and that third party's privacy policy applies.

## Your rights

Under the General Data Protection Regulation (EU) 2016/679 and Spain's Organic Law 3/2018, you can exercise your rights of access, rectification, erasure, objection, restriction of processing and portability by writing to contact@sgomez.dev. In practice, if you have never written to me I hold no data of yours to rectify or erase. If you believe the processing does not comply with the rules, you can complain to the Spanish Data Protection Agency (aepd.es).

This policy will be updated if the site ever adds analytics, forms or any other processing. As long as the text says what it says, it is because there are none. You can check for yourself, because the code of this website is public at github.com/sgomez-dev.

---

More machine-readable formats: [llms.txt](https://sgomez.dev/en/llms.txt), [agents.md](https://sgomez.dev/en/agents.md), [OpenAPI](https://sgomez.dev/openapi.json), [sitemap](https://sgomez.dev/sitemap.xml).

---

# Claude Canvas, case study

> Claude Canvas is a project by Santiago Gómez de la Torre. This case study covers the problem it solves, what his role was and what came of it.

Canonical URL: https://sgomez.dev/en/work/claude-canvas

Updated on 2026-10-02

## The problem

In Claude Code, when Claude needs you to pick a file, approve a change or fill in some details, your answer comes back as prose that Claude has to interpret. Claude Canvas opens an interactive pane next to the conversation and returns your answer as an exact value.

## My role

I forked it from David Siegel's proof of concept and extended it substantially. I left a single IPC layer where there had been two incompatible ones and added reusable primitives, composition and nine canvas types (picker, form, table, image, diff, dashboard, calendar, document and flight).

## Stack

- TypeScript
- Bun
- React
- Ink
- tmux

## The outcome

Nine canvases, more than 600 tests and CI on three operating systems. It works in kitty, Ghostty, iTerm2, WezTerm, foot, Windows Terminal and xterm. For images, quadrant blocks give 61% less error than half blocks. Released under the MIT license.

## Links

- [Source](https://claude-canvas.sgomez.dev)
- [Repository](https://github.com/sgomez-dev/claude-canvas)
- [Based on dvdsgl/claude-canvas, by David Siegel](https://github.com/dvdsgl/claude-canvas)

## More case studies

- [NudaUI Semantic Search (RAG)](https://sgomez.dev/en/work/nudaui-semantic-search-rag)
- [NudaUI](https://sgomez.dev/en/work/nudaui)

---

More machine-readable formats: [llms.txt](https://sgomez.dev/en/llms.txt), [agents.md](https://sgomez.dev/en/agents.md), [OpenAPI](https://sgomez.dev/openapi.json), [sitemap](https://sgomez.dev/sitemap.xml).

---

# NudaUI Semantic Search (RAG), case study

> NudaUI Semantic Search (RAG) is a project by Santiago Gómez de la Torre. This case study covers the problem it solves, what his role was and what came of it.

Canonical URL: https://sgomez.dev/en/work/nudaui-semantic-search-rag

Updated on 2026-10-02

## The problem

NudaUI had 1,022 components and keyword search could not find what people described, so “a loader with dots” never led to “Pulse Dots”. It needed search by meaning.

## My role

I built the full RAG pipeline without RAG frameworks, with Voyage embeddings, hand-written cosine similarity, a FastAPI service deployed on Vercel and my own golden set of 45 queries across 15 categories, labelled by hand, to measure every change.

## Stack

- RAG
- Embeddings
- Python
- FastAPI
- Evals

## The outcome

Adding each component's CSS to its embedding raised hit@1 from 66.7% to 80%, hit@5 to 95.6% and recall@5 from 54.9% to 59.4%. The measurement also showed a drop in text effects, from 100% to 67%, which is documented. It is live on nudaui.dev.

## Links

- [Source](https://blog.sgomez.dev/rag-busqueda-semantica-nudaui)
- [Repository](https://github.com/sgomez-dev/nudaui-rag)

## More case studies

- [Claude Canvas](https://sgomez.dev/en/work/claude-canvas)
- [NudaUI](https://sgomez.dev/en/work/nudaui)

---

More machine-readable formats: [llms.txt](https://sgomez.dev/en/llms.txt), [agents.md](https://sgomez.dev/en/agents.md), [OpenAPI](https://sgomez.dev/openapi.json), [sitemap](https://sgomez.dev/sitemap.xml).

---

# NudaUI, case study

> NudaUI is a project by Santiago Gómez de la Torre. This case study covers the problem it solves, what his role was and what came of it.

Canonical URL: https://sgomez.dev/en/work/nudaui

Updated on 2026-10-02

## The problem

Animation libraries tie you to a framework and weigh too much, and anyone working with Laravel, Django, Rails or plain HTML is left out.

## My role

I created it and maintain it on my own. They are HTML and CSS animations, with JavaScript only when needed, accessible from day one (ARIA and prefers-reduced-motion) and themed with CSS variables. You copy and paste them, with nothing to install.

## Stack

- Next.js
- TypeScript
- CSS
- framework-agnostic

## The outcome

1,503 components across 81 categories, with zero dependencies and usually under 1 KB each. They work in React, Vue, Svelte, Astro, Blade, Jinja and plain HTML, under the MIT license and with a public JSON API.

## Links

- [Source](https://nudaui.dev)
- [Repository](https://github.com/sgomez-dev/nudaui)

## More case studies

- [Claude Canvas](https://sgomez.dev/en/work/claude-canvas)
- [NudaUI Semantic Search (RAG)](https://sgomez.dev/en/work/nudaui-semantic-search-rag)

---

More machine-readable formats: [llms.txt](https://sgomez.dev/en/llms.txt), [agents.md](https://sgomez.dev/en/agents.md), [OpenAPI](https://sgomez.dev/openapi.json), [sitemap](https://sgomez.dev/sitemap.xml).
