-
Notifications
You must be signed in to change notification settings - Fork 120
Architecture Overview
jack ning edited this page Jun 15, 2026
·
1 revision
Bytedesk is a multi-module business platform with multi-scenario deployment capabilities and multi-client frontends. Understand the architecture from three dimensions: runtime components, engineering organization, and scenario extensions.
- Frontend Applications - Admin dashboard, agent workbench, visitor portal, desktop app
- External Channels - WeChat, Douyin, web, mobile, and third-party integrations
- Open Platform APIs - RESTful APIs and SDKs for custom integrations
- Team IM - Enterprise messaging and collaboration
- Customer Service - Multi-channel support and routing
- Knowledge Base - Documentation and RAG system
- Ticket System - Issue tracking and workflow
- AI Agent - LLM integration and function calling
- VOC - Voice of customer feedback
- Call Center - Voice call management
- WebRTC - Video call and screen sharing
- Databases - MySQL, PostgreSQL, Oracle, KingbaseES
- Message Queues - Artemis (default), RabbitMQ
- Caching - Redis
- Search - Elasticsearch
- Object Storage - MinIO
- AI Services - Ollama (local), ZhipuAI, DeepSeek
- Voice/Video - FreeSWITCH, Janus, Coturn
- Maven Multi-module - Root project aggregates backend modules
-
Module Separation - Business modules in
modules/, plugins inplugins/ -
Configuration - Centralized in
starter/src/main/resources/
- Turborepo Monorepo - pnpm workspace with multiple apps
- Shared Packages - Common components and utilities
- Build System - Vite for fast development and builds
- Docker Compose - Scenario-based deployment files
-
Environment Variables - Centralized in
.env - Infrastructure as Code - All deployment assets in repo
Bytedesk supports multiple deployment scenarios, not just a single "standard" version:
| Scenario | Description | Use Case |
|---|---|---|
standard |
Standard customer service with AI | Default deployment |
noai |
Without AI dependencies | Simplified deployments |
call |
With call center (FreeSWITCH) | Voice support needs |
webrtc |
With WebRTC video | Video support needs |
call-webrtc |
Both voice and video | Full-featured support |
- Development/Testing - Confirm which scenario you're working with
- Production Deployment - Start with minimal viable scenario, add capabilities later
- Dependencies - Some scenarios require additional infrastructure (FreeSWITCH, Janus, Coturn)
- Identify which business capability you need
- Locate the corresponding module in
modules/ - Check if there are related plugins or channels
- Understand the data flow and dependencies
- Determine if the change is in frontend, backend, or deployment
- Locate the correct directory in the monorepo
- Understand the module boundaries and dependencies
- Test changes in the appropriate scenario
- Select database and message queue first
- Choose the appropriate scenario
- Configure environment variables in
.env - Monitor logs and component health
When reviewing or modifying the architecture, consider:
- Which capabilities are in the default baseline vs optional plugins
- Which dependencies are interchangeable (database, MQ)
- Which scenarios introduce additional operational complexity (call, webrtc, AI)
- Clear separation between
docs/(official site) and this wiki (repo collaboration)
- Java 21 - Language
- Spring Boot 3.5.x - Framework
- Spring Data JPA - ORM
- Spring Security - Security
- WebSocket - Real-time communication
- Spring AI - AI integration
- Flowable - Workflow engine
- QueryDSL - Type-safe queries
- TypeScript - Language
- React - UI framework
- Ant Design - Component library
- Zustand - State management
- Vite - Build tool
- Turborepo - Monorepo build system
- Flutter - Cross-platform framework
- Dart - Language
- UniApp - Lightweight mobile framework
- Docker - Containerization
- Docker Compose - Orchestration
- Kubernetes - Container orchestration (optional)
- Nginx - Reverse proxy
- Elastic Stack - Logging and monitoring