System Overview
Vocantly is a multi-tenant chat and customer support platform built with a microservices architecture. The platform consists of four main services that work together to provide real-time messaging, AI-powered bots, and comprehensive customer support features.Backend API
NestJS REST API for business logic and data persistence
Realtime Service
Go WebSocket service for real-time messaging
Frontend Dashboard
Next.js admin dashboard for managing the platform
JavaScript SDK
Client SDK for application integration
Architecture Diagram
Core Services
1. Backend API (NestJS)
The Backend API is the central service that handles all business logic, data persistence, and API requests. Responsibilities:- User authentication and authorization
- Tenant management
- Conversation and message persistence
- AI bot inference and configuration
- Webhook management and delivery
- Support routing and assignment
- Analytics and reporting
- Framework: NestJS (Node.js)
- Database: PostgreSQL with TypeORM
- Authentication: JWT (Access & Refresh tokens)
- Caching: Redis (optional)
AuthModule- Authentication and user managementTenantModule- Multi-tenant isolationConversationModule- Conversation managementMessageModule- Message persistenceBotModule- AI bot integrationWebhookModule- Webhook deliverySupportModule- Support routing
The Backend API is the source of truth for all business logic and data persistence.
2. Realtime Service (Go)
The Realtime Service handles all WebSocket connections and real-time message delivery. Responsibilities:- WebSocket connection management
- Real-time message fanout
- Presence and typing indicators
- Delivery and read receipts
- Room (conversation) management
- WebRTC signaling
- Language: Go 1.21+
- WebSocket: Gorilla WebSocket
- Messaging: Redis Pub/Sub and Streams
- Authentication: JWT validation via JWKS
- ✅ Stateless - Horizontally scalable
- ✅ Event-driven - Publishes events, doesn’t persist
- ✅ Fail-open - Attempts delivery, Node.js reconciles
- ❌ Never writes to PostgreSQL - All persistence in Node.js
- ❌ No business logic - Only protocol validation
3. Frontend Dashboard (Next.js)
The admin dashboard for managing Vocantly instances. Responsibilities:- User interface for platform management
- Tenant configuration
- Bot configuration
- Support inbox management
- Analytics visualization
- Framework: Next.js (React)
- Styling: Tailwind CSS
- State Management: React Context
- HTTP Client: Axios
4. JavaScript SDK
Headless SDK for integrating Vocantly into applications. Responsibilities:- Client-side API integration
- WebSocket connection management
- Message sending and receiving
- Presence management
- Typing indicators
- Language: TypeScript
- Build: tsup
- WebSocket: Native WebSocket API
Data Flow
Message Sending Flow
Message Receiving Flow
Multi-Tenancy
Vocantly is built with tenant isolation at its core. Each tenant has:- Isolated data - All data is scoped by tenant
- Separate configuration - Apps, bots, webhooks per tenant
- Role-based access - OWNER, ADMIN, AGENT, MEMBER roles
- Department routing - Conversations routed to departments
Tenant Structure
Authentication & Authorization
Token Types
- Access Token - Short-lived (15min), for API requests
- Refresh Token - Long-lived, for token renewal
- SDK Token - Short-lived (15min), for WebSocket connections
Authentication Flow
Scalability
Horizontal Scaling
Backend API:- Stateless design allows multiple instances
- Shared PostgreSQL database
- Optional Redis for caching
- Stateless, horizontally scalable
- Redis Pub/Sub for inter-node communication
- Load balancer distributes WebSocket connections
Redis Usage
- Pub/Sub - Inter-node message broadcasting
- Streams - Event persistence and replay
- Keys - Session and room state (optional)
Security
Data Isolation
- Tenant-scoped queries prevent data leakage
- JWT tokens include tenant context
- Database-level constraints enforce isolation
Authentication
- JWT-based authentication
- JWKS for token validation
- Internal service authentication via shared secrets
Network Security
- HTTPS/WSS for all connections
- CORS configuration
- Rate limiting on API endpoints
Deployment Architecture
Recommended Setup
Technology Stack Summary
Next Steps
Backend API
Learn about the Backend API architecture
Realtime Service
Understand WebSocket and real-time features
Quick Start
Get started with installation
API Reference
Explore API endpoints