How mrloay/whatsapp-promo-broadcaster works
WhatsApp Boutique Broadcast is a small web dashboard and backend for managing opted-in contacts and sending personalized WhatsApp broadcasts. The main workflow is to sign in, import or maintain contacts, connect a WhatsApp session, then send a rate-limited campaign; inbound STOP messages suppress future sends. The graph includes campaign, account, template, credit, and webhook capabilities documented or indexed in the repository. Some route and UI details were not excerpted, so uncertain links are omitted.
Main entry points: server.ts HTTP server · campaigns.ts Campaign orchestration · webhook.ts Meta webhook · webjs-listeners.ts WhatsApp event listeners
Components 24
Dashboard and API
- Web dashboard
public/index.html - HTTP server
src/server.ts - Login and access
src/auth.ts - Contact routes
src/routes/contacts.ts - Campaign routes
src/routes/campaigns.ts - WhatsApp routes
src/routes/whatsapp.ts - Admin routes
src/routes/admin.ts - System routes
src/routes/system.ts - Template routes
src/routes/templates.ts - Credit routes
src/routes/credits.ts
Broadcast management
- Campaign orchestration
src/services/campaigns.ts - Message dispatch
src/whatsapp/dispatch.ts - Message rendering
src/whatsapp/render.ts
WhatsApp integration
- Meta webhook
src/routes/webhook.ts - Webhook signature check
src/whatsapp/signature.ts - WhatsApp event listeners
src/whatsapp/webjs-listeners.ts - WhatsApp Web client
src/whatsapp/webjs-client.ts
Persistence and services
- Contact and opt-in service
src/services/contacts.ts - Template service
src/services/templates.ts - Credit service
src/services/credits.ts - WhatsApp accounts
src/services/accounts.ts - SQLite database
src/db/index.ts
Other components
- Boutique operator
- WhatsApp Web session
Connections 40
- Boutique operator → Web dashboard: uses
README.md - Web dashboard → HTTP server: uses dashboard API
- HTTP server → Login and access: registers
src/server.ts - HTTP server → Contact routes: registers
src/server.ts - HTTP server → Campaign routes: registers
src/server.ts - HTTP server → WhatsApp routes: registers
src/server.ts - HTTP server → Admin routes: registers
src/server.ts - HTTP server → System routes: registers
src/server.ts - HTTP server → Template routes: registers
src/server.ts - HTTP server → Credit routes: registers
src/server.ts - HTTP server → Meta webhook: registers
src/server.ts - Contact routes → SQLite database: reads and writes
src/routes/contacts.ts - Contact routes → Contact and opt-in service: calls
src/routes/contacts.ts - Campaign routes → SQLite database: reads and writes
src/routes/campaigns.ts - Campaign routes → Campaign orchestration: calls
src/routes/campaigns.ts - Campaign routes → Login and access: checks access
src/routes/campaigns.ts - Campaign orchestration → Contact and opt-in service: selects opted-in
src/services/campaigns.ts - Campaign orchestration → Template service: loads templates
src/services/campaigns.ts - Campaign orchestration → Credit service: checks and deducts
src/services/campaigns.ts - Campaign orchestration → WhatsApp accounts: updates status
src/services/campaigns.ts - Campaign orchestration → Message dispatch: sends messages
src/services/campaigns.ts - Message dispatch → WhatsApp Web client: sends via
src/whatsapp/dispatch.ts - Message dispatch → Message rendering: renders content
src/whatsapp/dispatch.ts - Message dispatch → Template service: loads templates
src/whatsapp/dispatch.ts - WhatsApp routes → WhatsApp Web client: checks and disconnects
src/routes/whatsapp.ts - WhatsApp routes → WhatsApp event listeners: starts listeners
src/routes/whatsapp.ts - WhatsApp routes → WhatsApp accounts: manages accounts
src/routes/whatsapp.ts - WhatsApp Web client → WhatsApp Web session: drives session
src/whatsapp/webjs-client.ts - WhatsApp event listeners → WhatsApp Web client: wires events
src/whatsapp/webjs-listeners.ts - WhatsApp event listeners → Contact and opt-in service: marks opt-outs
src/whatsapp/webjs-listeners.ts - WhatsApp event listeners → Campaign orchestration: records delivery
src/whatsapp/webjs-listeners.ts - WhatsApp event listeners → WhatsApp accounts: updates status
src/whatsapp/webjs-listeners.ts - Meta webhook → Webhook signature check: verifies payload
src/routes/webhook.ts - Meta webhook → Contact and opt-in service: suppresses opt-outs
src/routes/webhook.ts - Meta webhook → Campaign orchestration: records delivery
src/routes/webhook.ts - Meta webhook → SQLite database: stores inbound messages
src/routes/webhook.ts - Template routes → Template service: calls
src/routes/templates.ts - Credit routes → Credit service: calls
src/routes/credits.ts - Admin routes → Credit service: manages credits
src/routes/admin.ts - System routes → WhatsApp accounts: manages accounts
src/routes/system.ts