Volver a proyectosEcommerce

Acordeavos

Un sistema de ecommerce personalizado que separó la venta al público, las operaciones internas y las reglas de negocio con autoridad en el backend para stock, precios, variantes y dinero.

Rol

Desarrollador líder / principal

  • Separación entre tienda y administración
  • Contrato GraphQL compartido
  • Reglas de inventario y precios con autoridad en el backend
Página de producto del ecommerce Acordeavos mostrada en una notebook

Problema

Acordeavos necesitaba un ecommerce en producción para flujos que excedían los de una tienda convencional: gestión de catálogo e inventario, variantes de producto, actualización de stock mediante facturas, precios según el rol, pedidos, reportes, cupones, medios de pago personalizados y operaciones administrativas.

Contexto y responsabilidad

Lideré el desarrollo como desarrollador principal, implementando la solución técnica personalizada y haciendo evolucionar su arquitectura a medida que aumentaba la complejidad del negocio. Mi responsabilidad abarcó tanto la venta al público como los flujos internos utilizados para operar el ecommerce.

Alcance del sistema

  • Tienda para clientes en Next.js con requisitos de SEO y SSR
  • SPA administrativa en React para flujos operativos
  • Catálogo, inventario y actualización de stock mediante facturas
  • Variantes y precios según el rol
  • Pedidos, totales, cupones y medios de pago personalizados
  • Reportes y operaciones administrativas continuas

Arquitectura

El sistema utilizó dos superficies frontend de manera deliberada. Next.js servía la tienda para clientes, donde importaban el SEO, SSR, la visibilidad en buscadores y el rendimiento; React impulsaba una SPA interna optimizada para la velocidad de interacción y el trabajo operativo. Ambas utilizaban Apollo para consumir una API GraphQL ubicada delante de Firebase. Ese límite proporcionó un contrato compartido y centralizó el acceso a datos y las reglas de negocio, sin pretender eliminar todo el acoplamiento con la persistencia.

  • Tienda en Next.js
  • SPA administrativa en React
  • Redux
  • Límite compartido con GraphQL y Apollo
  • Node.js
  • Persistencia en Firebase

Desafío de ingeniería

Una única visión autoritativa del estado del ecommerce

El problema más difícil fue mantener un estado de negocio consistente entre inventario, variantes, actualizaciones de stock mediante facturas, precios según el rol, comportamiento de la tienda y flujos administrativos. Permitir que dos superficies de aplicación calcularan o modificaran de manera independiente dinero, stock, precios, variantes o totales de pedidos generaba un riesgo creciente de estados contradictorios.

Decisiones y fundamentos

Separar las superficies de Tienda y Administración

Decisión
Usar Next.js para la tienda orientada al cliente y una SPA separada en React para la administración interna.
Fundamento
La tienda necesitaba SEO, SSR, visibilidad en buscadores y rendimiento para clientes, mientras que la aplicación administrativa priorizaba la velocidad de interacción y la experiencia operativa. Cada superficie podía así servir a su audiencia real.
Compensaciones
Los modelos y tipos compartidos requerían coordinación, la autenticación debía funcionar entre ambas superficies, los despliegues se volvieron más complejos y la consistencia de comportamiento exigía una alineación deliberada. Las aplicaciones estaban separadas, pero no eran completamente independientes.

Un límite de aplicación GraphQL compartido

Decisión
Canalizar ambas aplicaciones frontend a través de la misma API GraphQL, consumida mediante Apollo, con Firebase detrás de ese límite.
Fundamento
Un contrato de API compartido reducía el acoplamiento directo de los clientes con Firebase, centralizaba el acceso a datos y las reglas de negocio, y proporcionaba patrones de acceso consistentes para ambas aplicaciones.
Compensaciones
El límite agregó un contrato que debía evolucionar junto con ambos clientes y no eliminó todas las formas de acoplamiento. Firebase continuó siendo la capa de persistencia, por lo que no se consideró trivialmente reemplazable.

Invariantes del ecommerce con autoridad en el backend

Decisión
Mover detrás de la API compartida los cálculos y las transiciones de estado críticas para dinero, stock, precios, variantes y totales de pedidos.
Fundamento
A medida que aumentaba la complejidad operativa, la tienda y la aplicación administrativa debían consumir las mismas decisiones de negocio autoritativas en lugar de interpretar por separado reglas sensibles.
Compensaciones
La autoridad central redujo la comodidad en los frontends y exigió una coordinación cuidadosa del contrato de API, pero aclaró la consistencia y la propiedad del estado crítico entre ambas superficies.

Contexto de producción

Acordeavos opera como un ecommerce real con flujos continuos de catálogo, inventario, precios, pedidos, reportes y administración. La asistencia de IA apoyó el trabajo de implementación en una etapa posterior, mientras que la funcionalidad del producto y las reglas de negocio del ecommerce continuaron siendo capacidades de software convencionales.

Resultado e impacto

Se entregaron superficies para clientes y operaciones optimizadas para sus tareas reales, con un límite de aplicación compartido y una autoridad más clara en el backend para las reglas críticas del ecommerce. Esto redujo el riesgo de comportamientos contradictorios de stock, precios, variantes, dinero y pedidos entre flujos.

Tecnologías

  • Next.js
  • React
  • Redux
  • GraphQL
  • Apollo
  • Node.js
  • Firebase

Diagrama de arquitectura

Arquitectura de Acordeavos con una tienda Next.js para SEO, SSR y experiencia de compra, y una SPA administrativa en React para flujos operativos. Ambas aplicaciones se conectan mediante Apollo a una API GraphQL compartida. La API es responsable de las reglas de negocio y el acceso a datos, protege invariantes autoritativas de dinero, stock, precios, variantes y totales de pedidos, y persiste los datos en Firebase. No existe una conexión directa entre los frontends y Firebase.