- FastAPI + LiveKit backend for real-time JP↔KR meetings: auth, rooms, chat, STT translation, glossary, and ops dashboard in one place.
- JWT auth, room/member management, friends & DM
- LiveKit token issuance + Realtime Agent (STT → translate → Redis broadcast)
- WebSocket chat/STT events, REST translation & mock summarization
- Streamlit dashboard for quick table insights
- Worker token/service-key guardrails to protect ops workers
graph LR
C[Client Web/RTC] -->|HTTP/WS| API[FastAPI]
API --> DB[(MySQL 8)]
API --> Cache[(Redis 7)]
API -->|LiveKit Token| LK[LiveKit]
LK --> Agent[Realtime Agent]
Agent -->|Events| Cache
API --> Dash[Streamlit Dashboard]
Agent -->|STT+Translate| LLM[OpenAI & DeepL]
| Area | Tools |
|---|---|
| Backend | FastAPI, Uvicorn, Pydantic v2, SQLAlchemy 2, Alembic |
| Data | MySQL 8, Redis 7 |
| Realtime/AI | LiveKit API/RTC, OpenAI SDK, DeepL |
| Infra | Docker & docker-compose, Makefile |
| Observability | structlog, python-json-logger |
| DevEx | Poetry, Ruff, Black, Mypy, Pytest |
- Prereqs: Docker, Docker Compose, Make. Prepare
.env, then:
cp .env.example .env
make build && make up # api + mysql + redis + dashboard
make migrate # Alembic upgrade head
./run.sh # build -> up -> migrate -> recreate LiveKit worker
# stop/clean: make down / make clean- Compose profile: add
--profile with-workerto include the worker container when available.