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.