Carman Parts + Cozza Parts - Caso multi-marca

Un solo codigo, dos marcas: branding, datos y automatizaciones por empresa.

Version 2.0: reescritura de los sitios de Carman Parts y Cozza Parts en una Single Page Application (SPA) con Vue 3 + Vite y backend Node.js + Express como API unificada y proxy hacia Mercado Libre, reutilizando la misma logica de catalogo y filtros para ambas marcas.

Resumen

Version 2.0 - SPA unificada para Carman Parts y Cozza Parts

Reescritura completa de los sitios de Carman Parts y Cozza Parts en una Single Page Application (SPA) desarrollada con Vue 3 + Vite, consumiendo una API propia en Node.js + Express. La nueva version centraliza la logica de catalogo, filtros y busqueda, y permite reutilizar el mismo codigo para ambas marcas cambiando unicamente logo, colores y textos.

  • Catalogo con busqueda y filtros en cascada, compartidos por marca.
  • Listado y detalle de repuestos normalizados desde Mercado Libre.
  • SPA responsive con mejor tiempo de respuesta que la version PHP.
  • API Node que unifica la integracion a Mercado Libre y automatizaciones.
  • Lista para sumar nuevas marcas sin duplicar codigo.

Que cambia por marca

  • Branding (logo, colores, textos) y dominio propio.
  • Credenciales OAuth2 y tokens almacenados de forma segura por sitio.
  • Conexion de base separada (host/schema/usuarios) cuando aplica.
  • Listados y reglas segun disponibilidad/stock de cada empresa.

Arquitectura

Front 2.0: SPA en Vue 3 + Vite con componentes reutilizables para cabecera, filtros, grilla y detalle de producto, y router para home, catalogo y contacto. Back 2.0: API en Node.js + Express que actua como capa unica entre el front y Mercado Libre, con endpoints para catalogo, detalle y jobs de sincronizacion.

Backend / API Node

Proyecto estructurado por capas (routes -> controllers -> services) y helpers para autenticacion OAuth2, normalizacion de datos y llamadas a la API de Mercado Libre.

backend/
|- src/
|  |- routes/
|  |- controllers/
|  |- services/
|  |- jobs/
|  `- config/
`- .env (tokens y claves fuera del codigo)

SPA Vue 3 + Vite

Componentes compartidos para Carman y Cozza (ProductCard, ProductGrid, ProductFilters) y layout que cambia branding y textos segun la marca a partir de configuracion.

frontend/
|- src/
|  |- views/
|  |- components/
|  |- composables/
|  `- router/
`- .env.* (variables por entorno y marca)

Retos & soluciones

  • Unificar dos sitios en una sola SPA -> diseno de componentes neutrales y branding inyectado por configuracion.
  • Mantener filtros y paginacion real -> normalizacion de la respuesta de Mercado Libre en la API Node para que el front consuma siempre el mismo formato.
  • Multi-marca sin duplicar logica -> variables de entorno por dominio (Carman/Cozza) y mapping de categorias/URLs por marca.
  • Rendimiento -> build con Vite, splitting de bundles, cache de respuestas frecuentes y optimizacion de imagenes.
  • Migracion gradual -> convivio con la version PHP mientras se probaba la nueva arquitectura sin cortar servicio.

Galeria

Carman Parts - Capturas

Resultados

  • Un mismo front y una misma API mantienen 2 marcas funcionando con branding y datos separados.
  • Catalogo rapido con SPA Vue + Vite, filtros combinables y paginacion real contra la API Node.
  • Escalable para sumar nuevas marcas sin tocar la logica core de catalogo.
  • Automatizaciones centralizadas (jobs Node) para publicar/actualizar en Mercado Libre por empresa.