웹 우선 AI 회의록 서비스 워크스페이스입니다.
Brevoca는 오디오 업로드와 브라우저 녹음을 받아 OpenAI 전사와 요약으로 회의록을 생성합니다. 현재 저장소는 Next.js 웹 앱과 작은 공용 계약 패키지만 유지합니다. Electron 클라이언트는 추후 같은 API 계약을 사용하는 별도 앱으로 재도입하는 전제를 둡니다.
apps/
└── web/ # Next.js 웹 앱 + Route Handlers
packages/
└── contracts/ # 회의/잡 타입, 상태값, 프롬프트 자산
- 브라우저에서 오디오 파일을 업로드하거나 직접 녹음합니다.
POST /api/meetings가 회의와 작업(job)을 생성합니다.- 서버 내부 백그라운드 처리기가 OpenAI 전사를 수행합니다.
- 긴 회의는 청크 단위로 요약한 뒤 최종 회의록으로 다시 통합합니다.
/processing/:jobId에서 진행 상태를 polling 하고, 완료 시/meeting/:meetingId로 이동합니다.
- 프론트엔드: Next.js 15, React 18, Tailwind CSS 4
- 서버 처리: Next.js Route Handlers, Node.js runtime
- AI: OpenAI speech-to-text, OpenAI Responses API
- 공용 계약:
@brevoca/contracts
최소한 아래 값이 필요합니다.
OPENAI_API_KEY=...
NEXT_PUBLIC_SUPABASE_URL=...
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=...
SUPABASE_SERVICE_ROLE_KEY=...선택적으로 모델, 청크 전략, Storage bucket을 조정할 수 있습니다.
BREVOCA_TRANSCRIBE_MODEL=gpt-4o-transcribe
BREVOCA_TRANSCRIBE_DIARIZATION=false
BREVOCA_TRANSCRIBE_CHUNK_DURATION_SEC=900
BREVOCA_TRANSCRIBE_CONCURRENCY=4
BREVOCA_SUMMARY_MODEL=gpt-5-mini
BREVOCA_SUMMARY_CHUNK_CONCURRENCY=4
SUPABASE_MEETING_AUDIO_BUCKET=meeting-audiopnpm install
pnpm dev웹 앱은 기본적으로 http://localhost:3000에서 실행됩니다.
pnpm build
pnpm startPOST /api/meetings- 입력: 오디오 파일, 제목, 언어, source type, prompt template id
- 출력:
meetingId,jobId, 초기 상태
GET /api/meetings- 최근 회의 목록 반환
GET /api/meetings/:id- 전사문, 요약 markdown, 구조화된 액션아이템 반환
GET /api/jobs/:id- 현재 단계, 상태, 진행률, 로그 반환
POST /api/jobs/:id/retry- 실패한 작업 재처리
pnpm dlx supabase@latest login으로 CLI 로그인합니다.pnpm dlx supabase@latest link --project-ref <project-ref>로 프로젝트를 연결합니다.supabase/migrations/20260317000100_init.sql와supabase/migrations/20260317000200_auth_workspaces.sql기준으로pnpm dlx supabase@latest db push를 실행합니다.- 브라우저는
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY, 서버는SUPABASE_SERVICE_ROLE_KEY로 각각 접근합니다. SUPABASE_SERVICE_ROLE_KEY에는 publishable key가 아니라 secret/service-role key를 넣어야 합니다.- 오디오 파일은 private Storage bucket에 저장되고, DB에는
storage_key만 저장됩니다.
- Electron은 같은 API 계약을 사용하는 별도 클라이언트로 추가합니다.
- 전사/요약 로직은 계속 서버에 둡니다.
- 데스크톱 전용 기능은 시스템 오디오 캡처, 백그라운드 녹음, 로컬 파일 연동 같은 영역에 집중합니다.