Arquitectura simple para un problema diario.
Cada prompt bueno que se pierde en WhatsApp llora un poco por dentro. Esta es mi pequeña venganza: una caja sin pegatinas, sin ruido y sin leads, donde lo útil se guarda, se encuentra y se comparte.
La necesidad era sencilla, casi ridícula si lo piensas: cada día alguien comparte un buen prompt y se pierde en el chat. No es grave, sabemos que está ahí, pero cuando intento volver sobre aquel mensaje útil solo encuentro memes, audios y el clásico “esto es importante” que luego no lo era. El mensaje que sí servía ya no está a mano. Ahí veo que el problema no es de tiempo, es de sitio: hace falta un lugar donde guardar y encontrar lo que merece quedarse. De esa molestia cotidiana surgió la idea: un archivo compartido donde lo útil esté siempre a mano, fácil de recuperar, con un rastro mínimo para quien llegue después.
Con la necesidad clara, viene la pregunta práctica: ¿cómo montarlo sin atarme a mis propios servidores ni caer en el deporte de “levanta y parchea”? Quiero poder publicar, ajustar lo necesario y que el sistema se mantenga solo, sin convertirme en técnico de guardia.
La respuesta natural fue Cloudflare. Subí la web a Pages para aprovechar su red y dejé la lógica en Functions, que se enciende cuando hace falta y se apaga al terminar. Adiós a máquinas encendidas todo el día, a actualizaciones sorpresa y, ya que estamos, a WordPress. Pero faltaba algo: escribir tú solo en Markdown no es lo mismo que permitir que otros colaboren sin hacerse daño.
Tocaba decidir dónde guardar la información. No quería servidores propios ni bases que pidan cuidados constantes. Entró Cloudflare D1, una base tipo SQLite que vive en la misma red y guarda sin drama. Con eso se cerró el triángulo: interfaz en React, funciones en Functions, memoria en D1. Una arquitectura simple sobre el papel, sin piezas que me aten a máquinas concretas.
Con ese mapa paso a lo esencial: un formulario para guardar, una lista para mostrar y una página de detalle. La regla es sencilla: primero que funcione el ciclo de guardar, encontrar y volver; si responde, sigo; si no, corrijo. A medida que avanza, completo el MVP con lo necesario: contenido, taxonomías, términos. Un CRUD real, filtros que encuentran, votos para que lo valioso suba sin campañas y comentarios para sumar contexto. Roles y permisos, los justos, para abrir la puerta sin desorden. Luego el panel de administración: crear, editar, buscar, paginar, confirmar antes de borrar y salir. Nada de confeti; lo importante es que guarde.
Todo responde a la misma lógica: no pelear con la máquina. Publicaciones sin servidor fijo, caché en la red y respuestas rápidas por cercanía. Empieza gratis y, si crece, cuesta poco para lo que da. Además, permite cambios pequeños y controlados sin cortar el uso. Si algo no encaja, corrijo y vuelvo a publicar. Publicar, compartir y seguir. No es magia, es pragmatismo: no complicarse la vida cuando ya se complica sola.
En el camino no he estado solo; me acompañó Cursor. No escribe por mí (aunque alguna noche parezca que sí), pero obliga a ser preciso. La lección es clara: la máquina solo resuelve lo que tú ya tienes claro. Si pides algo confuso, sale confuso; si cambias de intención, te devuelve tus dudas con muy buena letra. Por eso importa saber qué quieres y pedirlo con claridad, dentro y fuera del código (aquí se nota más).
Cuando la base estuvo estable, lo abrí a los demás. Si esto es un archivo, tiene que ser colaborativo. Ahora cualquiera puede guardar sus prompts, etiquetar con cuidado, usar taxonomías con jerarquía, votar lo útil, aportar contexto y navegar sin pelearse con el chat. Para no estorbar, passkeys en el acceso, Turnstile contra el spam y rutas bien cuidadas para arreglar sin romper. La idea central no cambia: no molestar.
Las taxonomías hacen de mapa. Un término puede vivir en varias sin duplicarse; la jerarquía ordena en capas y las URLs limpias llevan directo al contenido. El objetivo es ayudar a encontrar. Si alguien valora, empuja lo útil; si comenta, ahorra tiempo mañana; si explora, lo normal es que guarde algo y vuelva. Y si no vuelve, al menos no se fue por culpa nuestra.
El trabajo real está en los detalles: paginación que no se atranca, búsqueda que perdona fallos al teclear, filtros que combinan bien, orden por fecha, uso o votos, citas claras y una máxima que evita perder tiempo: editar no debe ser más lento que crear. El panel es sobrio por respeto, no por estética: menos sorpresa y más hacer. Y esa coma rebelde que rompe el flujo aparece, claro, a las tres de la mañana: se corrige y a dormir, que tampoco somos cirujanos.
En lo técnico me importa menos el nombre que la función: poder publicar sin miedo, cambiar a menudo, pagar poco y no depender de máquinas huérfanas. Con Cloudflare, la red hace el trabajo duro: las Functions donde deben, la base cerca, las respuestas viajan poco y vuelven pronto. Si hay más uso, se adapta; si no, el coste no aprieta. Para empezar y para durar, tiene sentido. Para presumir, mejor otros.
Y un matiz importante: esto no es un “sígueme y te lo comparto”, ni humo, ni ruido, ni un embudo pidiendo correos a cambio de secretos. Vi la necesidad, busqué, copié lo que funcionaba, lo adapté y lo comparto aquí sin pedir nada. Si te sirve, úsalo; si no, no pasa nada. Nadie debe un hilo épico ni un “me gusta”. El trato es sencillo: que lo bueno esté a mano y que cualquiera pueda volver cuando lo necesite.
Con el uso salen necesidades que el papel no anticipó. Ajusto la búsqueda, mejoro filtros, quito lo que estorba, añado caché donde ayuda, pongo índices que ahorran segundos y escribo mensajes claros. Son piezas pequeñas que sostienen lo esencial: entrar, guardar, volver, encontrar. Ese es el camino; lo demás es decoración, a veces bonita, pero solo eso.
Al final, va de guardar lo útil para que cualquiera lo encuentre cuando lo necesite, sin obstáculos ni complicaciones. Si ayuda, genial; si no, tampoco pasa nada. Lo importante es que no se pierda y que siempre haya un lugar al que volver.
Por cierto, si has llegado hasta aquí lo primero es darte la enhorabuena (y las gracias) y lo segundo invitarte a pasar por https://prompts.aaff.pro/ que es la casa donde se encuentra todo lo que te he contado.
Glosario
Soy consciente de que a veces hablo en Koreano, así que si te has quedado con cara de pez con alguna de las palabras que he usado aquí las tienes explicadas, o al menos las he intentado explicar
Cloudflare Pages: sirve el frontend desde la red de Cloudflare.
Functions (Cloudflare Functions): código que responde a peticiones web; ahí vive la API.
D1 (Cloudflare D1): base de datos tipo SQLite en Cloudflare; guarda y lee datos sin servidores propios.
API: puerta para entrar y salir datos desde la web.
React: biblioteca para la interfaz, lo que el usuario ve y toca.
CRUD: crear, leer, actualizar, borrar; operaciones básicas sobre datos.
Contenido: la pieza que se guarda, por ejemplo un prompt o un GPT descrito.
Taxonomías: formas de clasificar el contenido, por ejemplo categorías y etiquetas.
Términos: palabras dentro de una taxonomía.
Jerarquía: estructura con padres e hijos para anidar categorías.
Filtro: criterio para encontrar por categoría, etiqueta o texto.
Roles y permisos: quién puede hacer qué, por ejemplo usuario, moderador o admin.
Endpoint: dirección concreta de la API, por ejemplo /api/content.
Slug: versión del título para la URL, sin espacios ni acentos.
UUID: identificador único de cada pieza de contenido.
Passkeys (WebAuthn): inicio de sesión con biometría, sin contraseñas.
Turnstile: protección antispam de Cloudflare.
Caché: copia temporal para responder más rápido.
Índice: estructura en la base que acelera búsquedas repetidas.
Latencia: tiempo de ida y vuelta de una petición; cuanto menos mejor.
Edge: ejecución cerca del usuario dentro de la red de Cloudflare.