Saltar al contenido

Build in public

Changelog público

Qué se shippea cada semana en Kourze. Sin filtro, sin marketing, sin "estamos trabajando para servirte mejor". Solo lo que cambia, por qué cambia, y qué falta.

  1. 🛠 Infra

    Security hardening + auth completo (password reset + email verify)

    • Password reset full flow: /forgot + /reset con tokens HMAC-firmados (TTL 1h). El reset bumpea session_version → cierra sesiones en otros dispositivos.
    • Email verification: signup auto-manda el email; banner persistente arriba del navbar con reenvío en 1 click; toast de confirmación cuando vuelve del link.
    • Cambio de contraseña self-serve desde /creator/settings.
    • DM relationship gate: cerramos el spam vector — para mandar primer DM tenés que compartir grupo, tener thread previo, o ser admin.
    • Rate limits en /login (5/min email + 20/min IP), /signup (3/10min + 5/10min), /messages, /forgot, /reset, /change-password.
    • Webhook idempotency: Mux + PayPal usan claimEvent para no doble-procesar replays. Stripe ya lo tenía.
    • SVG eliminado del whitelist de uploads (era XSS sobre el origen kourze.com).
    • Google OAuth: validamos que el next del state sea same-origin (cerrar open-redirect).
    • Backup de volume a Backblaze B2 cada hora (endpoint listo; faltan env vars del bucket).
    • Verificación de firma obligatoria en producción para Mux + PayPal + SESSION_SECRET. Sin estos, el server tira 500 antes que aceptar peticiones inseguras.
    • DEFAULT_LOCALE de la app: en → es. Resuelve mismatch SEO (meta español + UI inglés).
    • PII fix: dropeamos email del shape AuthorLite que salía al cliente en /c/<handle>.
    • Race conditions cerradas: createEnrollment, requestPayout, maybeIssueCertificate, upsertProgress, /api/founding/claim, signUp, OAuth signin, subscribe/cancel — todos dentro de mutate().
    • OG images custom para /pricing y /blog (antes caían al genérico del root).
    • FAQPage JSON-LD en /pricing — Google puede renderizar respuestas en SERP.
    • Skip-to-content link (WCAG bypass-block). Avatares decorativos con aria-hidden + loading=lazy.
  2. Feature

    Founder page + 4 blog posts SEO + niche outreach templates

    • Nueva página /founder con la historia 'De Cuba a Austin' y transparencia full sobre stats y roadmap.
    • 4 blog posts SEO nuevos: migración desde Hotmart, comparación de comisiones, cómo vender primer curso, Skool vs Discord vs Kourze.
    • OUTREACH.md ampliado con 8 templates por nicho: estética, fitness, trading, marketing/AI, coaching, e-commerce, idiomas, productividad. Plus plan de outreach realista por semana.
    • Nueva página /changelog público (esta).
  3. 🎨 Design

    Rebrand de iconos a Instagram-style gradient

    • Favicon, /icon, /apple-icon y /social-avatar pasaron del gradiente azul/violeta/dorado al morado/rosa/naranja estilo Instagram. Lee mejor a tamaños chicos.
    • Manifest PWA theme_color actualizado a #d63ad1.
    • K letra sólida bold (antes era stroke path delgado).
  4. 🛠 Infra

    Sentry plumbing + global error boundary

    • Instalado @sentry/nextjs con instrumentation.ts para server + edge y instrumentation-client.ts para browser.
    • Session replay activado: cada sesión que crashea se graba con texto y media masked (no PII).
    • app/global-error.tsx captura y reporta crashes que escapan de cualquier boundary.
    • Inerte hasta que SENTRY_DSN + NEXT_PUBLIC_SENTRY_DSN se setean en Railway.
  5. 🔧 Fix

    Página /become-creator: fix del loop 'Empezar gratis'

    • Logged-in students que clickeaban 'Empezar gratis' en /teach quedaban en redirect loop /signup → /creator/upgrade → /teach por el guard isCreator() del layout.
    • Nueva /become-creator handle role promotion explícito: form de handle + bio + acuerdo del creador, server action actualiza user.role a 'creator' + trial 60 días + acepta contrato.
    • Después redirige a /creator/onboarding para arrancar el wizard.
  6. Feature

    Comparison pages SEO: vs Kajabi, vs Hotmart, vs Teachable

    • 3 nuevas landings transaccionales: /kourze-vs-kajabi, /kourze-vs-hotmart, /kourze-vs-teachable.
    • Cada una con hero, 3 stat cards arriba, tabla feature-by-feature de 13 filas, savings calculator interactivo embebido, 6 FAQs con schema.org/FAQPage.
    • Sumadas al sitemap.xml con priority 0.9.
    • Targets de keywords: 'kourze vs X', 'alternativa a X', 'X vs kourze'.
  7. Feature

    Onboarding wizard: publica URL real, no draft

    • Wizard de /creator/onboarding ahora publica el curso automático en vez de dejarlo como draft.
    • Crea CoursePlan al precio sugerido (la landing pública necesita CoursePlan para mostrar el botón comprar).
    • Marca la primera lección como is_preview: true para que la página pública tenga algo jugable sin enrolarse.
    • Reemplazó el step 'done' con un panel de share completo: URL canonical con copy button, share Tweet/WhatsApp/Email con texto pre-llenado, calculadora 'ganás $X más por venta vs Hotmart'.
    • First-run redirect: nuevo creator con 0 cursos y sin cookie 'onboarding_visited' va directo a /creator/onboarding al hacer login.
  8. 🎨 Design

    Quick wins pass: empty states + iOS splash + mobile polish

    • Empty states first-run en /creator/cohorts, /creator/payments, /creator/sequences con CTAs contextuales.
    • iOS splash dinámico: ruta app/apple-splash/[size] que renderiza el K-on-gradient a cualquier WxH. 12 device sizes wired en metadata.appleWebApp.startupImage.
    • Mobile polish en /c/[handle]: pills de categoría con scroll horizontal en mobile, composer toolbar en dos filas con submit full-width, PostCard px-4 sm:px-5 across.
  9. Feature

    Plataforma core: AI tutor + course builder + community + cohorts + challenges

    • AI tutor con Claude (claude-haiku-4-5) que responde dudas sobre transcripts de lecciones con BM25 ranking + diversity cap.
    • Course builder con AI: wizard de /creator/onboarding genera estructura completa (4-6 módulos, 3-5 lecciones c/u, precio sugerido) desde 2-3 oraciones de descripción.
    • Comunidad de pago integrada: feed por creator (/c/[handle]), DMs, notificaciones, niveles (sistema de 9 niveles), challenges con streak leaderboard.
    • Cohort launches: /cohort/[id] público + /creator/cohorts admin, waitlist, share-to-unlock, schema.org/EducationEvent.
    • Paid Challenges: /c/[handle]/challenge/[slug] con prompt diario + checkins + streak leaderboard. 40-60% completion vs 5-15% self-paced.
  10. Feature

    PPP automático en 200+ países

    • Sistema de Purchasing Power Parity: cookie de país detectada por IP, precio de cursos se ajusta automático según poder adquisitivo del país del comprador.
    • Ejemplo: curso de $99 USA aparece $74 México, $52 Argentina, $48 Colombia, $40 India.
    • Sube conversión 2-4x en mercados emergentes documentado en case study interno.
    • Ningún cambio requerido del creator — viene ON por default.
  11. Feature

    Stripe Connect + 5 tiers + Founding Creator

    • Pricing v3: Free $0+9%, Starter $25+5%, Growth $49+3%, Pro $119+1%, Scale $229+0%.
    • Founding Creator (primeros 50): −2% comisión vitalicia en cualquier plan.
    • Stripe Connect con pass-through de fees (creator paga el 2.9% + $0.30 de Stripe, transparente).
    • Sistema de afiliados 2-tier: 20% al referidor + 5% al referidor del referidor.
  12. 💭 Decision

    Lo que viene

    • 🔜 TikTok + YouTube publishing (hoy solo Twitter/LinkedIn/Instagram).
    • 🔜 pgvector RAG real para AI tutor (cuando justifique migrar del JSON store).
    • 🔜 Migración asistida 1-on-1 para los primeros 50 Founding Creators.
    • 🔜 Settings unificadas (hoy están scattered).
    • 🔜 Apple OAuth signin.
    • ❌ Descartado: NFTs/Web3, crypto payments, marketplace abierto estilo Hotmart.

¿Querés que algo se priorice o falta algo crítico para tu caso? Mandame un email. Soy el fundador y respondo todos los emails en menos de 24h.

Changelog público de Kourze — build in public · Kourze — AI-native creator platform