Open-Source Cold Email & Warmup Platform
Warmbly 是開源的冷郵件平台:溫暖您的收件箱、發送活動、並對每個回覆進行分流。可在我們的雲端運行或自行託管整個系統。
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Sistema de fidelización para restaurantes, bares y cafés basado en el modelo del reel analizado en docs/ANALISIS_DESARROLLO.md:
Stack: Next.js 16 (App Router, Server Actions), Tailwind 4, Supabase (Postgres + Auth), WhatsApp Cloud API.
| Módulo | Ruta | Quién |
|---|---|---|
| Carta digital + registro al club | /m/{token} | Cliente (celular) |
| Cupón de bienvenida en pantalla y por WhatsApp | /m/{token}/bienvenida | Cliente |
| Canje de cupones | /mesero | Mesero / caja |
| Resumen con KPIs | /admin | Admin / encargado |
| Clientes, ficha, visitas, baja manual | /admin/clientes | Admin / encargado |
| Campañas por segmento, costo estimado, envío en lotes | /admin/campanas | Admin / encargado |
| Plantillas de WhatsApp (espejo de Meta) | /admin/plantillas | Admin / encargado |
| Mesas, QR imprimibles | /admin/mesas | Admin / encargado |
| Carta (productos) | /admin/carta | Admin / encargado |
| Configuración del local | /admin/configuracion | Admin |
| Webhook de WhatsApp (estados y BAJA) | /api/whatsapp/webhook | Meta |
| Procesador de campañas para cron | /api/campanas/procesar | Cron |
Segmentos disponibles: toda la base, inactivos hace N días, frecuentes (3+ visitas en 90 días), cumpleaños en los próximos N días. Se excluye automáticamente a quien ya recibió 2 campañas en la semana.
supabase/migrations/0001_init.sqlsupabase/seed.sql (local "Café Demo" con 12 mesas, carta y plantillas de ejemplo)anon y la clave service_role.Antes de usarlo con un local real, editar en supabase/seed.sql (o luego en /admin/configuracion)
el país (ISO 2 letras), la zona horaria y la moneda: definen el prefijo telefónico y los formatos.
cp .env.example .env.local
Completar NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY y SUPABASE_SERVICE_ROLE_KEY.
Dejar WHATSAPP_PROVIDER=mock para probar sin cuenta de Meta: los mensajes se simulan y se ven en la consola.
npm install
npm run crear-usuario -- --email [email protected] --password "cambiar123" --rol admin --local demo --nombre "Admin"
Roles: admin (todo), encargado (panel sin configuración), mesero (solo canje de cupones).
npm run dev
/admin/mesas en el celular o en otra pestaña./admin/mesas, abrir el enlace de la mesa 1./mesero, canjear ese código./admin/campanas/nueva: elegir "Promo de hoy", segmento "Toda la base", calcular destinatarios, completar
las variables y crear la campaña.entregado (el mock lo simula)./admin/plantillas. Las variables nombre y local se completan solas; el resto se pide al crear la campaña.
Toda plantilla de marketing debe incluir cómo darse de baja (el webhook procesa "BAJA")..env.local: WHATSAPP_PROVIDER=meta, WHATSAPP_TOKEN (token permanente de sistema),
WHATSAPP_PHONE_NUMBER_ID y WHATSAPP_VERIFY_TOKEN.https://TU-DOMINIO/api/whatsapp/webhook con el verify token, y
suscribirse al campo messages./admin/configuracion, cargar el Phone Number ID del local y el costo por mensaje de tu país
(tarifa de conversación de marketing de Meta) para que el costo estimado sea real.Límites a tener en cuenta: los números nuevos tienen un tope diario de destinatarios que sube con el uso; los
envíos se hacen en lotes de WHATSAPP_LOTE (50 por defecto) y se puede repetir el envío hasta terminar.
Para campañas con fecha o para terminar envíos largos sin tocar el panel, llamar periódicamente (cada 1 a 5 min):
curl -X POST https://TU-DOMINIO/api/campanas/procesar -H "x-cron-secret: $CRON_SECRET"
En Vercel se puede declarar en vercel.json como Cron Job; en otro hosting, con cron-job.org o GitHub Actions.
supabase/migrations/0001_init.sql esquema, índices y RLS
supabase/seed.sql local demo, mesas, carta, plantillas
scripts/crear-usuario.ts alta de usuarios del panel
src/proxy.ts sesión y protección de /admin y /mesero
src/lib/auth.ts sesión + roles
src/lib/segmentos.ts cálculo de segmentos y límite de frecuencia
src/lib/campanas.ts procesamiento de envíos en lotes
src/lib/whatsapp/ proveedor mock y Meta Cloud API
src/app/m/[token]/ flujo público del cliente
src/app/admin/ panel
src/app/mesero/ canje de cupones
src/app/api/ webhook y cron
local_id; RLS queda activo
como defensa adicional.Ver docs/ANALISIS_DESARROLLO.md: captura de consumo (ticket o pedido desde el QR), segmentos guardados, automatizaciones (cumpleaños, inactivos, ocupación), integración con POS, multi-local con planes.