A modern WhatsApp Business Platform built with Go (Fastglue) and Vue.js (shadcn-vue).
- Multi-tenant Architecture: Support multiple organizations with isolated data
- Role-Based Access Control: Three roles (Admin, Manager, Agent) with granular permissions
- WhatsApp Cloud API Integration: Connect with Meta's WhatsApp Business API
- Real-time Chat: Live messaging with WebSocket support
- Template Management: Create and manage message templates
- Bulk Messaging: Send campaigns to multiple contacts
- Chatbot Automation:
- Keyword-based auto-replies
- Conversation flows with branching logic
- AI-powered responses (OpenAI, Anthropic, Google)
- Agent transfer support
- Canned Responses: Pre-defined quick replies for agents
- Organization-wide shared responses
- Category-based organization (Greetings, Support, Sales, etc.)
- Slash command support (type
/shortcutin chat) - Dynamic placeholders (
{{contact_name}},{{phone_number}})
- Analytics Dashboard: Track messages, engagement, and campaign performance
Click to view screenshots
- Go 1.21+ with Fastglue (fasthttp-based HTTP framework)
- PostgreSQL for data storage with GORM v2
- Redis for caching and pub/sub
- JWT for authentication
- Vue 3 with Composition API and TypeScript
- Vite for build tooling
- shadcn-vue / Radix Vue for UI components
- TailwindCSS for styling
- Pinia for state management
- Vue Query for server state
whatomate/
├── cmd/
│ └── server/ # Application entry point
├── internal/
│ ├── config/ # Configuration management
│ ├── database/ # Database connections
│ ├── handlers/ # HTTP handlers
│ ├── middleware/ # HTTP middleware
│ ├── models/ # Data models
│ └── services/ # Business logic
├── docker/ # Docker configuration
├── frontend/ # Vue.js frontend
│ ├── src/
│ │ ├── components/ # UI components
│ │ ├── views/ # Page views
│ │ ├── stores/ # Pinia stores
│ │ ├── services/ # API services
│ │ └── lib/ # Utilities
│ └── ...
├── config.example.toml # Example configuration
├── Makefile # Build commands
└── README.md
- Go 1.21+
- Node.js 18+
- PostgreSQL 14+
- Redis 6+
- Docker & Docker Compose (optional)
-
Clone and configure:
cd whatomate cp config.example.toml config.toml # Edit config.toml with your settings
-
Start backend:
# Install dependencies go mod download # Run database migrations make migrate # Start the server make run
-
Start frontend:
cd frontend npm install npm run dev
cd docker
docker compose up -dAccess the application at http://localhost:3000
When you run migrations for the first time, a default admin user is created:
- Email:
admin@admin.com - Password:
admin
Important: Change this password immediately after first login via the Profile page.
Copy config.example.toml to config.toml and update the values:
[app]
name = "Whatomate"
environment = "development"
debug = true
[server]
host = "0.0.0.0"
port = 8080
[database]
host = "localhost"
port = 5432
user = "whatomate"
password = "your-password"
name = "whatomate"
ssl_mode = "disable"
[redis]
host = "localhost"
port = 6379
password = ""
db = 0
[jwt]
secret = "your-jwt-secret"
access_token_expiry = "15m"
refresh_token_expiry = "7d"
[whatsapp]
api_version = "v18.0"
webhook_verify_token = "your-webhook-verify-token"
[ai]
openai_api_key = ""
anthropic_api_key = ""
google_api_key = ""POST /api/auth/register- Register new userPOST /api/auth/login- LoginPOST /api/auth/refresh- Refresh tokenPOST /api/auth/logout- Logout
GET /api/accounts- List accountsPOST /api/accounts- Create accountPUT /api/accounts/:id- Update accountDELETE /api/accounts/:id- Delete account
GET /api/users- List usersPOST /api/users- Create userGET /api/users/:id- Get userPUT /api/users/:id- Update userDELETE /api/users/:id- Delete user
GET /api/contacts- List contacts (agents see only assigned)POST /api/contacts- Create contactPUT /api/contacts/:id/assign- Assign contact to agentGET /api/contacts/:id/messages- Get messagesPOST /api/contacts/:id/messages- Send message
GET /api/templates- List templatesPOST /api/templates/sync- Sync from Meta
GET /api/flows- List flowsPOST /api/flows- Create flowGET /api/flows/:id- Get flowPUT /api/flows/:id- Update flowDELETE /api/flows/:id- Delete flowPOST /api/flows/:id/save-to-meta- Save/update flow on MetaPOST /api/flows/:id/publish- Publish flow on MetaPOST /api/flows/:id/deprecate- Deprecate flowPOST /api/flows/sync- Sync flows from Meta
GET /api/chatbot/settings- Get settingsPUT /api/chatbot/settings- Update settingsGET /api/chatbot/keywords- List keyword rulesGET /api/chatbot/flows- List flowsGET /api/chatbot/ai-contexts- List AI contexts
GET /api/canned-responses- List canned responsesPOST /api/canned-responses- Create canned responseGET /api/canned-responses/:id- Get canned responsePUT /api/canned-responses/:id- Update canned responseDELETE /api/canned-responses/:id- Delete canned responsePOST /api/canned-responses/:id/use- Track usage
GET /api/webhook- Webhook verificationPOST /api/webhook- Receive messages
The platform supports three user roles with different permission levels:
| Feature | Admin | Manager | Agent |
|---|---|---|---|
| User Management | Full | None | None |
| Account Settings | Full | Full | None |
| Contacts | Full | Full | Assigned only |
| Messages | Full | Full | Assigned only |
| Templates | Full | Full | None |
| Flows | Full | Full | None |
| Campaigns | Full | Full | None |
| Chatbot Settings | Full | Full | None |
| Canned Responses | Full | Full | Use only |
| Analytics | Full | Full | None |
- Admin: Full access to all features including user management
- Manager: Full access except cannot manage users
- Agent: Can only chat with contacts assigned to them
- Create a Meta Developer account at developers.facebook.com
- Create a new app and add the WhatsApp product
- Get your Phone Number ID and Business Account ID
- Generate a permanent access token
- Configure the webhook URL to point to
/api/webhook - Set the webhook verify token in your configuration
See LICENSE for details. Free to use and distribute, but not for sale or SaaS.















