Nuxt 4 frontend for call.openbomber.com
  • TypeScript 44.6%
  • Vue 40.2%
  • Java 5.2%
  • JavaScript 5%
  • CSS 4.5%
  • Other 0.5%
Find a file
Данил Габов 35debbb96a fix(dm): accept emojiAvatar in dm/friends sender validators
ArgumentValidationError rejected every send/mirror/friend-request
mutation since 3683919 added emojiAvatar to toPublicUser. Convex
validators in dm.mirrorMessage, dm.sendMessage, friends.mirrorFriendship,
friends.createRequest never got the field, so the bridge POST 500'd
on the Convex side. DM chat had been silently broken in prod.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 19:42:32 +03:00
.cache-screenshots chore: apply latest call app updates 2026-05-08 19:44:09 +03:00
.fallow feat: Pro subscription via Platega (SBP + card) 2026-05-13 18:51:39 +03:00
android release: v0.8.4 2026-05-16 12:57:09 +03:00
app fix(call): control rail wraps on mobile so leave + raise-hand stay visible 2026-05-17 19:42:32 +03:00
build fix(electron): tray icon mask + cross-platform polish pass 2026-05-13 21:22:31 +03:00
convex fix(dm): accept emojiAvatar in dm/friends sender validators 2026-05-17 19:42:32 +03:00
dist-noop feat(android): Capacitor wrapper + FCM push + foreground service 2026-05-10 03:17:59 +03:00
docs chore: apply latest call app updates 2026-05-08 19:44:09 +03:00
e2e test(e2e): Playwright suite covering home, /login, /download, /invite, SEO 2026-05-17 19:42:32 +03:00
electron fix(call): harden call lifecycle across web/server/android/electron 2026-05-16 12:47:55 +03:00
public release: v0.8.4 2026-05-16 12:57:09 +03:00
resources feat(android): branded icons, splash, download page + APK distribution 2026-05-10 03:23:37 +03:00
scripts feat(site): /download serves native APK from releases.dashka.live 2026-05-17 19:42:32 +03:00
server feat(site): /download serves native APK from releases.dashka.live 2026-05-17 19:42:32 +03:00
shared feat: Pro subscription via Platega (SBP + card) 2026-05-13 18:51:39 +03:00
test test: drop obsolete mic worklet test; mock session+plan in recordStart 2026-05-14 00:41:45 +03:00
.dockerignore fix: guard production docker builds 2026-05-13 01:54:51 +03:00
.env.example Add recommended Telegram emoji packs 2026-05-13 16:51:51 +03:00
.fallowrc.json release: v0.3.7 2026-05-11 17:07:38 +03:00
.gitignore test(e2e): Playwright suite covering home, /login, /download, /invite, SEO 2026-05-17 19:42:32 +03:00
.mcp.json feat(electron): mac/win/linux desktop app + harden frontend 2026-05-09 14:54:42 +03:00
.oxfmtrc.json chore: apply latest call app updates 2026-05-08 19:44:09 +03:00
.oxlintrc.json test(e2e): Playwright suite covering home, /login, /download, /invite, SEO 2026-05-17 19:42:32 +03:00
AGENTS.md feat: Pro subscription via Platega (SBP + card) 2026-05-13 18:51:39 +03:00
bun.lock feat(capacitor): preferences, share sheet, native dialog, device info, Capgo 2026-05-13 21:26:32 +03:00
capacitor.config.ts feat(capacitor): preferences, share sheet, native dialog, device info, Capgo 2026-05-13 21:26:32 +03:00
CLAUDE.md migrate backend to convex 2026-05-12 21:16:53 +03:00
Dockerfile fix: add production healthcheck 2026-05-13 02:01:32 +03:00
eslint.config.ts chore(ui): impeccable audit fixes — anti-patterns + theming + perf 2026-05-17 19:42:32 +03:00
lobby-desktop.png updates 2026-05-09 23:13:23 +03:00
nuxt.config.ts perf: reduce GPU/CPU load — lazy lottie, capped TGS, chat O(1) dedup, vendor split 2026-05-14 00:11:10 +03:00
opencode.json feat(electron): mac/win/linux desktop app + harden frontend 2026-05-09 14:54:42 +03:00
package.json test(e2e): Playwright suite covering home, /login, /download, /invite, SEO 2026-05-17 19:42:32 +03:00
PLAN.md feat(electron): mac/win/linux desktop app + harden frontend 2026-05-09 14:54:42 +03:00
playwright.config.ts test(e2e): Playwright suite covering home, /login, /download, /invite, SEO 2026-05-17 19:42:32 +03:00
posthog-setup-report.md feat: Pro subscription via Platega (SBP + card) 2026-05-13 18:51:39 +03:00
PUSH.md feat: web push, settings, electron native polish, friends/calls 2026-05-09 17:45:20 +03:00
README.md chore: apply latest call app updates 2026-05-08 19:44:09 +03:00
RELEASING.md migrate backend to convex 2026-05-12 21:16:53 +03:00
skills-lock.json migrate backend to convex 2026-05-12 21:16:53 +03:00
tsconfig.json init: openbomber-call — Nuxt 4 + LiveKit SFU, Telemost-style UI 2026-05-01 02:43:54 +03:00
vitest.config.ts feat: Pro subscription via Platega (SBP + card) 2026-05-13 18:51:39 +03:00

dashka.live

Видеозвонки с AI-напарницей Дашей. Self-hosted на LiveKit + Hermes + Cartesia / Gemini Realtime.

Stack

  • Nuxt 4 + Bun runtime
  • @nuxt/ui v4 (Luma design — glassy, soft, rounded-lg)
  • livekit-client + livekit-server-sdk для WebRTC SFU
  • Pinia + VueUse

Архитектура

Браузер ─→ wss://livekit.dashka.live (signaling)
        ─→ UDP 50000-50100 (RTP media)
        ─→ /api/livekit/token (Nuxt server, минтит JWT)
        ─→ /api/livekit/record-{start,stop} (Egress API)

LiveKit Egress ─→ MinIO bucket "calls" (запись MP4)
              ─→ webhook → n8n → Whisper → Ollama → email summary

Локальная разработка

cp .env.example .env
bun install
bun run dev

Открой http://localhost:3000.

Деплой

Через Coolify (Application → Public Repository → Dockerfile) или раздельным docker-compose.

Env vars:

  • LIVEKIT_API_KEY — берёшь у админа
  • LIVEKIT_API_SECRET
  • NUXT_PUBLIC_LIVEKIT_URLwss://livekit.dashka.live

Что есть

  • Лобби: создать/подключиться к комнате
  • PreJoin: превью камеры + микрофона до входа
  • Комната: адаптивная сетка (1, 2, 4, 6, 9, 12+ участников)
  • Контролы: mic / cam / screen-share / record / participants / chat / link / leave
  • Speaking-индикатор (пульс ring)
  • Avatar-fallback при выключенной камере
  • Recording с автоматической отправкой на AI-пайплайн
  • Re-connection индикация
  • Mobile-friendly (controls размер L, viewport-fit, fixed footer)

Что докрутить

  • Чат в комнате (LiveKit DataChannel)
  • Виртуальный фон / blur (LiveKit Background)
  • Smart-layout: pin speaker, gallery vs spotlight
  • Шумоподавление (livekit-client built-in или RNNoise)
  • PWA (push-уведомления о звонке)
  • AI-summary inline (показать прямо после звонка)
  • Авторизация (Authentik / Pocket Id если решишь)
  • Заглушение участника (host control)
  • Live-транскрипция (LiveKit Agents + Whisper streaming)