← Archivo
· 3 min de lectura

El blog ya puede caminar solo

Actualizado el


El día de hoy terminé de organizar mi blog. Le incluí varias cosas interesantes.

El diseño

Empezando por un diseño el cual toma colores inspirados en Wu-Tang Clan y su estilo.

La base de datos

Funcionalmente no tenía cómo escribir posts sin desplegar la app, por lo que incluí una base de datos de Postgres en Railway. Esto me preocupa, porque los datos dependen de ellos — voy a buscar la manera de hacer backups a R2.

El editor

Entonces incluí un editor de texto estilo Notion, el cual me permite incluir diferentes tipos de formato sobre el texto, desde tener títulos, listas, y lo conecté con R2 para poder subir imágenes.

1.00

Auditoría, historial y borradores

También se incluyó un sistema de auditoría e historiales sobre las publicaciones, un sistema de borradores que me permite ir evolucionando mis apuntes e ideas, además amplié el blog de solo apuntes a también incluir proyectos que se me puedan ocurrir.

El historial que me dio guerra

Como siempre tuve problemas en el desarrollo, me apoyé con Claude, usando Sonnet 5 para evitar consumir tantos créditos, ya que en teoría era algo sencillo pero presenté dificultades principalmente al momento de visualizar el historial y las diferencias.

La primera versión guardaba el estado de antes de cada cambio, y eso hacía que el contenido y la fecha guardada no coincidieran entre sí. La arreglé para que guardara el resultado de después de cada guardado, y ahí apareció otro problema: comparar la versión más reciente contra el estado actual no mostraba ningún cambio, porque son literalmente lo mismo.

La solucioné comparando la última versión contra la anterior en vez de contra el actual, pero eso trajo un tercer problema: el texto que había agregado se mostraba tachado en rojo, como si lo hubiera borrado, en vez de en verde como agregado. Y para colmo, cualquier reacomodo invisible que hacía el editor (un salto de línea, un espacio) hacía que se marcara como cambiado un párrafo que en realidad seguía igual.

Al final la solución fue simplificar en vez de seguir parchando: mostrar cada versión tal cual quedó guardada, y agregar un botón aparte para ver diferencias contra la anterior, comparando el texto ya renderizado en vez del markdown crudo. Terminé rehaciendo esa parte varias veces hasta que quedó bien.

Lo demás

De paso dejé el resto en orden: robots.txt, una página 404 de verdad, integración continua para que los tests corran solos en cada push, imágenes que ahora se optimizan solas al subirlas, y un conteo de vistas propio sin depender de ninguna cuenta de analítica de terceros.

Ideas a futuro

  • Backups automáticos a R2: hoy todo vive en Postgres de Railway. Quiero un job que saque un dump periódico y lo mande a R2, para no depender al 100% de un solo proveedor.

  • Tags o categorías: todavía tengo pocos posts, pero si esto crece voy a necesitar alguna forma de agrupar por tema.

  • Buscador simple: para cuando el archivo deje de caber en una sola pantalla.

  • Una sección propia para proyectos: ahora que el blog no es solo apuntes, tiene sentido que los proyectos tengan su propio espacio visual, distinto al feed de notas.

  • Tests end-to-end: los que hay hoy cubren la lógica (historial, R2, tiempo de lectura) con pruebas unitarias, pero nada corre todavía contra la app real de punta a punta.