Ir al contenido
cutty.dev
All posts

Stack tecnológico de cutty.dev — decisiones conscientes

Qué hay debajo de cutty.dev y por qué. Sin evangelismo — filosofía: un stack aburrido y estable, alojamiento en la UE y privacidad integrada en una arquitectura que una sola persona puede mantener.

La mayoría de las entradas de "mi tech stack" son una lista orgullosa de novedades. Mira, tengo esto, tengo aquello, y aquí hay otra biblioteca fresquísima de la semana pasada. Este será diferente.

Porque la verdad es que cuando diriges un proyecto tú solo, no buscas lo más moderno. Buscas algo que no te despierte a las tres de la mañana. Y de eso se trata todo este stack tecnológico de cutty.dev: aburrido en lugar de moderno, europeo en lugar de estadounidense, privado desde sus cimientos, y lo suficientemente simple como para que una sola pareja de manos pueda manejarlo.

Te lo explico paso a paso, como si te lo estuviera contando tomando un café.

Astro renderizado en el servidor (y por qué no algo "más genial")

cutty.dev es Astro con renderizado en el lado del servidor. Cada solicitud pasa por el servidor, construye la página y devuelve el HTML listo. ¿Aburrido? Precisamente de eso se trata.

Quería tres cosas: renderizado en el servidor sin maquinaria pesada, un soporte multilingüe sólido desde el primer momento y velocidad sin sobrecarga. Astro ofrece todo eso, y el código sigue siendo legible. Cuando vuelvo a él tras un descanso de dos meses, sé exactamente qué está pasando allí. Para un proyecto individual, esto vale más que cualquier complemento de moda que nadie soporte después de un año.

Un solo archivo en lugar de una base con fuegos artificiales

SQLite. Una base de datos, un solo archivo en el disco. Además, una capa de consultas que se comunica con TypeScript, así que si cambio la estructura de los datos, el error me aparece en el editor y no en producción a medianoche.

¿Por qué precisamente esto? cutty es "read-heavy". Alguien hace clic en un enlace acortado, nosotros realizamos una lectura y aumentamos el contador. Eso es todo. SQLite maneja este tráfico tranquilamente, hasta cifras diarias realmente grandes. ¿Y la copia de seguridad? Copias el archivo. Fin. Sin ceremonias de replicación, sin scripts cuyo funcionamiento nadie recuerda cómo funciona.

Ten cuidado con una cosa, porque es una trampa común: la gente oye "SQLite" y piensa "un juguete para un proyecto de clase". No es cierto. Menos piezas móviles significa menos cosas que pueden romperse. No es ahorrar en calidad, es una decisión consciente.

El servidor está en Europa y no es casualidad

Servidor dedicado en la UE. TLS propio, reverse proxy con HTTPS automático, aplicación en contenedores.

Este es el fundamento de cómo cutty maneja los datos. Sé exactamente dónde se encuentran físicamente (para clientes de la UE y RGPD esto no es una curiosidad, sino una condición), no estoy atado a un único proveedor, nada se filtra automáticamente hacia ultramar, y la factura es predecible en lugar de saltar junto con el tráfico.

Sí, las plataformas cómodas de Occidente permitirían un inicio más rápido. Haces clic, despliegas, funciona. Solo que pagas por ello con el lugar donde aterrizan los datos de tus usuarios. Para mí, fue un mal trato.

Traducciones haz tu propio modelo, en tu propia casa

cutty habla 25 idiomas. Esto lo traduce un modelo de IA local y abierto que se ejecuta en mi infraestructura. No envío el texto desde la interfaz a ningún proveedor externo.

Los beneficios son prácticos. Una sola traducción cuesta cero. Tengo control total sobre la calidad y puedo actualizarlas cuando quiera. Y además, la máquina siempre necesita un ojo humano, por lo que cada uno de estos 25 idiomas ha sido revisado. Pero el hecho de que lo haga por mi cuenta significa que la privacidad no es un elemento en una lista de precios. Es una propiedad de cómo está construida la totalidad.

Tailwind, contenedores y algunas decisiones menores

¿Estilo? Utility-first, es decir, Tailwind. Sin CSS-in-JS, sin archivos de estilos separados, todo directamente en las plantillas. No pierdo tiempo inventando nombres de clases; los estilos no utilizados de todos modos no llegan a la página final, y el diseño tiene sentido porque el propio sistema lo impone. Para una sola persona, cada minuto que no se desperdicia en tonterías cuenta.

La implementación es Docker. El mismo entorno localmente y en producción, se acabó el "en mi máquina funcionaba". Y si alguna vez fuera necesario, muevo todo a otro servidor en unos treinta minutos. La portabilidad es una forma silenciosa de independencia.

Lo que aprendí de esto

El stack aburrido gana. Astro, SQLite, Tailwind, contenedores. Todo es maduro, probado y documentado. Nada se rompe en el momento en que menos lo necesitas.

El hosting en la UE está listo para producción, de verdad. El cuento de que "tienes que ir a la gran nube estadounidense para que sea algo serio", es un cuento. La IA local también es real, no hace falta entregar datos a una API externa para tener traducciones decentes. Y la última cosa: una sola persona puede lanzar algo que parezca el trabajo de todo un equipo. Solo hay que recordar que el tiempo es más caro que el dinero, y bajo ese aspecto, elegir cada pieza con cuidado.

Cuando construyas algo propio, hazte una pregunta con cada tecnología: ¿podré mantenerlo yo mismo dentro de un año? Si la respuesta es no, entonces creo que ya tienes la respuesta.

Todo funciona aquí: cutty.dev. Y si quieres hablar sobre alguna de estas decisiones, escribe a [email protected], respondo el mismo día.