AllCallAll is a full-stack engineering portfolio project for an enterprise realtime collaboration and AI-assisted management system. It is built around React/Vite, Go, Gin, Gorm/MySQL, Redis, WebSocket/WebRTC, recording storage, asynchronous workers, Elasticsearch search, and AI Agent workflows.
The strongest project story is not a commercial app launch. The repo demonstrates how an enterprise collaboration product can evolve from a modular monolith into a maintainable full-stack system with generated API contracts, an admin dashboard, realtime collaboration, performance gates, extracted worker/service boundaries, a primary Web app, native Expo mobile app, and Electron shell.
- Realtime collaboration: organizations, conversations, messages, notes, durable WebSocket replay, room state, WebRTC signaling, and recording sessions.
- Enterprise admin console: organization overview, member/invite/team/policy/audit management, admin summary API, Redis-backed dashboard cache, and reproducible dashboard/message-list benchmarks.
- AI Agent system: ReAct-style single-agent runs, workflow/DAG-style multi-agent tasks, tool calling, approvals, persisted traces, memory, and conversation-aware context retrieval. Beta/demo Compose defaults to a Python FastAPI + LangGraph Agent Runtime while Go remains the source of truth for data, permissions, approvals, audit, and writes.
- Meeting recording transcription: recording stop can enqueue
recording.transcription.requested; the provider abstraction supports mock and OpenAI-compatible ASR paths and storesMeetingTranscriptSegmentrows for Agent retrieval. - Hybrid retrieval: conversation context plus external knowledge sources, BM25/vector search where Elasticsearch is configured, Go-layer reranking/chunk assembly, and an optional Python RAG Runtime for Agentic retrieval orchestration, rerank, evidence packs, and grounding checks.
- Async reliability: MySQL outbox, claim/lease workers, retries, idempotency keys, and Prometheus-style counters.
- Extractable runtime: API server can run embedded workers locally, or split into User Service, Agent Worker, Outbox Worker, Data Worker, Search Worker, and Cleanup Worker.
- Primary Web surface:
web/is the main browser client, covering auth, organizations, collaboration, chat, calls, meetings, recordings, transcripts, Agent Lab, knowledge, approvals, billing settings, Web Push, and responsive layouts. - Supporting native/desktop surfaces:
mobile/remains the Expo Android/iOS client;desktop/is a thin Electron shell over the Web client. - Beta v1 scope: the practical product loop is a 3-6 person team flow: create organization, invite members, chat, start a meeting, record, transcribe, generate an Agent meeting brief, inspect citations, and approve write-back tools.
Realtime translation code is still present for compatibility, but the mobile UI entry points are currently hidden. Meeting transcription is now independent of the realtime translation switch.
backend/ Go backend: API, auth, collaboration, Agent adapters, search, storage, workers
web/ Primary React + Vite + TypeScript Web application
mobile/ Expo React Native app for native Android/iOS
desktop/ Electron shell wrapping the Web client
infra/ Docker Compose local stack and optional interview infra profiles
scripts/ Development, smoke, seed, and benchmark scripts
docs/ Current docs, interview docs, deployment notes, and selected references
The Python Agent/RAG runtime source has been split into
XianingY/allcallall-agent-runtime.
AllCallAll integrates it over HTTP and Docker images; Go remains the source of truth for product data, permissions, approvals, audit, and write execution.
Start MySQL and Redis:
./scripts/development/start-services.shRun the backend API:
cd backend
CONFIG_PATH=./configs/config.yaml go run ./cmd/serverHealth check:
curl http://localhost:8080/api/v1/healthRun the Web app:
cd web
npm install
npm run devVite serves the app at http://localhost:5173 and proxies /api and WebSocket traffic to http://127.0.0.1:8080.
Run the desktop shell:
cd desktop
npm install
ALLCALLALL_WEB_URL=http://localhost:5173 npm run buildAndroid development still uses Expo/React Native and EXPO_PUBLIC_* configuration. APP_ENV is historical and is not an active mobile runtime control.
# API server, embedded workers enabled by default
make run-api
# Extracted service/process boundaries
make run-user-service
make run-agent-worker
make run-outbox-worker
make run-data-worker
make run-search-worker
make run-cleanup-worker
make run-agent-runtime
make run-rag-runtime
# Deterministic interview/demo harnesses
make beta-seed
make interview-demo
make interview-smoke
make interview-chaos
make interview-down
make interview-microservice-demo
make agent-eval
make rag-eval
make rerank-eval
make python-agent-eval
make python-rag-eval
make ai-agent-jd-eval
make ai-portfolio-eval
make dashboard-bench
make realtime-replay-bench
make chat-ws-replay-bench
make web-contract-check
make web-performance-checkmake run-backend is retained as a compatibility alias for the API server.
The main API server, Agent Worker, and MCP tool server call godotenv.Load() as a development convenience, then load CONFIG_PATH YAML and environment overrides. In production or Docker Compose, inject variables explicitly.
Common backend variables:
CONFIG_PATH: backend YAML config path.DB_DSN: MySQL DSN override.REDIS_ADDR,REDIS_PASSWORD: Redis connection.JWT_SECRET: JWT signing secret.MAIL_PASSWORD: SMTP credential override.AGENT_PROVIDER=rules|mock_llm|openai_compatible: Agent planner/provider selection.AGENT_PROVIDER_STRICT=true: required for Beta/production when using a real provider; disables silent fallback torules.RAG_RERANK_ENABLED=true,RAG_RERANK_PROVIDER=rules|cross_encoder_compatible: optional post-retrieval rerank over BM25/vector/RRF candidates.AGENT_RUNTIME=python_langgraph|legacy_go: Agent orchestration runtime. Compose/Beta demo defaults topython_langgraph; bare Go processes without this env still use the legacy in-process runtime.gois accepted as a legacy alias.PY_AGENT_RUNTIME_BASE_URL: Python LangGraph runtime URL, defaulting tohttp://127.0.0.1:8090locally andhttp://agent-runtime:8090in Compose.PY_RAG_RUNTIME_BASE_URL: Python RAG Runtime URL, defaulting tohttp://rag-runtime:8091in Compose when Agentic RAG calls are enabled.PY_AGENT_RUNTIME_IMAGE,PY_RAG_RUNTIME_IMAGE: Docker image overrides. Compose defaults toghcr.io/xianingy/allcallall-agent-runtime/{agent-runtime,rag-runtime}:v0.2.0.PY_AGENT_RUNTIME_TIMEOUT_SEC,PY_AGENT_RUNTIME_STRICT: timeout and strict failure behavior for the Python runtime.AGENT_RUNTIME_TOOL_TOKEN: shared token that protects the Go read-only tool bridge for Python runtime calls.PY_AGENT_PROVIDER=rules|openai_compatible: Python runtime provider selection.PY_AGENT_OPENAI_BASE_URL,PY_AGENT_OPENAI_MODEL,PY_AGENT_OPENAI_API_KEY: Python runtime OpenAI-compatible chat provider settings.PY_AGENT_PROMPT_VERSION,PY_AGENT_ENABLE_GROUNDING_CHECK: Python prompt-template and grounding-check controls.PY_AGENT_ENABLE_AGENTIC_RAG=false,PY_AGENT_RAG_MAX_RETRIEVAL_STEPS=3,PY_AGENT_RAG_MIN_CONFIDENCE=0.6: bounded Agentic RAG planning/refinement controls.PY_AGENT_TOOL_BRIDGE_BASE_URL,PY_AGENT_TOOL_BRIDGE_TOKEN: Python runtime access to Go-owned read-only tools.PY_RAG_TOOL_BRIDGE_BASE_URL,PY_RAG_TOOL_BRIDGE_TOKEN: Python RAG Runtime access to the Go internal authorized retrieval bridge.PY_RAG_RERANK_PROVIDER=rules|cross_encoder_compatible,PY_RAG_TOP_K,PY_RAG_MAX_STEPS,PY_RAG_MIN_CONFIDENCE: Python RAG Runtime retrieval and rerank controls.PY_AGENT_HARNESS=allcallall_v1,PY_AGENT_LOOP_MAX_STEPS=5,PY_AGENT_ENABLE_CRITIC=true: Python Agent Runtime Harness and bounded-loop controls.PY_RAG_VECTOR_STORE=none|qdrant,PY_RAG_QDRANT_URL,PY_RAG_QDRANT_COLLECTION: optional Qdrant adapter for vector/payload retrieval experiments; Go remains the production data boundary.EMBEDDED_WORKERS=0|1: controls API-process workers.FCM_SERVICE_ACCOUNT_PATH: enables Firebase Admin SDK push delivery.RECORDING_STORAGE_DRIVER=local|s3: recording storage driver.RECORDING_STORAGE_DIR: local recording storage root.RECORDING_S3_*: S3-compatible recording storage config.TRANSCRIPTION_ENABLED=true: enables recording transcription jobs.TRANSCRIPTION_PROVIDER=mock|openai_compatible: recording transcription provider.TRANSCRIPTION_OPENAI_BASE_URL,TRANSCRIPTION_OPENAI_MODEL,TRANSCRIPTION_OPENAI_API_KEY: OpenAI-compatible ASR settings for Beta.USER_SERVICE_GRPC_ADDR: enables API auth validation through User Service.KAFKA_BROKERS,KAFKA_SETTLEMENT_TOPIC: enables settlement event publishing/consumption.ELASTICSEARCH_URL,ELASTICSEARCH_INDEX: enables Elasticsearch message/search indexing.
Web runtime public variables are injected through /config.js in production:
PUBLIC_API_BASE_URLPUBLIC_WS_BASE_URLFIREBASE_API_KEY,FIREBASE_AUTH_DOMAIN,FIREBASE_PROJECT_ID,FIREBASE_STORAGE_BUCKET,FIREBASE_MESSAGING_SENDER_ID,FIREBASE_APP_ID,FIREBASE_VAPID_KEYREVENUECAT_PUBLIC_API_KEY
Mobile native public variables:
EXPO_PUBLIC_API_HTTPEXPO_PUBLIC_API_WSEXPO_PUBLIC_FORCE_TLSEXPO_PUBLIC_RESTRICTED_NETWORKEXPO_PUBLIC_SIGNALING_TRANSPORTEXPO_PUBLIC_SIGNALING_SHAPINGEXPO_PUBLIC_E2EE_MODE=experimentalEXPO_PUBLIC_REVENUECAT_API_KEYand related RevenueCat variables for Android subscription paths.
Run local infrastructure for the interview-oriented extracted topology:
docker compose -f infra/docker-compose.yml \
--profile microservices \
--profile interview-infra \
up api user-service outbox-worker data-worker search-worker kafka elasticsearchImportant variables for that topology:
USER_GRPC_ADDR=:9090
USER_SERVICE_GRPC_ADDR=user-service:9090
KAFKA_BROKERS=kafka:9092
KAFKA_SETTLEMENT_TOPIC=allcallall.room.settlements
ELASTICSEARCH_URL=http://elasticsearch:9200
ELASTICSEARCH_INDEX=allcallall_messages
EMBEDDED_WORKERS=0For local Beta walkthroughs, seed a small team workspace after MySQL is running:
make beta-seedThe command creates deterministic owner/member accounts, an organization, a team, a conversation, sample messages, a completed meeting, ready transcript segments, and audit events. It prints login credentials and direct Web routes. The seeded transcript is metadata and text-only; it is useful for UI and Agent grounding demos, not for real ASR/download validation.
Start with:
- Documentation Index
- Backend README
- Quick Start
- Configuration
- Interview README
- Interview Chain
- Five-Minute Demo Script
- Tencent Interview Questions
- Tencent Full-Stack JD Fit
- System Design
- AI Agent Design
- API Surface
Backend:
cd backend && go test ./... && go vet ./...Web:
cd web && npm run typecheck && npm run lint && npm test && npm run build
cd web && npm run contract:check && npm run bundle:budgetMobile:
cd mobile && npx tsc --noEmit && npm run lintDesktop:
cd desktop && npm run check && npm run buildUse the narrowest relevant check for small changes, then broaden when shared behavior or generated surfaces are touched.
- Kubernetes is intentionally not part of the current implementation.
- Transcript editing, large-meeting SFU scale-out, and Kubernetes are future enhancements.
- Kafka and Elasticsearch adapters exist, but live smoke tests require the optional Compose profiles.
- Production Web billing and Web Push require RevenueCat/Firebase public runtime config plus backend FCM service-account config.
- The
.protofile is the source contract; current Go gRPC binding is hand-written becauseprotocis not required by CI.
This repository is used as a personal engineering portfolio project. Confirm licensing requirements before commercial reuse.