BioLinkStore
Una URL que convierte tu catálogo en una tienda, para quien vende por Instagram y cierra por WhatsApp. Se monta en minutos, sin tarjeta, con infraestructura a $0/mes y sin sacrificar arquitectura.
El link de la bio de Instagram tiene un solo trabajo. BioLinkStore lo convierte en una tienda completa.
Catálogo con fotos, variantes y stock, tres plantillas, y el pedido que le llega al vendedor por WhatsApp ya escrito. Sin comisión por venta y con infraestructura a $0/mes.
De un toque en la bio a un pedido en WhatsApp
Pulsa los pasos o deja que avance. Cada paso ilumina la pieza que trabaja.
Cuatro capas, cuatro proveedores, un solo esquema
Cada capa vive en el proveedor que la sirve gratis. El acoplamiento entre ellas pasa por HTTPS y un contrato de API documentado en Swagger.
Dentro del API, cada módulo sigue la misma línea: Controller → Use case → Interfaz de repositorio → Repositorio Prisma. Son 44 casos de uso de una responsabilidad cada uno. El dominio no importa Prisma.
/api/public/:slug y el renderer mapea la columna template a un componente. Una tienda nueva es un INSERT, no un deploy. Los nombres de tienda son de ejemplo.refresh_tokens./api/auth/login del propio Next recibe los tokens y los guarda en cookies httpOnly. Deja además una cookie sin secreto, igs_session, que el middleware Edge sí puede leer./api/proxy/… y el proxy inyecta el Bearer desde la cookie./api/auth/refresh, rota las cookies y reintenta la petición original. Si el refresh falla, el cliente cierra sesión.@Public() para salir), StoreOwnerGuard (la tienda es tuya) y PlanFeatureGuard (tu plan incluye esto).María abre su tienda un martes por la tarde
Un caso inventado con números pequeños, para ver qué pasa en cada tramo. Los nombres y las cantidades son de ejemplo.
maria-closet; el panel consulta /stores/check-username y confirma que nadie lo tiene. Nombre, categorías, plan Gratis. La tienda existe.?preview=noir, vuelve a Vitrina, fija su paleta. Pega biolinkstore.com/maria-closet en la bio. La previsualización sale con su logo porque la página trae Open Graph.OrderIntent: 2 × (18 + 0) = US$ 36, genera el mensaje y la URL de WhatsApp. El comprador aterriza en el chat de María con el pedido escrito.Cinco veces en que la solución obvia estaba mal
Cada reto sigue el mismo patrón: lo que cualquiera haría primero, por qué no sirve, lo que se hizo y el número que lo demuestra. El detalle técnico queda plegado.
No hay pasarela de pago ni carrito persistente del lado del comprador. El vendedor ya cobra por Pago Móvil, Zelle o efectivo y ya cierra por WhatsApp; el producto no le cambia eso, le quita el trabajo de escribir el catálogo doce veces al día.
Un solo filtro: ¿esto cabe en el free tier sin regalar arquitectura?
Si la respuesta era no, se buscó otra pieza. Si era sí, se abstrajo lo justo para poder cambiarla después.
Profundizar
La segunda razón es de escala: el front se sirve desde el edge de Vercel y el API escala aparte. En un SaaS multi-tenant los picos de tráfico de dos tiendas no están correlacionados.
strict y sus decoradores; Drizzle era excelente pero su tooling de migraciones estaba menos maduro al arrancar.Profundizar
StorageProvider con tres implementaciones: local para desarrollo, S3-compatible y Cloudinary. En un SaaS donde cada tienda sube sus fotos, el proveedor de almacenamiento es una decisión de costos que va a cambiar. Cambiarlo es una variable de entorno, no un refactor.Profundizar
Por el mismo camino pasa la marca de agua: sharp compone un SVG sobre la imagen antes de subirla, solo si el plan de la tienda no incluye quitarla. Los GIF y los PDF se saltan el paso.