Arquitectura e-commerce a medida: diagnóstico, comparación con WooCommerce y hoja de ruta para una reescritura moderna
La tienda actual usa una SPA de React con Vite, una API REST propia y Cloudflare, ofreciendo una experiencia de navegación rápida tras la carga inicial, pero con puntos débiles en SEO, carga inicial y modelo de datos. A diferencia de WooCommerce o Shopify, el backend es completamente a medida; esto da control total...
La tienda actual usa una SPA de React con Vite, una API REST propia y Cloudflare, ofreciendo una experiencia de navegación rápida tras la carga inicial, pero con puntos débiles en SEO, carga inicial y modelo de datos.
A diferencia de WooCommerce o Shopify, el backend es completamente a medida; esto da control total pero exige mantener desde cero funciones críticas como carrito, cupones, pagos y envíos.
El análisis revela riesgos concretos: datos de producto no normalizados (talla/color como arrays, stock a nivel de producto), dependencia excesiva de JavaScript para el renderizado inicial y una API que podría no esca...
Se recomienda migrar a una arquitectura híbrida con SSR/ISR (ej. Next.js), manteniendo el backend custom pero mejorando el modelo de datos, la seguridad en pagos, el SEO y la estrategia de caché.
Bạn là bộ NÃO LẬP KẾ HOẠCH của một code agentAI-generated editorial hero image for Bạn là bộ NÃO LẬP KẾ HOẠCH của một code agent. Bạn không trực tiếp truy cập máy; ENGINE sẽ thực thi đúng một lệnh JSON bạn in ra và trả kết.
Prompt de IA
Create a landscape editorial hero image for this Studio Global article: Bạn là bộ NÃO LẬP KẾ HOẠCH của một code agent. Bạn không trực tiếp truy cập máy; ENGINE sẽ thực thi đúng một lệnh JSON bạn in ra và trả kết. Article summary: {"tool":"write","args":{"path":"PHAN TICH KIEN TRUC ECOMMERCE.md","content":" Phân tích kiến trúc và hướng viết lại nền tảng e commerce\n\n Phạm vi và mức độ chắc chắn\n\nBáo cáo này phân biệt rõ ba loại kết luận:\n\n Dữ. Topic tags: general web, workflow, code, python, javascript. Style: premium digital editorial illustration, source-backed research mood, clean composition, high detail, modern web publication hero. Use reference image context only for broad subject, composition, and topical grounding; do not copy the exact image. Avoid: logos, brand marks, copyrighted characters, real person likenesses, fake screenshots, UI text, readable text, watermarks, char
openai.com
Diagnóstico de la arquitectura actual: una tienda hecha a medida con luces y sombras
Imagina una tienda online que se siente rápida al navegar, con transiciones suaves entre páginas y un diseño totalmente único. Detrás de esa fachada, el andamio técnico revela decisiones inteligentes, pero también algunas vulnerabilidades que, con el tiempo, pueden convertirse en un dolor de cabeza. Este es un análisis detallado de un e-commerce real construido sobre una pila tecnológica muy común hoy en día: React + Vite en el frontend y una API REST propia en el backend, con Cloudflare como CDN y proxy inverso.
El panorama general: tres capas, un objetivo
La tienda no está montada sobre WordPress/WooCommerce, Shopify ni ninguna plataforma empaquetada. Es un desarrollo completamente a medida que sigue el patrón de tres capas:
Cloudflare actúa como primera línea: sirve los archivos estáticos (JavaScript, CSS, imágenes) desde su edge y redirige las peticiones dinámicas al servidor de origen.
Una SPA (Single Page Application) de React, construida con Vite, se encarga de toda la interfaz de usuario, la navegación y la gestión del estado en el navegador.
Un backend REST independiente proporciona la lógica de negocio: el catálogo de productos, el CMS para el contenido, la configuración de la tienda, los cupones, la integración con PayPal, el formulario de contacto, la newsletter, las reseñas y el tracking.
Esta arquitectura, conocida como "headless" o "frontend desacoplado", ofrece una flexibilidad enorme para el diseño de la interfaz. El equipo de desarrollo tiene control total sobre cada píxel y cada interacción, sin las limitaciones de un tema de tienda tradicional.
El problema del primer renderizado: el talón de Aquiles de las SPAs
Cuando un usuario (o un robot de Google) visita por primera vez la página de inicio o una ficha de producto, el servidor envía un "esqueleto" HTML casi vacío (un app-shell o "cáscara de aplicación") que solo contiene un <div id="root"> y los enlaces a los archivos JavaScript y CSS. La magia ocurre después:
El navegador descarga los archivos JS (que pueden ser pesados).
Los procesa y ejecuta.
React se inicia, el enrutador determina qué página mostrar.
La página hace una o varias llamadas a la API REST para obtener los datos (productos, configuración, contenido).
Finalmente, React pinta el contenido en la pantalla.
Este proceso, llamado Client-Side Rendering (CSR), tiene una consecuencia directa: el contenido visible para el usuario y para los motores de búsqueda se retrasa. Para el usuario con mala conexión, la pantalla puede permanecer en blanco varios segundos. Para Google, aunque es capaz de ejecutar JavaScript, este retraso puede significar que la página no se indexe correctamente o que se considere más lenta de lo que realmente es .
Studio Global AI
Continúe su investigación
Esta página incluye una respuesta respaldada por fuentes que puede continuar dentro de Studio Global.
¿Cuál es la respuesta corta a "Arquitectura e-commerce a medida: diagnóstico, comparación con WooCommerce y hoja de ruta para una reescritura moderna"?
La tienda actual usa una SPA de React con Vite, una API REST propia y Cloudflare, ofreciendo una experiencia de navegación rápida tras la carga inicial, pero con puntos débiles en SEO, carga inicial y modelo de datos.
¿Cuáles son los puntos clave a validar primero?
La tienda actual usa una SPA de React con Vite, una API REST propia y Cloudflare, ofreciendo una experiencia de navegación rápida tras la carga inicial, pero con puntos débiles en SEO, carga inicial y modelo de datos. A diferencia de WooCommerce o Shopify, el backend es completamente a medida; esto da control total pero exige mantener desde cero funciones críticas como carrito, cupones, pagos y envíos.
¿Qué debo hacer a continuación en la práctica?
El análisis revela riesgos concretos: datos de producto no normalizados (talla/color como arrays, stock a nivel de producto), dependencia excesiva de JavaScript para el renderizado inicial y una API que podría no esca...
Arquitectura e-commerce a medida: diagnóstico, comparación con WooCommerce y hoja de ruta para una reescritura moderna
La tienda actual usa una SPA de React con Vite, una API REST propia y Cloudflare, ofreciendo una experiencia de navegación rápida tras la carga inicial, pero con puntos débiles en SEO, carga inicial y modelo de datos. A diferencia de WooCommerce o Shopify, el backend es completamente a medida; esto da control total...
La tienda actual usa una SPA de React con Vite, una API REST propia y Cloudflare, ofreciendo una experiencia de navegación rápida tras la carga inicial, pero con puntos débiles en SEO, carga inicial y modelo de datos.
A diferencia de WooCommerce o Shopify, el backend es completamente a medida; esto da control total pero exige mantener desde cero funciones críticas como carrito, cupones, pagos y envíos.
El análisis revela riesgos concretos: datos de producto no normalizados (talla/color como arrays, stock a nivel de producto), dependencia excesiva de JavaScript para el renderizado inicial y una API que podría no esca...
Se recomienda migrar a una arquitectura híbrida con SSR/ISR (ej. Next.js), manteniendo el backend custom pero mejorando el modelo de datos, la seguridad en pagos, el SEO y la estrategia de caché.
Bạn là bộ NÃO LẬP KẾ HOẠCH của một code agentAI-generated editorial hero image for Bạn là bộ NÃO LẬP KẾ HOẠCH của một code agent. Bạn không trực tiếp truy cập máy; ENGINE sẽ thực thi đúng một lệnh JSON bạn in ra và trả kết.
Prompt de IA
Create a landscape editorial hero image for this Studio Global article: Bạn là bộ NÃO LẬP KẾ HOẠCH của một code agent. Bạn không trực tiếp truy cập máy; ENGINE sẽ thực thi đúng một lệnh JSON bạn in ra và trả kết. Article summary: {"tool":"write","args":{"path":"PHAN TICH KIEN TRUC ECOMMERCE.md","content":" Phân tích kiến trúc và hướng viết lại nền tảng e commerce\n\n Phạm vi và mức độ chắc chắn\n\nBáo cáo này phân biệt rõ ba loại kết luận:\n\n Dữ. Topic tags: general web, workflow, code, python, javascript. Style: premium digital editorial illustration, source-backed research mood, clean composition, high detail, modern web publication hero. Use reference image context only for broad subject, composition, and topical grounding; do not copy the exact image. Avoid: logos, brand marks, copyrighted characters, real person likenesses, fake screenshots, UI text, readable text, watermarks, char
openai.com
Diagnóstico de la arquitectura actual: una tienda hecha a medida con luces y sombras
Imagina una tienda online que se siente rápida al navegar, con transiciones suaves entre páginas y un diseño totalmente único. Detrás de esa fachada, el andamio técnico revela decisiones inteligentes, pero también algunas vulnerabilidades que, con el tiempo, pueden convertirse en un dolor de cabeza. Este es un análisis detallado de un e-commerce real construido sobre una pila tecnológica muy común hoy en día: React + Vite en el frontend y una API REST propia en el backend, con Cloudflare como CDN y proxy inverso.
El panorama general: tres capas, un objetivo
La tienda no está montada sobre WordPress/WooCommerce, Shopify ni ninguna plataforma empaquetada. Es un desarrollo completamente a medida que sigue el patrón de tres capas:
Cloudflare actúa como primera línea: sirve los archivos estáticos (JavaScript, CSS, imágenes) desde su edge y redirige las peticiones dinámicas al servidor de origen.
Una SPA (Single Page Application) de React, construida con Vite, se encarga de toda la interfaz de usuario, la navegación y la gestión del estado en el navegador.
Un backend REST independiente proporciona la lógica de negocio: el catálogo de productos, el CMS para el contenido, la configuración de la tienda, los cupones, la integración con PayPal, el formulario de contacto, la newsletter, las reseñas y el tracking.
Esta arquitectura, conocida como "headless" o "frontend desacoplado", ofrece una flexibilidad enorme para el diseño de la interfaz. El equipo de desarrollo tiene control total sobre cada píxel y cada interacción, sin las limitaciones de un tema de tienda tradicional.
El problema del primer renderizado: el talón de Aquiles de las SPAs
Cuando un usuario (o un robot de Google) visita por primera vez la página de inicio o una ficha de producto, el servidor envía un "esqueleto" HTML casi vacío (un app-shell o "cáscara de aplicación") que solo contiene un <div id="root"> y los enlaces a los archivos JavaScript y CSS. La magia ocurre después:
El navegador descarga los archivos JS (que pueden ser pesados).
Los procesa y ejecuta.
React se inicia, el enrutador determina qué página mostrar.
La página hace una o varias llamadas a la API REST para obtener los datos (productos, configuración, contenido).
Finalmente, React pinta el contenido en la pantalla.
Este proceso, llamado Client-Side Rendering (CSR), tiene una consecuencia directa: el contenido visible para el usuario y para los motores de búsqueda se retrasa. Para el usuario con mala conexión, la pantalla puede permanecer en blanco varios segundos. Para Google, aunque es capaz de ejecutar JavaScript, este retraso puede significar que la página no se indexe correctamente o que se considere más lenta de lo que realmente es .
Studio Global AI
Continúe su investigación
Esta página incluye una respuesta respaldada por fuentes que puede continuar dentro de Studio Global.
¿Cuál es la respuesta corta a "Arquitectura e-commerce a medida: diagnóstico, comparación con WooCommerce y hoja de ruta para una reescritura moderna"?
La tienda actual usa una SPA de React con Vite, una API REST propia y Cloudflare, ofreciendo una experiencia de navegación rápida tras la carga inicial, pero con puntos débiles en SEO, carga inicial y modelo de datos.
¿Cuáles son los puntos clave a validar primero?
La tienda actual usa una SPA de React con Vite, una API REST propia y Cloudflare, ofreciendo una experiencia de navegación rápida tras la carga inicial, pero con puntos débiles en SEO, carga inicial y modelo de datos. A diferencia de WooCommerce o Shopify, el backend es completamente a medida; esto da control total pero exige mantener desde cero funciones críticas como carrito, cupones, pagos y envíos.
¿Qué debo hacer a continuación en la práctica?
El análisis revela riesgos concretos: datos de producto no normalizados (talla/color como arrays, stock a nivel de producto), dependencia excesiva de JavaScript para el renderizado inicial y una API que podría no esca...
El riesgo de los "soft 404" es otra consecuencia de este enfoque. Si el frontend usa un enrutador del lado del cliente que atrapa todas las URLs (por ejemplo, /producto/que-no-existe) y sirve el mismo app-shell con un código de estado HTTP 200, Google puede interpretar que esa página existe pero está vacía, clasificándola como un "soft 404" en lugar de un error 404 legítimo .
Luces del lado técnico: qué se ha hecho bien
A pesar de los desafíos, el equipo ha tomado decisiones muy acertadas:
Independencia de la UI del backend: Al ser una SPA, los cambios de diseño o la adición de nuevas animaciones no requieren tocar la lógica del servidor. Es un sueño para cualquier equipo de frontend.
Cacheo eficiente de activos estáticos: Vite genera nombres de archivo con un hash único (index-abc123.js). Esto permite que el CDN los cachee durante mucho tiempo (Cache-Control: immutable). Cuando se lanza una nueva versión, los nombres cambian, y los navegadores descargan los nuevos archivos sin necesidad de purgar manualmente la caché.
Un CMS para el marketing: La página de inicio no es un conjunto de componentes fijos. Un endpoint como /api/homepage devuelve una configuración con el orden de las secciones (section_order) y sus respectivos datos (imágenes, textos, productos destacados). El equipo de marketing puede reorganizar, ocultar o mostrar bloques sin necesidad de que un desarrollador toque el código. Es una decisión de arquitectura excelente para un negocio que busca agilidad.
Debes técnicas por corregir: donde el modelo de datos muestra su edad
El análisis más revelador viene de la estructura de los datos. La API devuelve información que, aunque funcional, tiene varias señales de haber crecido de forma orgánica y no del todo planeada:
Modelo de producto "centrado en el producto" vs. "centrado en la variante": En el mundo real, el inventario se gestiona por combinación de atributos (una camiseta en talla M y color Negro es un SKU distinto a la misma camiseta en talla L y color Azul). En los datos actuales, el campo stock está a nivel de producto, mientras que también existe un array de variants. Además, campos como sizes, colors y genders son arrays directamente en el producto, lo que puede llevar a duplicidad e inconsistencia (por ejemplo, un producto puede tener sizes: ['M', 'L'] y variants que también definen la talla). Esto es una fuente de errores para el control de stock y para el filtrado.
Inconsistencias en datos básicos: Se observan valores como "XXL" y "2XL", o "ink navy" y "Ink Navy". La falta de normalización en los valores de los atributos complica los filtros, los informes de ventas y la asociación de imágenes por variante.
Mezcla de conceptos: Campos como type e isbn parecen ser genéricos o reutilizados de otro contexto, lo que puede generar confusión sobre su propósito real.
Configuración expuesta: El endpoint /api/public/settings devuelve una gran cantidad de información (impuestos, direcciones, IDs de PayPal, umbrales de envío). Aunque algunos valores como el client_id de PayPal son públicos por necesidad, otros como los detalles fiscales o la configuración interna de la tienda no deberían estar expuestos sin una validación más estricta. Esto es un riesgo de seguridad de la información.
El flujo de pago: un detalle que no se puede pasar por alto
El checkout con PayPal sigue la lógica correcta:
El frontend envía el carrito y el cupón al backend.
El backend (¡y nunca el frontend!) vuelve a calcular el total, los descuentos y los impuestos. Confiar en el precio enviado por el navegador es un error de seguridad crítico, ya que el usuario podría manipularlo.
El backend crea una orden en PayPal usando credenciales secretas del servidor.
El usuario aprueba el pago en la ventana de PayPal.
El backend captura la orden y crea la orden final en la base de datos, descontando el stock.
Sin embargo, la verdadera calidad de este flujo depende de detalles que no son visibles desde el exterior: ¿Se usa una clave de idempotencia para evitar que un doble clic genere dos cobros? ¿Hay un mecanismo de bloqueo (locking) para evitar la sobreventa? ¿Se registran todos los intentos de pago antes de contactar al proveedor? ¿Se verifican las firmas de los webhooks de PayPal? Son preguntas que cualquier reescritura debe responder.
Comparativa frontal: ¿Es mejor una SPA a medida que WooCommerce?
No se puede decir que una arquitectura sea superior a otra solo por su nombre. Depende del contexto. Aquí tienes una comparativa para ayudar a decidir.
Rendimiento y velocidad de carga
Custom SPA: Brilla en la navegación interna (cambios de página) que son instantáneos al solo cargar datos. Sufre en la primera carga, que puede ser lenta y con una pantalla en blanco.
WooCommerce: Es más rápido en la primera visita (el servidor envía HTML completo), pero puede volverse lento si se llena de plugins pesados o si la base de datos no está optimizada.
SEO (Posicionamiento en buscadores)
Custom SPA (CSR puro): Es un riesgo. Google puede indexar el contenido, pero con retraso y con posible pérdida de información. Los metadatos (título, descripción) se actualizan con JS, por lo que los robots de redes sociales pueden mostrarlos incorrectamente.
WooCommerce: Tiene una ventaja natural, ya que el HTML del producto, la categoría y los metadatos se envían desde el servidor. Es más fácil para los buscadores de entrada.
Flexibilidad de la interfaz
Custom SPA: Gana por goleada. No hay límites para el diseño, las animaciones o las interacciones complejas.
WooCommerce: Depende del tema y de los constructores de páginas. Es flexible, pero con más limitaciones y a costa de rendimiento.
Mantenimiento y costes
Custom SPA: El coste es la ingeniería. Cada funcionalidad (carrito, descuentos, reseñas, email) debe construirse y mantenerse por el equipo. No hay plugins. Es más caro en horas de desarrollo.
WooCommerce: El coste es la gestión del ecosistema. Se depende de actualizaciones de WordPress, WooCommerce, temas y plugins. Un plugin que se actualiza puede romper otro. Es más barato en desarrollo inicial, pero puede ser más caro en mantenimiento a largo plazo si no se gestiona bien.
Escalabilidad
Custom SPA: La arquitectura headless permite escalar el frontend (estático) y el backend (API) de forma independiente. Es mejor para manejar picos de tráfico.
WooCommerce: Escalar un sitio WooCommerce tradicional puede ser un reto porque todo pasa por el mismo servidor PHP y la misma base de datos. Requiere una buena configuración de caché y hosting especializado.
La hoja de ruta para una reescritura inteligente
El diagnóstico es claro: el núcleo de la tienda tiene una base sólida (control total, CMS propio), pero el vehículo que la transporta (la SPA pura) está mostrando sus limitaciones. La recomendación no es pasarse a WooCommerce, sino reescribir el frontend con una estrategia de renderizado híbrido, manteniendo el backend custom (pero mejorándolo).
Principios fundamentales para el nuevo código
SSR/ISR (Server-Side Rendering / Incremental Static Regeneration) para contenido público. Las páginas de inicio, las fichas de producto y las categorías deben servirse como HTML completo. Esto soluciona de raíz los problemas de SEO y de primera carga lenta. El framework ideal para esto es Next.js (App Router), pero también servirían Remix o Nuxt.
CSR solo para zonas interactivas. El carrito, el panel de usuario y los filtros pueden seguir funcionando con JavaScript una vez que la página ya ha cargado. Esto se llama "progressive enhancement" (mejora progresiva).
Estandarización del modelo de datos. El nuevo backend debe tener un modelo de producto "centrado en la variante". Cada combinación de atributos (talla, color) debe ser un SKU único con su propio stock y precio. Los valores de los atributos deben estar normalizados (un único valor para "Ink Navy", no mayúsculas y minúsculas mezcladas).
Seguridad y corrección en el checkout. Implementar idempotencia para los pagos, transacciones de base de datos para el inventario, verificación estricta de webhooks de PayPal y un registro detallado de todos los intentos de pago.
Separación de la configuración. No exponer toda la configuración de la tienda en un endpoint público. Separar la configuración pública (colores, textos) de la interna y secreta (API keys, configuraciones de envío).
Validación y gestión de errores. El CMS de la página de inicio propone un cambio radical: en lugar de tener tres estructuras separadas (orden, toggles y payload), usar una única lista de bloques donde cada uno contenga su ID, tipo, estado (activo/inactivo), posición y datos. Esto elimina la posibilidad de que los datos se desincronicen.
Tecnología propuesta para el nuevo stack
Frontend: Next.js (App Router) + React + TypeScript + TanStack Query (solo para datos que necesiten refresco en cliente).
Backend: NestJS (con Fastify) o un módulo de Fastify con TypeScript. Ofrece una estructura sólida y testeable.
Base de datos: PostgreSQL, con un ORM como Prisma o Drizzle para consultas tipadas y seguras.
Cache: Redis (cuando sea necesario, no desde el día uno).
Infraestructura: CDN (Cloudflare ya está), contenedores para el backend, almacenamiento de objetos para imágenes (S3 o similar) y un sistema de colas (BullMQ) para tareas asíncronas (envío de emails, webhooks).
Observabilidad: Implementar logging estructurado, métricas y un sistema de rastreo de errores desde el principio para poder depurar problemas de checkout y rendimiento.
Conclusión: el camino correcto no es cambiar de plataforma, es evolucionar la arquitectura
El análisis de esta tienda online revela un problema común en el desarrollo web moderno: construir una SPA porque "está de moda" o porque da una sensación de modernidad, sin considerar las implicaciones para el SEO, la accesibilidad y la primera experiencia de usuario. La solución no es tirar todo por la borda y mudarse a WooCommerce, perdiendo todo el control y la personalización ganados. La solución es adoptar un enfoque más maduro y equilibrado.
Migrar a una arquitectura con Server-Side Rendering (SSR) y Static Generation (SSG/ISR) es, con diferencia, la mejor inversión que se puede hacer. Se mantiene la flexibilidad del frontend moderno, se gana en velocidad de carga inicial y en visibilidad en buscadores, y se corrigen los problemas de raíz del modelo de datos. No es un cambio de plataforma; es una evolución hacia una arquitectura más robusta y preparada para el futuro.
El riesgo de los "soft 404" es otra consecuencia de este enfoque. Si el frontend usa un enrutador del lado del cliente que atrapa todas las URLs (por ejemplo, /producto/que-no-existe) y sirve el mismo app-shell con un código de estado HTTP 200, Google puede interpretar que esa página existe pero está vacía, clasificándola como un "soft 404" en lugar de un error 404 legítimo .
Luces del lado técnico: qué se ha hecho bien
A pesar de los desafíos, el equipo ha tomado decisiones muy acertadas:
Independencia de la UI del backend: Al ser una SPA, los cambios de diseño o la adición de nuevas animaciones no requieren tocar la lógica del servidor. Es un sueño para cualquier equipo de frontend.
Cacheo eficiente de activos estáticos: Vite genera nombres de archivo con un hash único (index-abc123.js). Esto permite que el CDN los cachee durante mucho tiempo (Cache-Control: immutable). Cuando se lanza una nueva versión, los nombres cambian, y los navegadores descargan los nuevos archivos sin necesidad de purgar manualmente la caché.
Un CMS para el marketing: La página de inicio no es un conjunto de componentes fijos. Un endpoint como /api/homepage devuelve una configuración con el orden de las secciones (section_order) y sus respectivos datos (imágenes, textos, productos destacados). El equipo de marketing puede reorganizar, ocultar o mostrar bloques sin necesidad de que un desarrollador toque el código. Es una decisión de arquitectura excelente para un negocio que busca agilidad.
Debes técnicas por corregir: donde el modelo de datos muestra su edad
El análisis más revelador viene de la estructura de los datos. La API devuelve información que, aunque funcional, tiene varias señales de haber crecido de forma orgánica y no del todo planeada:
Modelo de producto "centrado en el producto" vs. "centrado en la variante": En el mundo real, el inventario se gestiona por combinación de atributos (una camiseta en talla M y color Negro es un SKU distinto a la misma camiseta en talla L y color Azul). En los datos actuales, el campo stock está a nivel de producto, mientras que también existe un array de variants. Además, campos como sizes, colors y genders son arrays directamente en el producto, lo que puede llevar a duplicidad e inconsistencia (por ejemplo, un producto puede tener sizes: ['M', 'L'] y variants que también definen la talla). Esto es una fuente de errores para el control de stock y para el filtrado.
Inconsistencias en datos básicos: Se observan valores como "XXL" y "2XL", o "ink navy" y "Ink Navy". La falta de normalización en los valores de los atributos complica los filtros, los informes de ventas y la asociación de imágenes por variante.
Mezcla de conceptos: Campos como type e isbn parecen ser genéricos o reutilizados de otro contexto, lo que puede generar confusión sobre su propósito real.
Configuración expuesta: El endpoint /api/public/settings devuelve una gran cantidad de información (impuestos, direcciones, IDs de PayPal, umbrales de envío). Aunque algunos valores como el client_id de PayPal son públicos por necesidad, otros como los detalles fiscales o la configuración interna de la tienda no deberían estar expuestos sin una validación más estricta. Esto es un riesgo de seguridad de la información.
El flujo de pago: un detalle que no se puede pasar por alto
El checkout con PayPal sigue la lógica correcta:
El frontend envía el carrito y el cupón al backend.
El backend (¡y nunca el frontend!) vuelve a calcular el total, los descuentos y los impuestos. Confiar en el precio enviado por el navegador es un error de seguridad crítico, ya que el usuario podría manipularlo.
El backend crea una orden en PayPal usando credenciales secretas del servidor.
El usuario aprueba el pago en la ventana de PayPal.
El backend captura la orden y crea la orden final en la base de datos, descontando el stock.
Sin embargo, la verdadera calidad de este flujo depende de detalles que no son visibles desde el exterior: ¿Se usa una clave de idempotencia para evitar que un doble clic genere dos cobros? ¿Hay un mecanismo de bloqueo (locking) para evitar la sobreventa? ¿Se registran todos los intentos de pago antes de contactar al proveedor? ¿Se verifican las firmas de los webhooks de PayPal? Son preguntas que cualquier reescritura debe responder.
Comparativa frontal: ¿Es mejor una SPA a medida que WooCommerce?
No se puede decir que una arquitectura sea superior a otra solo por su nombre. Depende del contexto. Aquí tienes una comparativa para ayudar a decidir.
Rendimiento y velocidad de carga
Custom SPA: Brilla en la navegación interna (cambios de página) que son instantáneos al solo cargar datos. Sufre en la primera carga, que puede ser lenta y con una pantalla en blanco.
WooCommerce: Es más rápido en la primera visita (el servidor envía HTML completo), pero puede volverse lento si se llena de plugins pesados o si la base de datos no está optimizada.
SEO (Posicionamiento en buscadores)
Custom SPA (CSR puro): Es un riesgo. Google puede indexar el contenido, pero con retraso y con posible pérdida de información. Los metadatos (título, descripción) se actualizan con JS, por lo que los robots de redes sociales pueden mostrarlos incorrectamente.
WooCommerce: Tiene una ventaja natural, ya que el HTML del producto, la categoría y los metadatos se envían desde el servidor. Es más fácil para los buscadores de entrada.
Flexibilidad de la interfaz
Custom SPA: Gana por goleada. No hay límites para el diseño, las animaciones o las interacciones complejas.
WooCommerce: Depende del tema y de los constructores de páginas. Es flexible, pero con más limitaciones y a costa de rendimiento.
Mantenimiento y costes
Custom SPA: El coste es la ingeniería. Cada funcionalidad (carrito, descuentos, reseñas, email) debe construirse y mantenerse por el equipo. No hay plugins. Es más caro en horas de desarrollo.
WooCommerce: El coste es la gestión del ecosistema. Se depende de actualizaciones de WordPress, WooCommerce, temas y plugins. Un plugin que se actualiza puede romper otro. Es más barato en desarrollo inicial, pero puede ser más caro en mantenimiento a largo plazo si no se gestiona bien.
Escalabilidad
Custom SPA: La arquitectura headless permite escalar el frontend (estático) y el backend (API) de forma independiente. Es mejor para manejar picos de tráfico.
WooCommerce: Escalar un sitio WooCommerce tradicional puede ser un reto porque todo pasa por el mismo servidor PHP y la misma base de datos. Requiere una buena configuración de caché y hosting especializado.
La hoja de ruta para una reescritura inteligente
El diagnóstico es claro: el núcleo de la tienda tiene una base sólida (control total, CMS propio), pero el vehículo que la transporta (la SPA pura) está mostrando sus limitaciones. La recomendación no es pasarse a WooCommerce, sino reescribir el frontend con una estrategia de renderizado híbrido, manteniendo el backend custom (pero mejorándolo).
Principios fundamentales para el nuevo código
SSR/ISR (Server-Side Rendering / Incremental Static Regeneration) para contenido público. Las páginas de inicio, las fichas de producto y las categorías deben servirse como HTML completo. Esto soluciona de raíz los problemas de SEO y de primera carga lenta. El framework ideal para esto es Next.js (App Router), pero también servirían Remix o Nuxt.
CSR solo para zonas interactivas. El carrito, el panel de usuario y los filtros pueden seguir funcionando con JavaScript una vez que la página ya ha cargado. Esto se llama "progressive enhancement" (mejora progresiva).
Estandarización del modelo de datos. El nuevo backend debe tener un modelo de producto "centrado en la variante". Cada combinación de atributos (talla, color) debe ser un SKU único con su propio stock y precio. Los valores de los atributos deben estar normalizados (un único valor para "Ink Navy", no mayúsculas y minúsculas mezcladas).
Seguridad y corrección en el checkout. Implementar idempotencia para los pagos, transacciones de base de datos para el inventario, verificación estricta de webhooks de PayPal y un registro detallado de todos los intentos de pago.
Separación de la configuración. No exponer toda la configuración de la tienda en un endpoint público. Separar la configuración pública (colores, textos) de la interna y secreta (API keys, configuraciones de envío).
Validación y gestión de errores. El CMS de la página de inicio propone un cambio radical: en lugar de tener tres estructuras separadas (orden, toggles y payload), usar una única lista de bloques donde cada uno contenga su ID, tipo, estado (activo/inactivo), posición y datos. Esto elimina la posibilidad de que los datos se desincronicen.
Tecnología propuesta para el nuevo stack
Frontend: Next.js (App Router) + React + TypeScript + TanStack Query (solo para datos que necesiten refresco en cliente).
Backend: NestJS (con Fastify) o un módulo de Fastify con TypeScript. Ofrece una estructura sólida y testeable.
Base de datos: PostgreSQL, con un ORM como Prisma o Drizzle para consultas tipadas y seguras.
Cache: Redis (cuando sea necesario, no desde el día uno).
Infraestructura: CDN (Cloudflare ya está), contenedores para el backend, almacenamiento de objetos para imágenes (S3 o similar) y un sistema de colas (BullMQ) para tareas asíncronas (envío de emails, webhooks).
Observabilidad: Implementar logging estructurado, métricas y un sistema de rastreo de errores desde el principio para poder depurar problemas de checkout y rendimiento.
Conclusión: el camino correcto no es cambiar de plataforma, es evolucionar la arquitectura
El análisis de esta tienda online revela un problema común en el desarrollo web moderno: construir una SPA porque "está de moda" o porque da una sensación de modernidad, sin considerar las implicaciones para el SEO, la accesibilidad y la primera experiencia de usuario. La solución no es tirar todo por la borda y mudarse a WooCommerce, perdiendo todo el control y la personalización ganados. La solución es adoptar un enfoque más maduro y equilibrado.
Migrar a una arquitectura con Server-Side Rendering (SSR) y Static Generation (SSG/ISR) es, con diferencia, la mejor inversión que se puede hacer. Se mantiene la flexibilidad del frontend moderno, se gana en velocidad de carga inicial y en visibilidad en buscadores, y se corrigen los problemas de raíz del modelo de datos. No es un cambio de plataforma; es una evolución hacia una arquitectura más robusta y preparada para el futuro.