kaloni.gr — E-Commerce de Calzado Bilingüe en Laravel
Resumen
Diseñamos y desarrollamos kaloni.gr, una tienda e-commerce Laravel 12 bilingüe (griego/inglés) para una marca de calzado femenino con sede en Serres. La tienda admite variantes de producto (talla + color), galerías filtradas por color, lista de deseos (sesión para invitados, BD para usuarios autenticados con fusión al iniciar sesión), productos vistos recientemente, búsqueda con autocompletado y detección de zona de envío en tiempo real. Los pagos utilizan una abstracción agnóstica de pasarela (PaymentGatewayInterface con resultados respaldados por DTO) que soporta Stripe 3DS, Cardlink hosted-redirect con verificación HMAC-SHA256 digest, transferencia bancaria, contra reembolso y pago al recoger. El panel de administración cubre productos/variantes/categorías, cupones, zonas de envío, ciclo de vida del pedido y transiciones de estado de pago, moderación de reseñas, suscripciones de boletín y de vuelta a stock, gestión de clientes con autoeliminación RGPD (anonimización vs eliminación dura) y registro de actividad. El contenido bilingüe usa tablas *_translations dedicadas con una cadena inteligente de respaldo de localización (prefijo URL → sesión → preferencia del usuario → config), que alimenta URLs SEO-friendly /el/ y /en/ con alternates hreflang y JSON-LD de Organization/WebSite en cada página. Las imágenes se sirven mediante Intervention Image v3 con srcsets <picture> responsivos y hermanos WebP; los scripts inline cumplen CSP mediante nonces de Vite; el seguimiento e-commerce GA4 (view_item, add_to_cart, purchase) está condicionado al consentimiento de cookies. La lógica de negocio está aislada en 23 clases de servicio para una base lista para API.
Retos
Construir un sistema de pagos multi-pasarela que soporte limpiamente tanto flujos síncronos (efectivo, transferencia bancaria) como asíncronos con redirección (Stripe 3DS, Cardlink HMAC), manteniendo a la vez simple el modelo de contenido bilingüe y rápido el catálogo en cientos de variantes de producto.
Soluciones
Diseñamos una PaymentGatewayInterface con resultados respaldados por DTO para que cada pasarela encaje detrás de la misma API; usamos tablas *_translations dedicadas con una cadena de respaldo (prefijo URL → sesión → preferencia del usuario → config) para que la traducción viva en un solo lugar por entidad; cacheamos hermanos WebP responsivos mediante Intervention Image v3 y los servimos a través de etiquetas <picture> srcset con dimensiones explícitas para prevenir CLS.