No tengo equipo de ingeniería. Cuando decides construir solo, cada decisión de stack o te acelera o te hunde. Un servicio mal elegido son semanas peleando contra tu propia arquitectura en lugar de enviar producto. Con el tiempo llegué a una combinación que repito en casi todos mis proyectos porque me deja concentrarme en lo único que importa al principio: sacar algo a producción y ponerlo frente a usuarios reales.
Next.js como base, no como moda
Uso Next.js con App Router porque me da frontend y backend en el mismo repositorio. No monto un servidor aparte para cuatro endpoints; los Route Handlers viven al lado de las páginas y se despliegan solos. El renderizado en servidor me resuelve el SEO sin trucos, algo que a escala de trece productos con dominio propio no es negociable. Y cuando un cliente carga la página, la primera pintura es rápida porque el HTML ya viene armado desde el borde.
Firebase para no reinventar la autenticación
Auth, base de datos en tiempo real y storage en un solo SDK. Firestore me da un modelo NoSQL multi-tenant sin administrar servidores ni migraciones dolorosas, y las reglas de seguridad viven versionadas junto al código. La regla que aprendí a la mala: define bien tus colecciones desde el día uno. Reestructurar datos con usuarios activos encima duele mucho más que pensarlo diez minutos antes de escribir la primera query.
El mejor stack no es el más potente, es el que te deja borrar y reescribir sin miedo mientras todavía no sabes qué estás construyendo.
Cloud Run para lo pesado
Todo lo que tarda o cuesta lo saco del cliente y lo mando a Cloud Run: generar PDFs, llamadas a modelos de lenguaje, envío de correos, procesamiento de imágenes. Son contenedores serverless que escalan a cero cuando nadie los usa, así que no pago por servidores dormidos. Esto mantiene mi frontend ligero y me permite matar o reemplazar un microservicio sin tocar el resto de la app.
Stripe desde el primer commit
Conecto Stripe antes de tener siquiera diez usuarios. No porque espere facturar de inmediato, sino porque un producto que no puede cobrar es un pasatiempo. Integrar pagos al final, cuando ya tienes flujos y modelos de datos consolidados, es meterle una operación a corazón abierto a algo que ya respira. Mejor que el checkout exista desde que la app es un esqueleto.
La lección que atraviesa todo
Ninguna de estas piezas es exótica. La ventaja no está en la tecnología sino en la disciplina de no cambiarla sin una razón brutalmente buena. Cada vez que me tentó un framework nuevo y brillante, la pregunta fue la misma: ¿esto me hace enviar producto más rápido esta semana? Casi siempre la respuesta era no, y volver a lo aburrido y conocido fue lo que me dejó lanzar trece cosas en un año en lugar de perfeccionar una.