← Back to Projects
Web2024Proprietary

WhatsAppDirector

WhatsApp Automation & Messaging Platform

CTO·Zeqah·1 month

Built for Zeqah internal operations.

The Challenge

Zeqah needed WhatsApp-based communication workflows for reminders and operational messaging, with scheduling and session reliability.

The Approach

Used whatsapp-web.js to interface with the WhatsApp Web protocol, wrapping it in a Next.js dashboard for contact management and message composition. SQLite keeps things lightweight for single-instance deployments.

System Architecture

A headless WhatsApp automation layer: the system runs a persistent Puppeteer instance that controls WhatsApp Web inside a headless Chrome browser. A custom session serialization system saves and restores the WhatsApp Web session state across server restarts - solving the notoriously difficult problem of maintaining Puppeteer sessions. The Next.js backend provides REST APIs for the scheduling engine, which uses Bull queues for timed message delivery with configurable rate limiting. Contact management supports CSV import with deduplication. The system runs behind an Nginx reverse proxy on a VPS with PM2 for process management.

System architecture overview

Built For

Zeqah operations staff and support teams who run reminder broadcasts and student communication workflows through WhatsApp without manual one-by-one sending.

Design Decisions

Why whatsapp-web.js over the official API?

The official WhatsApp Business API requires approval and has strict messaging templates. whatsapp-web.js provides the flexibility to send any message type without template restrictions, perfect for small-business use cases.

Alternatives considered:WhatsApp Business APITwilio WhatsAppCustom protocol

Why SQLite instead of PostgreSQL?

This tool is designed for single-instance deployment (one business, one WhatsApp number). SQLite eliminates the need for a separate database server, making deployment as simple as copying a folder.

Alternatives considered:PostgreSQLMongoDBJSON files

The Team

CTO (me)

WhatsApp protocol integration, session management, dashboard, scheduling engine

Operations Team

Template requirements, campaign operations, and validation

Tech Stack

Next.jsTypeScriptPrismaSQLitewhatsapp-web.jsTailwind CSS

Outcomes & Impact

  • Session persistence across server restarts - solved a complex state serialization problem with Puppeteer sessions
  • Bulk reminder scheduling with intelligent rate limiting to maintain delivery reliability
  • Contact import from CSV and manual entry with duplicate detection