Equipo — The Good App

Mail 9 — Cambios delicados e importantes (con precaución)

Hola equipo,

Comparto la actualización que sigue al Mail 8. En este ciclo se aplicaron cambios delicados y de alto impacto sobre monetización, suscripciones y gating de anuncios en API + Admin + Flutter. Por su naturaleza, se ejecutaron con especial cuidado y validaciones adicionales, por eso tomó un poco más de tiempo de lo normal.

1) Entitlements ads-free en backend (API/Prisma)

  • Se agregó entidad de entitlement para controlar período sin anuncios por usuario.
  • Se incluyó idempotencia por purchaseToken/receiptId para reducir riesgo de dobles grants.
  • El perfil ahora retorna adsFreeUntil para que Flutter pueda decidir ocultar/mostrar AdMob en tiempo real.

2) Nuevo módulo de suscripciones

  • GET /v1/subscriptions/products: expone catálogo para el paywall.
  • POST /v1/subscriptions/verify: procesa comprobación y grant de ads-free.
  • Se dejó base preparada para endurecer verificación directa con Play/App Store en siguiente iteración.

3) Admin: configuración de suscripciones/IAP

  • Nuevo bloque Subscriptions / IAP en Settings.
  • Configuración de product IDs por plataforma, duraciones y labels.
  • Campos para credenciales (Play/App Store) y modo sandbox para siguientes fases de hardening.

4) Flutter: paywall + gating de anuncios

  • Integración inicial IAP y nueva pantalla de suscripción.
  • Flujo compra → verify API → recarga de perfil con adsFreeUntil.
  • Gating aplicado: usuario con entitlement activa no renderiza banners/nativo de AdMob.

5) Por qué tomó más tiempo

Estos cambios tocan monetización y visibilidad de anuncios, lo cual afecta ingresos, experiencia del usuario y consistencia entre backend/admin/app. Se priorizó implementación segura y validación por etapas para evitar regresiones y grants incorrectos.

Saludos,

Correo interno — avance técnico (Mail 9)