Visión general de la arquitectura
MAMB se construye como una aplicación Next.js con renderizado híbrido: server components para SEO y carga inicial rápida, y client components para las experiencias interactivas (galería, comparador antes/después, captura de cámara, TensorFlow.js).
Diagrama lógico
Capas
1. Presentación (Next.js + React 19)
- App Router, server components por defecto.
- Tailwind CSS 4 con tokens de marca (
brand-blue,brand-grey). - Framer Motion para transiciones y gestos.
2. Lógica de aplicación
- Server Actions para toda mutación (subir obra).
- Validación de entrada con Zod en el edge de cada acción.
- Sin autenticación: los usuarios son anónimos y solo completan un formulario (título, autor, estilo, foto).
3. Datos (Supabase)
- PostgreSQL con tipos generados (
supabase gen types typescript). - Row Level Security activo en todas las tablas, con
INSERTpúblico validado por las Server Actions. - Storage con buckets separados para original y estilizado, nombres UUID.
4. Inteligencia Artificial
- TensorFlow.js cargado en lazy (
next/dynamic). - Modelo de transferencia de estilo arbitraria.
- Procesamiento en un
<canvas>oculto; el resultado se muestra en el comparador antes/después.
Principios de diseño
- Mobile-first real — los componentes se diseñan primero para el pulgar.
- Edge of trust — todo lo que llega del cliente se valida con Zod.
- Seguridad en la base de datos — la lógica de acceso vive en RLS, no en el cliente.
- Rendimiento como feature — Core Web Vitals y LCP son objetivos del producto, no optimizaciones tardías.