Quiero construir una web/app SaaS llamada “MicroProduct Store” para creadores (MVP production-ready) que permita vender un producto digital (PDF o enlace a Notion) en minutos.
OBJETIVO (Money first):
- Que un creador pueda publicar una landing y cobrar 10€–49€ por una guía en menos de 10 minutos.
- Flujo impecable: visitar landing → comprar → pagar → recibir acceso automático → creador ve ventas.
USUARIOS Y ROLES
- Admin/Creator (yo): crea productos, edita landing, ve ventas y clientes.
- Buyer: compra y recibe acceso inmediatamente.
FUNCIONES PRINCIPALES (prioridad absoluta: que funcionen MUY bien)
A) Checkout + Pago:
- Integrar Stripe (Payment Links o Checkout) con soporte EUR.
- Tras pago exitoso: registrar orden, comprador y producto en DB.
- Página de “Gracias” clara.
B) Entrega automática (fulfillment):
- Si el producto es “archivo”: permitir subir PDF (guardarlo y entregarlo vía link seguro).
- Si el producto es “enlace”: permitir poner URL (Notion/Drive) y entregar esa URL.
- Enviar email automático al comprador con “Tu acceso” + link (y mostrarlo también en la página de Gracias).
- Link de descarga/acceso debe ser seguro (token único por orden, expira opcionalmente en 7 días, pero que el comprador pueda pedir reenvío).
C) Landing Builder simple (sin editor complejo):
- Un producto = una landing.
- Campos: Título, Subtítulo, bullets (3–8), imagen/cover, precio, garantía (texto), FAQ (3–8), testimonios (opcionales), CTA principal.
- URL pública: /p/{slug}- Botón “Comprar ahora” anclado.
D) Cupones y pricing:
- Crear cupones: porcentaje o cantidad fija, con límite de usos y fecha de expiración.
- Campo “Cupón” en checkout (si Stripe Checkout no lo soporta directo, aplicar descuento antes de crear sesión de pago).
E) Panel de control (Creator Dashboard):
- Métricas: ingresos total, ventas hoy/7 días/30 días, conversión básica (visitas vs compras).
- Lista de órdenes: fecha, email, producto, precio, estado.
- Export CSV de órdenes.
REQUISITOS DE PRODUCTO (calidad)
- Debe ser robusto y simple. Nada de funciones extra innecesarias.
- UX rápida móvil-first.
- Estados de error bien tratados (pago fallido, email ya existe, link inválido, etc).
- Logs mínimos y reintentos para email.
- Seguridad: auth para admin, validación server-side, tokens firmados para links.
STACK / IMPLEMENTACIÓN (elige la más compatible con Emergent)
- Frontend: React/Next.js (o el stack recomendado por Emergent).
- Backend: API con rutas claras.
- DB: tablas bien diseñadas.
- Auth: login para Admin/Creator.
- Emails: usar un proveedor sencillo (SendGrid/Mailgun/Resend) o el mecanismo nativo disponible.
MODELO DE DATOS (mínimo)
- users (admin)
- products (id, title, slug, price_cents, currency, cover_url, bullets, faq_json, testimonials_json, delivery_type[file|link], delivery_asset_url, active)
- coupons (code, type, value, max_redemptions, redeemed_count, expires_at, active)
- orders (id, product_id, buyer_email, amount_cents, currency, stripe_session_id, status, created_at)
- order_access_tokens (order_id, token, expires_at, created_at)
FLUJOS (define y construye)
- Admin crea producto → publica → obtiene link de landing.
- Buyer visita landing → compra → Stripe checkout → webhook confirma pago → crea order + token → envía email + muestra acceso.
- Buyer reenvía acceso: “Reenviar acceso” con email → si existe orden pagada, reenviar email.
- Admin ve dashboard, órdenes, exporta CSV, crea cupones.
PÁGINAS
- Landing pública del producto: /p/{slug}- Checkout start: /api/checkout/create-session
- Success: /success?session_id=...
- Access: /access/{token}- Admin login: /admin/login
- Admin dashboard: /admin
- Admin product editor: /admin/products/new y /admin/products/{id}- Admin coupons: /admin/coupons
INSTRUCCIONES IMPORTANTES
- Implementa Stripe con webhook real (verificación de firma).
- No uses “mock payments”.
- Asegura que el acceso solo se muestra si order.status = paid.
- Crea seeds/ejemplo: un producto “Guía IAEmpresa 10€” para probar.
ENTREGABLE
- App funcionando end-to-end: crear producto → landing → pago → entrega → dashboard.
- Dame también un pequeño checklist de pruebas dentro del proyecto (como README) para validar que todo va perfecto.