Este proyecto es una solución completa para manejar webhooks de WhatsApp (Meta API) utilizando Supabase como backend (Base de datos y Edge Functions) y una interfaz de administración construida con React, Vite y Tailwind CSS.
- Recepción de Webhooks: Valida y procesa eventos entrantes de WhatsApp Business API.
- Gestión de Números: Configura múltiples números de teléfono con sus propios tokens de verificación y URLs de destino.
- Dashboard en Tiempo Real: Visualiza eventos, estados de entrega y estadísticas.
- Reintento de Eventos: Mecanismo para reenviar eventos fallidos.
- Arquitectura Serverless: Utiliza Supabase Edge Functions para escalabilidad.
- Frontend: React, TypeScript, Vite, Tailwind CSS, shadcn/ui.
- Backend: Supabase (PostgreSQL, Edge Functions).
- Infraestructura: Docker (opcional para despliegue del frontend).
- Node.js (v18+)
- NPM o Bun
- Docker (opcional)
- Cuenta en Supabase
- Supabase CLI (
npm install -g supabase)
git clone <tu-repositorio>
cd metaflow-whisper- Crea un nuevo proyecto en Supabase.
- Obtén las credenciales de tu proyecto (
Project URL,Anon Key,Service Role Key). - Inicia sesión en Supabase CLI:
supabase login
- Vincula tu proyecto local con el proyecto remoto:
supabase link --project-ref <tu-project-id>
- Aplica las migraciones de base de datos:
Esto creará las tablas necesarias:
supabase db push
number_configs,webhook_events,edge_statsy las funciones RPC.
Copia el archivo de ejemplo y configura tus credenciales:
cp .env.example .envEdita .env con tus valores:
VITE_SUPABASE_URL=https://<tu-project-id>.supabase.co
VITE_SUPABASE_ANON_KEY=<tu-anon-key>
VITE_SUPABASE_PUBLISHABLE_KEY=<tu-publishable-key>
VITE_SUPABASE_PROJECT_ID=<tu-project-id>Las funciones metawebhook y resend-webhook manejan la lógica del servidor.
-
Despliega las funciones:
supabase functions deploy metawebhook supabase functions deploy resend-webhook
-
Configura los secretos de las funciones (necesarios para que funcionen en producción):
supabase secrets set SUPABASE_URL=https://<tu-project-id>.supabase.co SUPABASE_SERVICE_ROLE_KEY=<tu-service-role-key>
Instala las dependencias y corre el servidor de desarrollo:
npm install
npm run devAbre http://localhost:8080 en tu navegador.
Para desplegar la aplicación frontend usando Docker:
-
Construye la imagen pasando las variables de entorno como argumentos de construcción (build args):
docker build \ --build-arg VITE_SUPABASE_URL=https://<tu-project-id>.supabase.co \ --build-arg VITE_SUPABASE_PUBLISHABLE_KEY=<tu-publishable-key> \ --build-arg VITE_SUPABASE_PROJECT_ID=<tu-project-id> \ -t metahook-frontend .
-
Ejecuta el contenedor:
docker run -d -p 80:80 metahook-frontend
- number_configs: Almacena la configuración de cada número de teléfono (token de verificación, URL de webhook destino).
- webhook_events: Log de todos los eventos recibidos y su estado de procesamiento.
- edge_stats: Estadísticas de uso de las funciones Edge.
- Configura un número en la tabla
number_configs(puedes hacerlo desde el dashboard de Supabase o mediante SQL). - Configura el Webhook en tu App de Meta usando la URL de la función
metawebhooky el token que definiste.- URL:
https://<project-ref>.supabase.co/functions/v1/metawebhook - Token: El que hayas puesto en
verify_tokenennumber_configs.
- URL:
- Los eventos aparecerán en el Dashboard en tiempo real.