Trabajo
ClienteCliente · ONG
Sonqo Perú

Sonqo Perú

Migré el sitio de una ONG peruana de WordPress a Astro. Costo de infraestructura y de operación en cero, con donaciones únicas y mensuales en producción.

Ver sitio en vivo

Captura de Sonqo Perú
SYSTEM.md

El problema

El sitio vivía en WordPress, con costos de infraestructura y de operación. Había que reducirlos a cero sin perder la capacidad de recibir donaciones ni de editar el contenido.

Qué construí

Rediseñé el sitio en Astro con un backend serverless y conecté las donaciones únicas y mensuales con Mercado Pago (Checkout API y Bricks). El contenido se edita desde Sanity.

Resultado

En producción, procesando pagos reales, con costo de infraestructura y operación en cero.

Decisiones que importaron

  1. 01

    Un pago es real cuando el proveedor lo confirma

    Los webhooks se verifican con firma HMAC y el estado del pago se consulta a la API de Mercado Pago, sin confiar en lo que llega desde el navegador.

  2. 02

    Una sola validación

    Los mismos esquemas Zod validan en el cliente y en el servidor, y Upstash Redis limita las solicitudes por visitante.

  3. 03

    Contenido sin programadores

    Sanity permite al equipo editar cifras, imágenes y textos sin tocar los flujos de pago.

  4. 04

    Desplegado en Google Cloud

    Cloud Build construye la imagen, Artifact Registry la guarda y Cloud Run la sirve; los secretos viven en Secret Manager.

Tecnologías

  • Astro
  • TypeScript
  • Mercado Pago
  • Sanity
  • Supabase
  • Resend
  • Upstash Redis
  • Cloud Run

Modelo C4. La línea con pulso es el recorrido principal de una solicitud.

Nivel 1 · quién usa el sistema y con qué se conecta

HTTPS1Checkout API · Bricks2HTTPSGROQStudioDonanteDona una vez o cada mesEquipo de SonqoEdita el contenidoSitio de SonqoDonaciones y contenidoMercado Pago[Mercado Pago]Cobra y notifica elresultadoResend[Resend]Correos transaccionalesSanity[Sanity]Contenido editable

Nivel 2 · las aplicaciones y almacenes que lo componen

HTTPS1GROQ · buildPOST ·JSON2deploy · secretsPayments · HMACwebhook3rate limitSQLHTTPSSanity[Sanity]Contenido editableGoogle Cloud[Cloud Build · Artifact Registry ·Secret Manager]Compila, publica y guardasecretosDonanteDona una vez o cada mesSitio[Astro 7 · Bun]Páginas y componentesRutas del servidor[Rutas SSR · Cloud Run]Validan y crean el cobroMercado Pago[Mercado Pago]Cobra y notifica elresultadoUpstash Redis[Upstash Redis]Límite de solicitudesSupabase[Supabase · PostgreSQL]Base de datos PostgreSQLResend[Resend]Correos transaccionales

Nivel 3 · los componentes dentro de la API

pipelinepipelinevalidinput1Checkout API2rate limitwebhook3idempotencyconfirmationHoneypot[honeypot]Descarta bots sin avisarlesLímite desolicitudes[Upstash ratelimit]Por visitante, con RedisValidación[Zod]Esquemas Zod compartidosCobro[Mercado Pago SDK]Checkout API y BricksUpstash Redis[Upstash Redis]Límite de solicitudesMercado Pago[Mercado Pago]Cobra y notifica elresultadoWebhook[HMAC · idempotency]Firma HMAC y estado realResend[Resend]Correos transaccionales
  • Persona
  • Sistema
  • Contenedor
  • Base de datos
  • Externo
  • Recorrido principal
  1. 01Donante
  2. 02Astro
  3. 03Mercado Pago
  4. 04Webhook verificado
  5. 05Resend

CV

Descarga mi CV

Déjame tu correo y te envío el CV ahí. Primero verifico que el correo es tuyo con un código.