Unidos por la Guaira — plataforma de ayuda humanitaria

Descripción del proyecto
Unidos por la Guaira nació tras el terremoto del 24 de junio para coordinar la ayuda humanitaria que sale desde la costa. Cualquiera puede consultar, sin iniciar sesión, un tablero público con lo recolectado, lo que falta y a dónde va cada actividad. Colaboradores y solicitantes se registran para gestionar aportes, puntos de acopio, solicitudes y testimonios, con verificación de teléfono por WhatsApp y un panel de administración con aprobación de cuentas y auditoría. Construido en colaboración con otro desarrollador, siguiendo una arquitectura Clean + Screaming con límites de capa exigidos por ESLint.
Características principales
Tablero público de transparencia (sin sesión) con métricas de la operación en tiempo real vía Recharts
Directorio de puntos de acopio con mapa interactivo (React Leaflet + clustering) para decidir dónde entregar un aporte
Autenticación con Auth.js v5 y roles (SUPERADMIN, ADMIN, COLABORADOR, SOLICITANTE) con flujo de aprobación de cuentas
Verificación de teléfono por código OTP vía WhatsApp Cloud API, con webhook propio y firma HMAC
Notificaciones multicanal (WhatsApp, email SMTP, in-app) 'plug-and-play': cada canal se activa solo si sus variables de entorno están presentes
Subida de evidencias a buckets privados de Supabase Storage mediante URLs firmadas de un solo uso
Arquitectura Clean + Screaming por dominio (domain / application / infrastructure / ui), con límites de capa exigidos por ESLint
Suite de pruebas con Vitest y Testing Library, y despliegue en Vercel con migraciones y seed idempotente en cada build
Desafíos y soluciones
Transparencia pública sin exponer datos personales
El tablero de transparencia debía mostrar el avance real de la operación (aportes, actividades, sectores alcanzados) a cualquiera, sin sesión, pero sin filtrar datos de quién aportó qué. Se resolvió agregando las métricas a nivel de actividad y dejando la identidad de las personas colaboradoras solo dentro de su propia cuenta.
Notificaciones que no rompen el flujo si faltan credenciales
WhatsApp, email y el OTP telefónico dependen de credenciales de terceros (Meta, SMTP) que no siempre están disponibles en cada entorno. Cada canal se diseñó como un interruptor: si sus variables de entorno están vacías, el canal queda en no-op y el resto de la app sigue funcionando con normalidad.
Capturas de pantalla



Tecnologías utilizadas
Otros proyectos

QuickMenu — SaaS de menús digitales
Plataforma multi-inquilino para que restaurantes creen y personalicen su carta digital con código QR: panel propio, plantillas con vista previa en vivo y aprobación de registro.

Verlein — plataforma de La Fórmula
Portafolio cinematográfico y embudo de calificación de leads para un productor de beats: catálogo de audio, CRM propio con atribución de campañas y reservas por Cal.com.