KEVZEC — Tienda multivertical con motor de commerce en Go
InicioProyectosKEVZEC — Tienda Multivertical

KEVZEC — Tienda Multivertical

Plataforma e-commerce multivertical (ropa, tecnología, hogar, belleza) con motor de commerce propio en Go + Fiber, dos frontends Next.js 16 y PostgreSQL en 3FN — localizada para operar legalmente en Ecuador.

Detalles
Tipo
E-commerce Platform
Rol
Full-Stack Developer
Creación
Q3 2026
Actualización
Q3 2026
Visitar
Demo
Código
Github
Stack tecnológico
Go 1.26Fiber v3Next.js 16TypeScript 5PostgreSQL 18Tailwind CSSRadix UITanStack QueryZustandPayphoneResendCloudinaryPlaywrightpnpm + Turbo
01

Descripción

Contexto general

E-commerce multivertical construido como monorepo pnpm: motor de commerce 100% propio en Go + Fiber v3 bajo DDD modular (14 bounded contexts, 17 módulos de use cases), storefront público y panel admin en Next.js 16.3.5 (App Router, Turbopack), y PostgreSQL 18.6 normalizado en 3FN con 52 migraciones SQL embebidas vía go:embed. El motor se construyó desde cero con el modelo de datos completo de la tienda y se conecta al storefront mediante un adapter Go→HttpTypes. Localizado para Ecuador: Payphone como pasarela de pago (Botón de Pago + webhook NotificacionPago idempotente), IVA 15% con precios tax-inclusive, facturación electrónica SRI, validación de cédula/RUC y zonas de envío por provincia. Incluye catálogo híbrido con variantes por atributos JSONB, checkout one-page, reviews con moderación, wishlists, gift cards, devoluciones/claims/exchanges, draft orders, transferencia de órdenes guest→cuenta y de cuenta→cuenta con token, promociones con campaigns y budget, y panel admin de ~60 páginas con RBAC de 5 roles. Auditado E2E con Playwright en 37 fases funcionales con corrección de defectos en cada iteración.

KEVZEC — Tienda multivertical con motor de commerce en Go
02

Motivación

Por qué lo construí

Construir un motor de commerce 100% propio en Go + Fiber en lugar de depender de un engine de terceros: control total del dominio, performance de un binario compilado y deploy económico en Railway frente a un runtime pesado.

Operar legalmente en Ecuador desde el día uno: IVA 15% tax-inclusive (convención de precios local), facturación electrónica SRI obligatoria, identificación tributaria (cédula/RUC/pasaporte/consumidor final) y Payphone — la pasarela que sí opera en el país, donde Stripe y Mercado Pago no.

Cubrir el modelo multivertical real (ropa con tallas, tecnología con specs, belleza, hogar) con variantes híbridas: product options + atributos JSONB por familia, sin forzar un esquema rígido único.

Mantener cambios atómicos entre backend y frontends con un monorepo pnpm: renombrar un campo rompe el build en local, no en producción; Vercel y Railway deployan del mismo repo a destinos distintos.

Elevar la calidad percibida con un storefront editorial (tipografía Monument Extended, hero cinematográfico, rails de producto con scroll-snap) y una auditoría QA E2E sistemática de 37 fases que corrige defectos en el mismo ciclo.

03

Características

Lo que destaca

Backend Go + Fiber v3 con DDD modular: 14 bounded contexts en domain/, 17 módulos de use cases en application/ con tests unitarios, infraestructura pgx v5 + pgxpool con SQL puro (sin ORM) y PostgreSQL 18.6 en 3FN con uuidv7 y generated columns.

52 migraciones SQL embebidas en el binario vía go:embed, ejecutadas en orden por un runner propio con tracking en schema_migrations — incluye seed de zonas de envío de Ecuador por provincia y constraints de unicidad por negocio.

Integración Payphone end-to-end: Botón de Pago por redirección, webhook NotificacionPago con verificación contra la API del provider, idempotencia en /store/carts/:id/complete con rate limiting, y mock local del gateway para desarrollo sin credenciales.

Adapter go-adapter.ts que traduce respuestas del backend Go (PascalCase en structs, snake_case en recursos genéricos) a los shapes HttpTypes que esperan los componentes — ~80 componentes del storefront funcionan sin reescritura.

Checkout one-page para Ecuador con direcciones por provincia, selección de shipping options por geo-zone con cálculo en vivo, y confirmación de orden con email transaccional vía Resend (orden, envío, entrega, contacto).

Panel admin de ~60 páginas (Next.js + Radix UI + TanStack Query + Zustand): CRUD completo de catálogo con subida de imágenes a Cloudinary/local vía POST /admin/uploads, edición de categorías con jerarquía mpath e imagen de portada en metadata, pricing con price lists, promociones con rules/campaigns, post-venta (returns, claims, exchanges), usuarios con RBAC de 5 roles y command palette.

Auth dual con JWT + bcrypt: scopes member/customer, refresh tokens, verificación de email, cambio de contraseña autenticado y transferencia de órdenes guest→cuenta y cuenta→cuenta con token firmado por email.

Storefront editorial en Next.js 16: home cinematográfico con hero overlay, navbar de 3 zonas con flyout de categorías dinámico por BD, rails de producto con scroll-snap, isotipo responsive, sitemap.xml/robots.ts nativos, canonicals con prefijo de país, error boundaries en español y 404 con recuperación.

SEO e i18n es_EC: middleware por [countryCode] con cache, metadata por ruta, Open Graph, hreflang implícito por prefijo, y copy 100% en español sin fugas de inglés en API/UI.

Auditoría QA E2E de 37 fases con Playwright: cada fase audita flujos principales/alternos/negativos/responsive/a11y, corrige los defectos accionables e implementa brechas declaradas en la misma iteración, con reportes en qa-reports/ y regresión posterior.

Seguridad aplicada: rate limiting en auth/checkout/contacto, honeypot + escape HTML en el formulario de contacto, CORS por whitelist de orígenes, CSP/security headers completos, JWT obligatorio en producción (fail-fast con default) y secrets fuera del repo.

Sistema de notificaciones persistido con providers (Resend/HTTP), inbox de contacto configurable, y storage de imágenes con provider local /uploads o Cloudinary vía STORAGE_PROVIDER.