La pregunta que no es "¿qué framework es mejor?"

Cada proyecto nuevo trae la misma tentación: abrir con lo que ya conoces bien, o abrir con lo que está de moda esa semana. Ninguna de las dos es una decisión de ingeniería — son atajos para no hacerse la pregunta real. En Lemus Digital operamos, a la vez, un SaaS multi-tenant en producción (Assilek), este mismo sitio y su blog, un negocio pequeño al que le montamos presencia digital (MIA Blue Charters) y una línea completa de implementación de IA (Aiuda Labs) que ni siquiera se apoya en código propio para su capa de automatización. Cuatro contextos, cuatro stacks. Ninguno se eligió por dogma, y tampoco por capricho: cada uno respondió a las mismas cuatro preguntas, con respuestas distintas.

Este post documenta esas preguntas y cómo se respondieron en cada caso — no como un manifiesto de "usa siempre la herramienta correcta" (eso no dice nada operativo), sino con los criterios concretos que de verdad separaron un stack de otro.

Las cuatro preguntas

  1. ¿Quién mantiene esto después del primer deploy? Un equipo técnico que va a seguir tocando el código todos los días necesita una cosa; un cliente que no programa necesita otra completamente distinta.
  2. ¿Qué tan variable es la carga y el estado? Un producto con usuarios concurrentes, sesiones, tenants y billing necesita capas separadas de responsabilidad. Una página de marketing con tres botones no.
  3. ¿Cuál es el costo real de la complejidad, no el costo percibido? Un framework no cuesta lo que cuesta aprenderlo — cuesta lo que cuesta actualizarlo, parchear sus vulnerabilidades y depurar sus capas de abstracción dos años después, con menos memoria fresca del proyecto.
  4. ¿Qué pasa si el proyecto crece más de lo esperado? No planificar para eso es un error; sobre-planificarlo desde el día uno también lo es. La pregunta es cuánta holgura comprar por adelantado.

Con esas cuatro preguntas en mente, así se respondieron en cada uno de los cuatro casos.

Caso 1 — Assilek: multi-tenant justifica separar capas

Assilek es un SaaS de galerías fotográficas profesionales: multi-tenant por organización, con marcas de agua configurables, paquetes con límites y precios, procesamiento de imágenes asíncrono y cobro real vía Stripe. El stack productivo es Next.js 14 (App Router) para el front, Spring Boot 3 sobre Java 21 para la API, y un image-service separado —también Spring Boot— que consume una cola de Pub/Sub para procesar imágenes sin bloquear la petición del usuario. Postgres en Cloud SQL, GCS para almacenamiento, todo corriendo en Cloud Run y descrito en Terraform.

Cada pieza de esa lista responde a una de las cuatro preguntas:

Ninguna de esas decisiones es exótica — son elecciones convencionales para un SaaS con cobro real y usuarios concurrentes. Lo que las justifica no es que "así se hace un SaaS moderno", sino que Assilek de verdad tiene la variabilidad de carga y la necesidad de aislamiento que ese stack resuelve.

Caso 2 — Este sitio: cero framework es la respuesta correcta, no la ausencia de una

El sitio que estás leyendo (landing + blog) es HTML, CSS y JavaScript inline, sin build step, sin dependencias de npm, servido tal cual desde Firebase Hosting. Comparado con Assilek, eso puede leerse como "no invertimos en esto". Es lo contrario: es la respuesta correcta a las mismas cuatro preguntas, aplicadas a un contexto distinto.

El criterio, en una frase

Un framework no es una inversión en calidad por sí solo. Es una apuesta a que la complejidad que agrega hoy se va a pagar con la flexibilidad que da mañana. Cuando no hay complejidad de estado o de escala que gestionar, esa apuesta no tiene con qué pagarse.

Caso 3 — MIA Blue Charters: el cliente decide el criterio, no nosotros

MIA Blue Charters es un negocio de experiencias acuáticas en Miami al que le montamos presencia digital completa: front-end estático a medida, Airtable como CMS headless, una función serverless de por medio para no exponer el token de la API en el navegador, y reservas por WhatsApp. Ninguna pieza de ese stack es la que usaríamos para un SaaS propio — y esa es exactamente la decisión correcta, porque la pregunta "quién lo mantiene" tiene una respuesta distinta cuando el que mantiene el contenido es la dueña del negocio, no un equipo técnico.

La dueña necesita subir un tour nuevo o cambiar un precio desde el celular, sin depender de que alguien le facture por cada cambio. Un CMS de código (Markdown en un repo, un headless CMS con su propio panel de administración que hay que aprender) resuelve ese problema peor que una hoja de cálculo con fotos que ya sabe usar. Airtable no es una limitación técnica aceptada a regañadientes — es la herramienta correcta para quien de verdad va a tocarla todos los días.

Lo que sí se mantuvo constante, independientemente del stack, fue el criterio de ingeniería: separar contenido de código, no exponer secretos en el cliente, dejar un respaldo estático para que la página nunca quede vacía si Airtable no responde. Esos principios no cambian entre proyectos. Las herramientas que los implementan, sí.

Caso 4 — Aiuda Labs: cuando el "framework" es una plataforma, no una librería

Aiuda Labs, la línea de formación e implementación de IA generativa que lidera Noel Moreno Lemus, PhD, desde Panamá, resuelve automatización de flujos comerciales —captación, calificación y conversión de leads en CRMs como GoHighLevel— apoyándose en n8n en vez de construir esa capa de automatización como código propio. Es una decisión que a primera vista contradice la lógica de Assilek: ¿por qué escribir código a medida para un SaaS propio y en cambio delegar en una plataforma low-code para automatización de clientes?

La respuesta vuelve a la primera pregunta: quién mantiene esto. Los clientes de Aiuda Labs son equipos de negocio en LATAM, no equipos de ingeniería. Un flujo de automatización construido en n8n se puede inspeccionar, ajustar y depurar visualmente por alguien que entiende el negocio pero no lee código — eso es exactamente el tipo de mantenimiento que ese cliente puede sostener después de la entrega. Construir la misma automatización como microservicios propios habría sido, para ese contexto, una version más "correcta" técnicamente y mucho peor operativamente: cada ajuste futuro dependería de que Aiuda Labs siguiera involucrada, en vez de dejarle al cliente algo que puede operar solo.

Lo que no cambia entre los cuatro casos

El error más común al hablar de "elegir el stack correcto" es tratarlo como una cuestión de gusto o de moda. No lo es. Las cuatro decisiones de arriba comparten un mismo método, aunque lleguen a herramientas opuestas:

Cierre

Ningún cliente ni lector necesita saber qué framework usamos — necesita que lo que se construyó para él funcione, sea mantenible por quien tiene que mantenerlo, y no cueste más de lo que el problema justifica. Ese es el único criterio que de verdad importa, y es el mismo en un SaaS con Stripe y billing real que en una página de un negocio de jet skis. El framework es la respuesta a esa pregunta, nunca la pregunta misma.