How bocahlinux/wamora works
Wamora is an internal dashboard for monitoring and operating a WAHA-based WhatsApp gateway. Operators sign in to view dashboard, inbox, and session state, manage WhatsApp sessions, and create or review controlled bulk-send campaigns. WAHA webhooks feed durable message records; reconciliation repairs missed history, while approved blast campaigns dispatch recipient-level sends through the BFF. The React UI uses the BFF for WAHA-facing operations; the BFF also makes best-effort internal calls to Django. README documents reports and settings capabilities, but their implementation wiring was not sampled.
Main entry points: wahaClient.ts WAHA client · app.ts BFF router · services.py Webhook processing · tasks.py Blast dispatch tasks
Components 26
Operator interface
- Dashboard UI
frontend/src/App.tsx - Protected pages
frontend/src/routes/AppRoutes.tsx - Query state
frontend/src/lib/useApiQuery.ts - Session controls
frontend/src/pages/SessionsPage.tsx
BFF gateway
- BFF router
bff/src/app.ts - Session API
bff/src/routes/session.ts - Message API
bff/src/routes/messages.ts - Blast API
bff/src/routes/internalBlast.ts - WAHA client
bff/src/wahaClient.ts - Django client
bff/src/djangoClient.ts
Ingestion and sync
- Webhook intake
backend/apps/webhooks/views.py - Webhook processing
backend/apps/webhooks/services.py - Sync tasks
backend/apps/sync/tasks.py - Reconciliation
backend/apps/sync/reconciliation.py - Reconciliation WAHA client
backend/apps/sync/waha_client.py
Campaign dispatch
- Blast dispatch tasks
backend/apps/blast/tasks.py - BFF dispatch client
backend/apps/blast/bff_client.py - Campaign API
backend/apps/blast/views.py
Backend services and state
- Outbound operations
backend/apps/operations/models.py - Chat and messages
backend/apps/chats/models.py - WAHA sessions
backend/apps/waha_sessions/models.py - Audit service
backend/apps/audit/views.py
Other components
- Operator
- WAHA gateway
- PostgreSQL
- Celery and Redis
Connections 33
- Operator → Dashboard UI: uses
- Dashboard UI → Protected pages: renders
- Protected pages → Session controls: routes to
- Session controls → Query state: loads status
- Dashboard UI → BFF router: calls APIs
- BFF router → Session API: dispatches
- BFF router → Message API: dispatches
- BFF router → Blast API: dispatches
- Session API → WAHA client: requests WAHA
- Message API → WAHA client: requests WAHA
- Blast API → WAHA client: sends via
- WAHA client → WAHA gateway: calls allowlisted API
- WAHA client → Django client: reports outcomes
- WAHA gateway → Webhook intake: posts events
- Webhook intake → Webhook processing: processes event
- Webhook processing → Chat and messages: persists messages
- Webhook processing → WAHA sessions: resolves session
- Webhook processing → PostgreSQL: writes records
- Sync tasks → Reconciliation: runs reconciliation
- Reconciliation → Reconciliation WAHA client: fetches history
- Reconciliation WAHA client → WAHA gateway: reads chats
- Reconciliation → Chat and messages: repairs history
- Sync tasks → Celery and Redis: schedules work
- Campaign API → Blast dispatch tasks: schedules campaign
- Blast dispatch tasks → BFF dispatch client: dispatches recipient
- BFF dispatch client → Blast API: sends internally
- Blast dispatch tasks → Outbound operations: claims and records
- Blast dispatch tasks → Celery and Redis: schedules recipients
- Outbound operations → PostgreSQL: stores state
- Chat and messages → PostgreSQL: stores messages
- WAHA sessions → PostgreSQL: stores sessions
- Django client → Audit service: writes audit events
- Campaign API → PostgreSQL: persists campaigns