Ir al contenido
AppsSDAR

Plataforma de sorteos

SortealoPE

  • Pagos
  • Correo transaccional
  • Panel de control

En Perú, organizar una rifa —de una canasta navideña, de un celular, de lo que sea— casi siempre se hace igual: un grupo de WhatsApp, una hoja de Excel con los números vendidos y capturas de pantalla de Yape como comprobante de pago. Funciona, hasta que el organizador pierde la cuenta de quién pagó, alguien reclama un número que "ya estaba apartado" y no hay forma de probarlo.

El problema

SortealoPE no es una tienda de rifas propias: es la herramienta que cualquier organizador usa para gestionar la suya. El problema real no es "vender números" —eso lo resuelve cualquier planilla— sino dar trazabilidad: qué número compró quién, si el pago se confirmó, y una forma de anunciar el resultado que el comprador pueda verificar después, sin depender de la palabra del organizador.

Cómo se construyó

El backend es Node.js con Express sobre PostgreSQL, con un pool de conexión único para toda la aplicación. El frontend deliberadamente no lleva un framework de JavaScript: es EJS renderizado en el servidor con CSS y JS vanilla. Para una plataforma donde el visitante típico llega desde un enlace de WhatsApp en un celular de gama media, con datos móviles y no siempre con buena señal, servir HTML ya armado desde el servidor pesa menos y carga más rápido que enviar un bundle de React que recién arma la página en el navegador.

La autenticación usa JWT guardado en una cookie httpOnly de 30 días, para que un organizador no tenga que iniciar sesión cada vez que entra a revisar sus ventas. Las imágenes de cada sorteo —fotos del premio— se procesan con Multer y se guardan en Cloudinary en producción, en vez de en el disco del propio servidor: así una imagen pesada no compite por recursos con el resto de la aplicación.

Pagos y correo, la parte que no se puede fallar

El cobro por Yape y el correo transaccional —confirmaciones de compra, aviso del resultado— son la columna vertebral del sistema: si un comprador paga y no recibe confirmación, o si el resultado no le llega, la plataforma pierde la confianza que la diferencia de un grupo de WhatsApp. Ambos flujos están separados del resto de la aplicación justamente para que un problema de correo no tumbe la venta de boletos, ni al revés.

Una lección real: el correo no es lo mismo que el usuario

Operar SortealoPE en producción dejó una lección concreta sobre autenticación: un administrador que inició sesión con un alias de su propio correo (algo tan simple como nombre+admin@gmail.com) dejó de ser reconocido como el mismo dueño de siempre, porque el sistema comparaba el correo completo en vez de una identidad de usuario estable. Ese incidente cambió cómo diseño el login desde entonces en todos los sistemas nuevos — lo cuento con más detalle en la nota sobre login por usuario, no por correo.

Estado actual

SortealoPE está en producción, con organizadores publicando sorteos reales, cobrando por Yape y transmitiendo resultados. El sistema sigue en mantenimiento activo: cada corrección y cada mejora sale primero a revisión antes de tocar la operación de un organizador con un sorteo en curso.