moto-verdict
Una guía de compra de motos para motociclistas francófonos. Hoy es un sitio editorial estático, un CMS respaldado por git y un pipeline de contenido que redacta borradores de artículos a partir de fuentes de noticias y comprueba cada cifra antes de que una persona los lea. El recorrido guiado en torno al cual se concibe el producto aún no está escrito.
Repositorio privado
01Qué es
El objetivo es ayudar a un motociclista a encontrar la moto que le conviene, cruzando categoría de licencia, morfología, uso real y gustos, y devolver una lista corta ordenada con las razones de ese orden. Los artículos atraen a los lectores. El recorrido guiado y su API de recomendación están especificados pero no construidos. Lo que existe es la parte editorial, que fue por la que empecé.
02Qué construí
Un sitio público y un panel de administración, ambos en React y Vite sobre Cloudflare Pages, que comparten un mismo sistema de diseño cuyos tokens extraje del archivo de Figma. Un pipeline de contenido en TypeScript que lee fuentes, descarta duplicados, clasifica elementos, arma un brief, redacta el artículo sección por sección y abre un pull request para un revisor. Decap CMS se apoya en ese pull request: el revisor puede revisar, pedir una reescritura o aprobar. La infraestructura está declarada en el repositorio: workflows, unidades systemd, DNS y scripts de preparación del host.
03Cómo funciona
Nada llega al sitio sin una fusión humana, y esa fusión es el único disparador de un despliegue. El sitio se construye a partir de los artículos del repositorio, así que el lector recibe páginas estáticas y una caída del VPS no lo interrumpe. El pipeline corre en un VPS bajo timers de systemd, con su estado en PostgreSQL. El modelo se invoca mediante la CLI de Codex, en un subproceso restringido: sandbox de solo lectura, sin configuración de usuario y sin búsqueda web mientras redacta. Los cambios siguen un flujo feature, dev, main que un job de CI hace cumplir.
04Qué aprendí
El modelo nunca elige una moto ni aporta una cifra. Las cifras las extrae código a una lista blanca antes de redactar, y una comprobación determinista que entiende el formato numérico francés rechaza cualquier cifra fuera de ella. También medí que la similitud entre títulos no separa un duplicado de otra noticia sobre la misma moto, así que fijé el umbral de duplicados alto y acepto que algunos duplicados lleguen al revisor. Un duplicado que se escapa cuesta un clic. Una fusión equivocada hace desaparecer una noticia sin avisar.
Cómo está construido
- Un lector abre el sitio
- Un artículo aprobado sale en vivo
- Un elemento de la fuente se convierte en un pull request borrador
- Estado del pipeline en la base de datos
- Llamadas de clasificación y redacción
Personas
Quién lo usa
Cloudflare
Alojamiento estático
GitHub
Fuente de verdad
VPS
Pipeline de contenido
Entradas externas
Fuentes y modelo
Seleccione una parte del diagrama para ver qué hace. Cada color es un flujo a través del sistema.