/1 min read

El prompt para clonar este sitio web con IA

El prompt completo que usé para construir este sitio con IA: stack, arquitectura y diseño al detalle. Cópialo, pégalo en tu agente de código y replícalo con tus propios datos.

AIPromptsDesarrollo

Mucha gente me ha preguntado cómo está hecho este sitio. La respuesta corta: lo construí con IA. Aquí está el prompt completo que usé, para que tú puedas replicarlo con tus propios datos.

Cópialo, pégalo en tu agente de código (Claude Code, Cursor, etc.), rellena los campos << ... >> con tu información y deja que construya. Lo que no llenes, el agente te lo preguntará.

El prompt completo

Pasa el cursor por encima del bloque y usa el botón de copiar (esquina superior derecha) para llevártelo entero.

Quiero que construyas mi **sitio web personal**: un portafolio + blog bilingüe (inglés/español),
minimalista, rápido y con CMS para escribir artículos sin tocar código. Sigue al pie de la letra
el stack y la arquitectura que describo abajo. Trabaja paso a paso, ejecuta el proyecto en local
para verificar que todo compila, y al final dime cómo desplegarlo.

## Sobre mí (rellena esto)

- **Nombre:** << tu nombre completo >>
- **Titular / rol:** << ej: Founder, Builder, Writer >>
- **Bio corta (1-2 frases):** << ej: Finanzas y crypto. Co-fundador de X e Y. Ex-Z. >>
- **Empresas / proyectos a destacar:** << nombre + URL de cada uno >>
- **Temas sobre los que escribo:** << ej: crypto, AI, pagos, fintech >>
- **Redes sociales (URLs):** << X, Instagram, LinkedIn, YouTube, TikTok, Substack... pon las que tengas >>
- **Email de contacto:** << tu@email.com >>
- **Dominio final:** << ej: tunombre.com >>
- **Newsletter (opcional):** << URL de Substack/Beehiiv o "ninguna" >>

## Stack técnico (úsalo exactamente)

- **Next.js 16** con App Router + **React 19** + **TypeScript**
- **Tailwind CSS v4** (con `@tailwindcss/typography`)
- **Sanity** como CMS headless (`next-sanity`, `@sanity/client`), con el **Studio embebido en `/studio`**
- **next-themes** para modo claro/oscuro
- **Shiki** para resaltado de sintaxis en bloques de código de los artículos
- **@portabletext/react** para renderizar el contenido rich-text de Sanity
- **Vercel Analytics**
- Despliegue en **Vercel**

## Arquitectura

```
src/
  app/
    [locale]/                 # i18n por ruta: /en y /es
      layout.tsx              # navbar + footer + providers (tema)
      page.tsx                # home: Hero + últimos 3 artículos + CTA newsletter
      about/page.tsx          # bio larga + áreas de expertise + empresas + contacto
      articles/page.tsx       # listado de artículos
      articles/[slug]/page.tsx# artículo individual (PortableText + barra de progreso)
      <proyecto>/page.tsx     # 1 página por proyecto destacado
    studio/[[...tool]]/       # Sanity Studio embebido
    api/revalidate/route.ts   # webhook de Sanity para revalidar contenido (ISR on-demand)
    rss/route.ts              # feed RSS
    sitemap.ts / robots.ts
  components/                 # hero, navbar, footer, article-card, project-card,
                              # theme-toggle, language-switcher, reading-progress,
                              # portable-text, code-block, container, tag, section-header
  lib/
    i18n.ts                   # locales ["en","es"], default "en", getDictionary()
    site.ts                   # siteConfig: nombre, links, nav, descripción
    content.ts                # getArticles/getArticle/getProjects desde Sanity
    dictionaries/{en,es}.json # TODO el copy traducido, nada hardcodeado en componentes
    sanity/                   # client, queries (GROQ), image url builder
  sanity/
    schemas/                  # article, project, codeBlock (con campos por idioma)
  middleware.ts               # redirige "/" al locale por defecto y detecta idioma
```

### Reglas de internacionalización
- Toda la copia visible vive en `lib/dictionaries/en.json` y `es.json`. Los componentes
  reciben un `dict` y nunca tienen texto hardcodeado.
- Los documentos de Sanity (artículos/proyectos) tienen campos por idioma o un campo `language`,
  de modo que `getArticles(locale)` solo trae el contenido del idioma activo.

### Diseño (esto es clave para que se vea bien)
- **Estética minimalista tipo Linear / rauno.me.** Mucho espacio en blanco, tipografía protagonista.
- Tipografías: **Inter** para texto, **SF Mono** para código.
- Paleta neutra (negros/grises/blancos). Soporta dark mode con `next-themes`.
- **Hero a pantalla completa**: titular gigante (ej. "Hola") a la izquierda, retrato del autor
  en blanco y negro (`grayscale`) a la derecha con degradados que lo funden con el fondo,
  bio con enlaces a las empresas, y fila inferior con redes + captura de email.
- Animaciones sutiles de entrada: `fade-up` y `fade-in` con easing `cubic-bezier(0.16, 1, 0.3, 1)`,
  y un contenedor `.stagger` que escalona la aparición de listas (50ms entre hijos).
- Scrollbar fina (5px) que se funde con el fondo, selección de texto translúcida,
  focus-visible estilo Linear (outline suave con offset).
- Detalles de código: bloques con numeración de línea, bordes sutiles, línea resaltada en azul.
- Mobile-first y totalmente responsive.

### Funcionalidad concreta de cada sección
- **Home:** Hero + "Últimos artículos" (los 3 más recientes, con enlace "ver todos") +
  bloque CTA para suscribirse a la newsletter (form que postea al proveedor) + botones de redes.
- **About:** bio en párrafos + 3 columnas de áreas de expertise (con listas) +
  tarjetas de las empresas/proyectos con métricas + sección de contacto.
- **Artículos:** listado con tarjetas (título, descripción, fecha, tags, tiempo de lectura) y
  vista individual con barra de progreso de lectura, botón de copiar enlace y compartir.
  Soporta artículos "externos" que enlazan fuera del sitio.
- **Proyectos:** una página por proyecto destacado, con descripción, tags, enlace al sitio y a GitHub.
- **RSS, sitemap y robots** generados automáticamente.

## Pasos que quiero que sigas
1. Crea el proyecto con `create-next-app` (TypeScript, Tailwind, App Router) e instala las dependencias del stack.
2. Monta la estructura de carpetas, el `siteConfig`, los diccionarios y el middleware de i18n.
3. Configura Sanity: define los esquemas (article, project, codeBlock), el client y las queries GROQ,
   y deja el Studio funcionando en `/studio`. Pídeme el `projectId` y `dataset`, o guíame para crearlos.
4. Construye los componentes y las páginas con el diseño descrito.
5. Crea el endpoint `/api/revalidate`, el feed RSS, sitemap y robots.
6. Pon 1-2 artículos y 1 proyecto de ejemplo (con mis datos) para que se vea poblado.
7. Ejecuta `npm run dev`, ábrelo, verifica que compila sin errores y que se ve bien en claro/oscuro,
   en `/en` y `/es`, y en móvil. Corrige lo que esté roto.
8. Explícame cómo desplegar en Vercel y conectar mi dominio, y cómo escribir un artículo nuevo desde el Studio.

Antes de empezar, hazme las preguntas que necesites para llenar lo que falte. Luego ponte a construir.

¿Y ahora qué?

Si lo pruebas, cuéntame cómo te fue. Y si te gusta lo que hago, sígueme en X o suscríbete a la newsletter para lo que viene.

Compartir este artículo

X

Siguiente artículo

Cómo hacer que la IA no escriba como IA