Saltar al contenido
Insights
Negocio/4 min/9 de enero de 2026

De agencia a producto: por qué construimos Pegasuz Core

Cada sitio nuevo que entregábamos era una isla. En algún momento decidimos que eso tenía que cambiar.

Cuando empezamos, cada cliente era un proyecto independiente. Código nuevo desde cero, servidor propio, base de datos nueva, decisiones de autenticación repetidas, módulo de subida de imágenes reescrito por séptima vez. Todo igual, todo separado.

El problema no era la cantidad de trabajo. Era que ninguna de esas mejoras se transfería. Si en el tercer proyecto resolvíamos bien la lógica de paginación, el cuarto empezaba de cero. Si encontrábamos un bug crítico en el manejo de sesiones, teníamos que rastrearlo y corregirlo en cinco repos distintos. Si actualizábamos una dependencia con una vulnerabilidad, era una semana de trabajo en lugar de una hora.

01

La señal que no podés ignorar

Hay un punto en el que la repetición deja de ser trabajo y se convierte en diagnóstico. Para nosotros fue cuando el mismo bug apareció en tres proyectos distintos en la misma semana. No era el mismo código copiado — era el mismo error conceptual, cometido tres veces porque no había un lugar común donde habíamos resuelto el problema de verdad.

En ese momento la respuesta correcta no es arreglar el bug tres veces y seguir. Es preguntarse por qué el problema existe tres veces en primer lugar.

02

La decisión de construir el core

La alternativa a seguir copiando era construir algo que no necesitara ser copiado. Un backend que sirviera a múltiples clientes de forma nativa — no como workaround, sino como diseño intencional.

Eso implicaba decisiones que no son triviales. ¿Cómo separás los datos entre clientes sin que un bug exponga información del cliente equivocado? ¿Cómo manejás features distintas por cliente sin llenar el código de condicionales? ¿Cómo actualizás el sistema para todos sin romper las particularidades de cada uno?

Las respuestas que encontramos: base de datos separada por tenant, feature flags por registro, migraciones versionadas y automatizadas. Cada decisión tiene un costo. Cada una también tiene un beneficio que se compound con el tiempo.

03

Lo que ganamos en la práctica

El costo de construir el core fue real. Meses de trabajo que no generaban facturación directa. Decisiones de arquitectura que teníamos que tomar sin saber si eran las correctas. Abstracciones que a veces eran demasiado genéricas y a veces demasiado específicas.

Pero el resultado también fue real. Hoy cuando incorporamos un cliente nuevo, el tiempo de setup pasó de semanas a días. Cuando mejoramos el módulo de autenticación, todos los clientes reciben la mejora sin que nadie tenga que hacer nada. Cuando encontramos un bug en el sistema de uploads, lo corregimos una vez.

Más importante: cuando un cliente crece y necesita más funcionalidad, podemos habilitarla. No construirla desde cero.

04

El modelo actual

Cada cliente en Pegasuz corre sobre el mismo backend, con su propia base de datos MySQL. El identificador del cliente viaja en el header HTTP `x-client`. El middleware lo intercepta, resuelve la conexión correcta, y todo lo que viene después trabaja sobre datos aislados.

El panel admin es el mismo para todos. El CMS es el mismo. La autenticación, el sistema de roles, el módulo de publicaciones, los servicios, los proyectos — todo compartido. Lo que varía entre clientes son los datos, las features habilitadas y la personalización visual.

Es la diferencia entre construir proyectos y construir producto. Un proyecto termina. Un producto escala.

05

Lo que hubiéramos hecho diferente

En retrospectiva, algunas abstracciones las hicimos demasiado temprano. Generalizamos casos que no se repitieron. Construimos configurabilidad para situaciones que nunca llegaron.

La lección es que la generalización correcta emerge de los casos concretos, no se anticipa. El core que tenemos hoy es el resultado de haber construido cinco clientes reales, no de haber diseñado el sistema perfecto en abstracto.

Eso es lo que significa construir software para uso real: iterar sobre problemas concretos hasta que las soluciones generalizables aparecen solas.

Takeaways
01

La capa editorial necesita estructura, no solo publicacion.

02

Metadata, taxonomias y locale afectan el valor futuro del contenido.