el plan que v1 nunca tuvo

7 de septiembre de 2026 meta metaroadmap

La v1 de este blog está terminada y fusionada. Antes de empezar con la v2 quería escribir la hoja de ruta que me trajo hasta aquí, y ahí es donde empieza la broma: no existía ninguna.

Cuando empecé, el plan que tenía en la cabeza era más o menos "un blog, escrito en Go, que yo mismo alojo". Esa era toda la especificación. Sin lista de funciones, sin orden, sin idea de lo grande que llegaría a ser. Simplemente empecé con un servicio de autenticación porque los inicios de sesión parecían la parte difícil, y pensé que el resto vendría después.

El resto sí vino después, pero no en ningún orden que una persona sensata habría elegido. Esto es más o menos lo que pasó en realidad, reconstruido a partir del historial de git:

The front page of the blog as v1 ships, scenery and all

Primero el servicio de autenticación, con su propia base de datos, claves JWT y roles. Luego el servicio de blog con publicaciones y markdown. Luego los comentarios, porque un blog sin comentarios se sentía muerto. Luego los likes en los comentarios, luego la moderación porque ya tenía cosas que moderar, luego las subidas de archivos multimedia a través de MinIO, luego el panel de administración para reunir todo eso. Luego pasé días en el rediseño, la isla, los pájaros, el cielo nocturno, y escribí más publicaciones sobre píxeles que sobre código. Luego la programación de publicaciones, para que se publicaran solas mientras duermo. Y al final del todo, en lo que llamé v1.1, llegaron las funciones de adulto: derechos de datos del RGPD, analítica de visitantes, y un registro de errores que de verdad puedo leer.

Fíjate en lo que falta de esa lista hasta el final: todo lo aburrido e importante. Las copias de seguridad todavía no existen. El correo no existe, así que el restablecimiento de contraseña tampoco existe. Si hubiera escrito una hoja de ruta el primer día, "copias de seguridad" habría estado cerca de la cima y "frailecillos animados" cerca del fondo, y sinceramente los frailecillos podrían haber perdido. Me alegro de que no lo hicieran, pero eso es suerte, no planificación.

La pila terminó así, y la verdad es que estoy contento con ella:

services:
  caddy:     # the front door, TLS, body limits
  frontend:  # SvelteKit
  auth:      # Go, own Postgres
  blog:      # Go, own Postgres
  minio:     # media storage

Dos pequeños servicios en Go con sus propias bases de datos hablando entre sí por una red interna, un frontend en SvelteKit, y Caddy delante decidiendo quién entra. Cada pieza es algo que puedo leer de principio a fin. Esa fue la única regla que seguí sin querer durante todo el camino: ninguna pieza que no entienda.

Lo que le diría a mi yo de hace unas semanas: escribe el mapa primero. No una especificación detallada, solo el orden de las cosas, para que las funciones aburridas pero fundamentales no se acumulen todas al final. Esa lección es la razón por la que la v2 tendrá una hoja de ruta real en este blog, escrita antes que el código esta vez. Crecimiento, probablemente.

0 comentarios

Inicia sesión para comentar.

Iniciar sesión

¿No tienes cuenta?