Saltar al contenido
Todos los casos de estudio

CS-16 — Backend e integraciones · Arquitectura y rendimiento

Argizari Kandelak — tienda online de velas artesanales

Tienda online trilingüe (euskera, castellano, inglés) y panel de administración para una marca independiente de velas artesanales: catálogo, cesta, pedidos vinculantes, inventario por unidades, envíos y notificaciones por email con outbox transaccional.

Mi papel
Proyecto personal; diseño e implementación completos.
Periodo
2026
Divulgación
Proyecto público
Tecnologías
TypeScriptNext.jsReactTailwind CSSPostgreSQLDrizzle ORMNeonBetter Authnext-intlResendCloudflare R2VercelVitestPlaywright
Última revisión
13 de noviembre de 2026

Contexto

Una marca pequeña de velas artesanales necesitaba vender online y gestionar su producción: muchas velas se fabrican por encargo, el pago se hace fuera de la web (Bizum o transferencia) y el envío solo puede salir cuando el pago está confirmado.

Retos

  1. 01Inventario por unidades que combina stock, fabricación por encargo y modo mixto, con reservas al pedir.
  2. 02Separar fabricación (que no espera al pago) y envío (que sí lo espera), sin envíos parciales.
  3. 03Notificaciones fiables en un hosting gratuito que solo permite un cron al día.
  4. 04Tienda en tres idiomas con euskera por defecto y URLs localizadas.

Solución y arquitectura

Next.js 16 (App Router) con TypeScript estricto, PostgreSQL con Drizzle ORM y Better Auth. El cliente anónimo compra con una cesta en cookie que se fusiona con la de su cuenta al iniciar sesión; el checkout cotiza precio, IVA, envío y plazo, y el pedido confirmado es vinculante y reserva stock. Las correcciones de recuento muestran antes su impacto. Cada acción escribe su notificación en un outbox dentro de la misma transacción, y Resend la envía con reintentos y backoff. El panel de administración (pedidos, producción, inventario, productos, envíos, contenido, legal, clientes) exige rol de administrador comprobado en servidor.

Decisiones clave

D-01

Outbox de notificaciones en la base de datos

Escribir el email en la misma transacción que el cambio garantiza que no se pierde ningún aviso; los fallos se reintentan y, si no se entregan, generan un aviso para la administradora.

D-02

Pedido vinculante que reserva stock al confirmarse

Evita vender unidades que no existen cuando el pago llega más tarde y fuera de la web.

Compromisos

  • El plan gratuito de Vercel solo permite un cron diario, así que el outbox se procesa justo después de cada respuesta, en cada visita al panel y en el cron diario, en lugar de con una cola dedicada.

Resultados

Fase 1 implementada (tienda, panel, emails, cron, tests unitarios, de integración y E2E); la apertura de la tienda al público está pendiente.

Aprendizajes

Aún no documentado

Proyecto de emprendimiento y desarrollo full-stack. El código es privado. Incluye seguimiento de requisitos legales previos al lanzamiento (condiciones de compra, privacidad) y documentación de decisiones, arquitectura, modelo de datos y flujos de pedido, inventario y envío.

Pregunta sobre este caso de estudio

Pregunta sobre este caso de estudioIA · responde desde una base de conocimiento aprobada · no es Ander en tiempo real

Las preguntas de aquí se responden con el caso de estudio «Argizari Kandelak — tienda online de velas artesanales» como contexto.

Intro para enviar · Mayús + Intro para nueva línea0/1200