Open-Source Cold Email & Warmup Platform
Warmbly는 메일함을 예열하고 캠페인 전송·답변 triage를 지원하는 오픈소스 콜드 이메일 플랫폼입니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 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.