Mi Primer Post en Sanity
Categorías: web
2/14/2025
Cómo creé mi blog con Next.js y Sanity en solo unas horas
Introducción
Siempre quise tener un blog personal donde pudiera compartir mis ideas, proyectos y conocimientos, pero no estaba seguro de qué herramientas usar. Después de investigar varias opciones, decidí que Next.js y Sanity eran la mejor combinación para lograrlo. En este artículo, te contaré cómo construí mi blog desde cero, los desafíos que enfrenté y cómo la inteligencia artificial me ayudó en el proceso.
Elección de Tecnologías
Next.js: La base del blog
- Next.js es un framework de React que facilita la creación de aplicaciones web modernas. Lo elegí porque ofrece:
SSR (Server-Side Rendering) y ISR (Incremental Static Regeneration), lo que mejora el rendimiento. - Optimización de imágenes y carga rápida de páginas.
- Integración fácil con CMS como Sanity.
Sanity: Un CMS Headless potente
Sanity es una plataforma de gestión de contenido que me permite almacenar mis posts de manera flexible y estructurada. Sus principales ventajas:
- No necesitas una base de datos propia, todo se almacena en Sanity.
- Editor visual intuitivo para escribir y organizar contenido.
- Fácil integración con Next.js mediante la API de Sanity.
Tailwind CSS: Estilos rápidos y eficientes
Para mejorar la apariencia del blog, usé Tailwind CSS, un framework de diseño que permite crear estilos sin escribir CSS repetitivo.
Instalación y Configuración
1️⃣ Configurar Next.js
Primero, inicié un nuevo proyecto Next.js con:
npx create-next-app@latest mi-web
cd mi-web
npm install
2️⃣ Integrar Sanity
Luego, instalé Sanity y configuré el CMS:
npm install -g @sanity/cli
npx sanity init
Esto creó un proyecto en Sanity donde puedo administrar mis posts.
3️⃣ Conectar Sanity con Next.js
Para obtener los posts, configuré un cliente de Sanity en `lib/sanityClient.js`:
import { createClient } from "@sanity/client";
export const sanityClient = createClient({
projectId: "tu_project_id",
dataset: "production",
useCdn: true,
apiVersion: "2023-01-01",
});
Funcionalidades Clave
Listar los posts en `/blog`
En `pages/blog.js`, hice una consulta para obtener y mostrar los posts:
import { sanityClient } from "../lib/sanityClient";
export async function getStaticProps() {
const posts = await sanityClient.fetch("*[_type == 'post']");
return { props: { posts } };
Esto permite ver todos los artículos en la página principal del blog.
Ver un post en `/blog/[slug]`
Cada post tiene una URL única basada en su `slug`. En `pages/blog/[slug].js`:
import { sanityClient } from "../../lib/sanityClient";
export async function getStaticProps({ params }) {
const post = await sanityClient.fetch("*[_type == 'post' && slug.current == $slug][0]", { slug: params.slug });
return { props: { post } };
}
Esto permite que cada post tenga su propia página.
Mejoras y lo que aprendí
Este proyecto me permitió aprender mucho sobre Next.js y Sanity. Algunas cosas clave:
- Cómo usar Sanity para manejar contenido dinámico.
- Optimizar imágenes en Next.js para mejor rendimiento.
- Cómo solucionar errores como `Hydration Mismatch` en SSR.
Conclusión y Próximos Pasos
Crear este blog fue un proceso increíblemente enriquecedor. Ahora que está funcionando, quiero enfocarme en:
- Publicar más contenido de valor.
- Optimizar la UI y mejorar el SEO.
- Agregar funcionalidades como un buscador de posts.
Si estás pensando en crear un blog con Next.js y Sanity, ¡anímate! Es una combinación poderosa y flexible. ¿Tienes alguna duda o experiencia similar? Déjamelo saber en los comentarios. 🚀