Architecture
How the web app, API, media engine and AI workers fit together.
MeetOye separates the backend brain from the media engine and the AI workers. Media never flows through the API — NestJS only mints scoped LiveKit join tokens and stores metadata.
Next.js web (apps/web) + LiveKit React SDK
│ REST + JWT
NestJS API (services/api) ── Postgres (Prisma) ── Redis
│ mints scoped join tokens only
LiveKit SFU + coturn (infra/) ◄── all audio/video/screen-share media
│
Oya AI workers ──► STT → Translation → Captions → Summary → EmailResponsibilities
| COMPONENT | ROLE |
|---|---|
| NestJS | Backend brain — auth, meetings, tokens, metadata |
| LiveKit | Media engine — audio, video, screen share, tracks |
| Oya AI workers | Transcription / translation / summary |
| Tauri | Native Windows/macOS desktop shell |
lightbulb
Hard rule: Oya is a separate service from the media server and API. If Oya fails, the meeting must keep working.