WhatsApp bot with AI for logistics/package tracking with CRM agent panel.
Hexagonal (Ports & Adapters). WhatsApp provider (Twilio) and LLM provider (Groq) are swappable adapters.
Backend: Node.js + Express + PostgreSQL (Drizzle ORM) + Redis (BullMQ) + Twilio + Groq Frontend: React + Tailwind v4 + ShadCN/Coss + TanStack Query + Zustand
- Node.js 20+
- Railway account (or local PostgreSQL + Redis)
npm install
cd frontend && npm installcp .env.example .env
# Edit .env with your credentialsRequired variables:
| Variable | Description |
|---|---|
| DATABASE_URL | PostgreSQL connection string |
| REDIS_URL | Redis connection string |
| TWILIO_ACCOUNT_SID | Twilio account SID |
| TWILIO_AUTH_TOKEN | Twilio auth token |
| TWILIO_WHATSAPP_NUMBER | WhatsApp number (whatsapp:+1...) |
| GROQ_API_KEY | Groq API key |
| JWT_SECRET | Min 32 chars random string |
| JWT_REFRESH_SECRET | Min 32 chars random string (different from JWT_SECRET) |
| FRONTEND_URL | Frontend URL for CORS (e.g. http://localhost:5173) |
npm run db:generate
npm run db:migrateBackend:
npm run devFrontend (separate terminal):
cd frontend && npm run dev- Create
src/infrastructure/whatsapp/MetaCloudAdapter.jsimplementingIWhatsAppProvider - In
src/container.js, replaceTwilioAdapterwithMetaCloudAdapter - Update webhook route if needed
- Create
src/infrastructure/llm/OpenAIAdapter.jsimplementingILLMProvider - In
src/container.js, replaceGroqAdapterwithOpenAIAdapter