





















Acer0
Plataforma de E-Commerce a Medida
- Rol
- Full-stack · Arquitectura
- Tipo de trabajo
- Trabajo para cliente
- Industria
- Manufactura y retail
Resumen
El desafío
Enlaces
Privado — proyecto de cliente
Arquitectura del sistema
La plataforma está organizada como un monorepo full-stack. Un storefront en Next.js se ocupa de la presentación, una API en Express concentra todas las operaciones de escritura y una capa Backend-for-Frontend media entre ambos, manteniendo las credenciales de pago y los endpoints administrativos del lado del servidor.
Arquitectura de la aplicación
- Monorepo full-stack construido con Next.js 15 (App Router), Express y PostgreSQL.
- Capa Backend-for-Frontend que separa las APIs públicas del storefront de las operaciones administrativas privadas.
- Tipado de punta a punta con TypeScript y Prisma ORM, que hace visibles los cambios de esquema en tiempo de compilación.
- Entornos de desarrollo y producción basados en Docker para un comportamiento consistente entre etapas.
Funcionalidades de la plataforma
- Catálogo de productos con categorías, filtros avanzados, reseñas y listas de deseos.
- Cuentas de cliente con autenticación, historial de pedidos, gestión de perfil y recuperación de contraseña por email transaccional.
- Panel administrativo para productos, pedidos, cupones, moderación de reseñas y analítica de ventas.
- Interfaz responsive mobile-first que cubre desde viewports de 480px hasta monitores ultra-wide.
Seguridad
Todo lo expuesto públicamente está validado y con rate limiting, y los administradores pueden revocar credenciales de forma inmediata.
- JWT + versionado de tokens
- Google OAuth 2.0
- Control de acceso por roles
- Helmet
- Rate limiting
- Validación con Zod
- reCAPTCHA
Infraestructura y deploy
El cliente conserva la propiedad total del stack y de su hosting. Por eso el despliegue se diseñó para ser reproducible: la plataforma puede levantarse desde un VPS limpio siguiendo pasos documentados y automatizados.
Despliegue
- Stack completo containerizado con Docker Compose, incluyendo PostgreSQL 17, el backend en Express y el frontend en Next.js.
- PM2 en modo cluster permite recargas sin downtime y recuperación automática ante la caída de un proceso.
- El despliegue automatizado al VPS reduce cada release a un solo comando.
- Docker Compose
- PM2 cluster mode
- VPS
- Releases sin downtime
Base de datos
La integridad de los datos se garantiza en la capa de base de datos mediante constraints y reglas referenciales.
- Esquema de PostgreSQL modelado en Prisma para productos, variantes, categorías, pedidos, ítems de pedido, cupones, reseñas y usuarios.
- Foreign keys y constraints aplicadas por el propio motor de base de datos.
- Migraciones versionadas en el control de versiones, de modo que cada cambio de esquema sea revisable y reproducible.
- Scripts de seed que permiten armar entornos de staging con la misma estructura que producción.
Seguridad operativa
- Las API keys y las credenciales de pago quedan del lado del servidor, detrás del proxy BFF.
- Rate limiting aplicado a las rutas de autenticación y checkout.
- El versionado de tokens permite revocar de inmediato todos los tokens emitidos para un usuario.
Construido con
El e-commerce argentino necesita soportar tanto Mercado Pago como transferencias bancarias. Cada método sigue su propio camino de confirmación y ambos convergen en un único ciclo de vida del pedido, para que el fulfillment y la conciliación se mantengan consistentes.
Arquitectura de pagos
El estado del pedido se determina del lado del servidor a partir de las notificaciones por webhook, sin depender de la sesión del navegador.
- Las notificaciones de Mercado Pago se vuelven a verificar contra la API de pagos antes de modificar cualquier pedido.
- El procesamiento de webhooks es idempotente, así que las notificaciones duplicadas terminan en una única confirmación.
- Las preferencias de pago se crean del lado del servidor, con montos e ítems calculados en el backend.
Flujo de checkout
- Mercado Pago Checkout Pro resuelve las operaciones con tarjeta y billetera.
- El flujo de transferencia bancaria permite subir el comprobante de pago, con confirmación o rechazo desde administración.
- Ambos métodos desembocan en el mismo ciclo de vida del pedido, lo que mantiene unificada la lógica de fulfillment.
- Los cupones se validan al crear la preferencia y se revalidan en la confirmación, para que no se apliquen códigos vencidos o ya utilizados.
Ciclo de vida del pedido
Los pedidos avanzan por una máquina de estados explícita, con guardas de transición del lado del servidor.
- Estados: pendiente, pagado, entregado, cancelado y reembolsado.
- El panel administrativo sólo puede disparar las transiciones que permite la máquina de estados.
- Cada ítem guarda el nombre y el precio del producto al momento de la compra, preservando la exactitud del historial de pedidos aunque cambie el catálogo.
Validación y testing
- Testing end-to-end en el sandbox de Mercado Pago con cuentas de prueba dedicadas de comprador y vendedor.
- Cobertura de los resultados de pago aprobado, rechazado y pendiente.
- Verificación final con credenciales productivas antes del lanzamiento.
El proyecto entregó una plataforma que es propiedad total del cliente, desplegada en infraestructura que él controla y sin licencias recurrentes.
Entregado
- Storefront público con catálogo, búsqueda, filtros, carrito y checkout.
- Área de clientes con cuentas, seguimiento de pedidos, listas de deseos y gestión de perfil.
- Panel administrativo para productos, pedidos, cupones, reseñas y analítica de ventas.
- Asistente de IA con base de conocimiento editable, más vistas en el panel para sus conversaciones, los contactos capturados, la conversión y las preguntas sin respuesta.
- Despliegue productivo en infraestructura del cliente, con una configuración de Docker reproducible.
Traspaso
- Propiedad completa del código fuente, sin licencias ni costos de plataforma por usuario.
- Procedimiento de despliegue documentado para que futuros equipos puedan levantar el stack por su cuenta.
- Scripts de seed y migración para entornos de staging con la misma estructura que producción.