d3ro-voice/docs/v2/00-v2-master-plan.md
Yun Chan a18ecdeb3c docs: V2 멀티플랫폼 마스터 플랜 + 로드맵
Mac+Web+iOS+Android 동시 진출 전략.
하이브리드 AI(로컬+클라우드), Supabase, Monorepo, 프리미엄 구독.
Phase V2-1~V2-8 세부 로드맵.
2026-04-08 12:30:14 +09:00

7.5 KiB

D3RO-VOICE V2 — 멀티플랫폼 마스터 플랜

Windows Electron → Mac + Web + iOS + Android 확장 완전 로컬 → 하이브리드 (로컬 + 클라우드) 전환


1. 전략 결정 요약

항목 결정
타겟 플랫폼 전부 동시 — Mac + Web + iOS + Android
타겟 사용자 개인 → 팀 확장 (Notion/Slack 성장 모델)
AI 인프라 하이브리드 — 데스크톱=로컬(Ollama+Whisper), 모바일/웹=클라우드
클라우드 STT Google Cloud Speech-to-Text
클라우드 LLM Anthropic Claude API
데이터 동기화 클라우드 — Supabase (PostgreSQL + Realtime)
인증 Supabase Auth (OAuth: Google/GitHub/Apple + Email)
파일 저장소 AWS S3 / Cloudflare R2
모바일 React Native (Expo)
Next.js
수익 모델 프리미엄 구독 — Free / Pro / Team
디자인 시스템 D3RO 인스트루먼트 미학 유지
코드 재사용 V1 비즈니스 로직 최대 재사용 (packages/core)
CI/CD 내부 GitLab CI/CD
타임라인 AI 바이브코딩 기반 — 빠른 개발

2. Monorepo 구조

d3ro-voice-v2/
├── packages/
│   ├── core/           ← 공유 비즈니스 로직 (타입, 유틸, 서비스 인터페이스)
│   ├── ui/             ← 공유 DS 컴포넌트 (MetalCard, PhosphorText 등)
│   ├── api-client/     ← Supabase + AI API 래퍼
│   └── i18n/           ← 공유 i18n (12개 locale)
├── apps/
│   ├── desktop/        ← Electron (기존 V1 진화)
│   ├── web/            ← Next.js
│   └── mobile/         ← React Native (Expo)
├── server/
│   ├── supabase/       ← Supabase 마이그레이션/함수
│   └── edge-functions/ ← STT/LLM 프록시, 웹훅
├── infra/
│   ├── .gitlab-ci.yml  ← GitLab CI/CD
│   └── docker/         ← 개발용 Docker (Supabase local)
├── turbo.json          ← Turborepo 설정
├── pnpm-workspace.yaml
└── package.json

3. 프리미엄 구독 티어

티어 가격 전사 LLM 동기화
Free $0 월 5시간 월 50회 1기기 -
Pro $10/월 무제한 무제한 5기기 -
Team $20/인/월 무제한 무제한 무제한 협업+관리자

4. 핵심 아키텍처

4.1 하이브리드 AI 파이프라인

[데스크톱]
  마이크 → SoX → faster-whisper (로컬) → Ollama (로컬) → 로컬 DB
                                                          ↓ 동기화
                                                    Supabase DB

[모바일/웹]
  마이크 → WebRTC → Google Cloud STT (클라우드) → Claude API (클라우드)
                                                          ↓
                                                    Supabase DB

4.2 데이터 동기화

Supabase PostgreSQL (SSOT)
  ├── auth.users
  ├── public.meetings (회의 세션)
  ├── public.meeting_memos (메모)
  ├── public.meeting_documents (생성 문서)
  ├── public.transcripts (전사 세그먼트)
  ├── public.teams / team_members
  └── public.subscriptions

Row Level Security (RLS)
  - 개인: user_id = auth.uid()
  - 팀: team_id IN (user's teams)

Realtime 구독
  - 회의 진행 중 실시간 전사 동기화
  - 팀원 간 문서 편집 동기화

4.3 파일 저장소

Cloudflare R2 / AWS S3
  ├── audio/{user_id}/{session_id}.wav  (녹음 원본)
  ├── exports/{user_id}/{doc_id}.pdf    (내보내기)
  └── avatars/{user_id}.jpg

5. Phase 로드맵 (AI 바이브코딩 기준)

Phase V2-1: Monorepo + Core 추출 (2~3일)

  • Turborepo + pnpm 세팅
  • V1에서 packages/core 추출 (타입, 유틸, 서비스 인터페이스)
  • packages/ui 추출 (DS 컴포넌트)
  • packages/i18n 추출
  • apps/desktop이 packages/* import하여 기존대로 동작 확인

Phase V2-2: Supabase 인프라 (2~3일)

  • Supabase 프로젝트 생성
  • DB 스키마 마이그레이션 (SQLite → PostgreSQL)
  • Auth 설정 (Google/GitHub/Apple OAuth)
  • RLS 정책
  • Edge Functions: STT 프록시, LLM 프록시

Phase V2-3: Web App MVP (3~5일)

  • Next.js 앱 생성
  • Supabase 연동 (Auth + DB + Realtime)
  • 녹음 (Web Audio API) → Google Cloud STT → Claude → DB
  • 회의록 생성/편집 UI (packages/ui 재사용)
  • 결제 연동 (Stripe)

Phase V2-4: 데스크톱 동기화 (2~3일)

  • apps/desktop에 Supabase 클라이언트 추가
  • 로컬 SQLite ↔ Supabase PostgreSQL 양방향 동기화
  • 오프라인 지원 (로컬 우선, 온라인 시 동기화)

Phase V2-5: Mac 빌드 (1~2일)

  • electron-builder macOS 타겟
  • SoX macOS 바이너리 번들
  • sidecar macOS PyInstaller 빌드
  • Code signing + Notarization

Phase V2-6: Mobile App MVP (3~5일)

  • React Native (Expo) 프로젝트 생성
  • Supabase Auth 연동
  • 녹음 (expo-av) → Google Cloud STT → Claude → DB
  • 회의록 뷰어/편집
  • 푸시 알림 (회의록 완료)

Phase V2-7: 팀 기능 (3~5일)

  • 팀 생성/초대/관리
  • 회의록 팀 공유 + RLS
  • 코멘트 시스템
  • 팀 대시보드 (통계)

Phase V2-8: 결제 + 출시 (2~3일)

  • Stripe 결제 연동 (Free/Pro/Team)
  • 사용량 추적 (전사 시간, LLM 호출)
  • 앱스토어 출시 (iOS/Android)
  • 랜딩 페이지 업데이트

6. 기술 상세

packages/core 추출 대상 (V1에서)

types.ts          → packages/core/src/types/
errors.ts         → packages/core/src/errors.ts
ipc-channels.ts   → packages/core/src/channels.ts (→ API 엔드포인트 매핑)
meeting-markdown.ts → packages/core/src/utils/markdown.ts
markdown-to-docx.ts → packages/core/src/utils/docx.ts
i18n/*.json       → packages/i18n/locales/

packages/ui 추출 대상

components/ds/    → packages/ui/src/
  MetalCard, PhosphorText, Led, PhysicalButton, ScreenPanel,
  CrtDisplay, InstrumentPanel, MetalDial, ButtonGroup
theme.ts          → packages/ui/src/theme.ts

서비스 추상화 패턴

// packages/core/src/services/ai-service.ts
interface AIService {
  transcribe(audio: Blob, options: STTOptions): Promise<TranscriptResult>
  generate(prompt: string, options: LLMOptions): Promise<GenerateResult>
  chatStream(messages: Message[], options: ChatOptions): AsyncGenerator<string>
}

// apps/desktop → LocalAIService (Ollama + faster-whisper)
// apps/web/mobile → CloudAIService (Google STT + Claude API)

7. GitLab CI/CD

stages:
  - lint
  - test
  - build
  - deploy

# Monorepo 캐싱
variables:
  TURBO_TEAM: d3ro
  TURBO_REMOTE_CACHE: true

lint:
  script: pnpm turbo lint

test:
  script: pnpm turbo test

build:desktop:
  script: pnpm turbo build --filter=@d3ro/desktop
  artifacts: [dist/]

build:web:
  script: pnpm turbo build --filter=@d3ro/web
  artifacts: [.next/]

deploy:web:
  script: vercel deploy --prod
  only: [main]

8. 리스크 & 완화

리스크 영향 완화
Supabase 무료 티어 한계 DB 500MB, Auth 50K MAU Pro 업그레이드 ($25/월)
Google STT 비용 $0.006/15초 사용량 제한 + 프리미엄 모델
Claude API 비용 $3/1M input tokens 요약용 Haiku 사용, 캐싱
React Native 성능 긴 전사 목록 렌더링 FlatList + 가상화
오프라인→온라인 동기화 충돌 데이터 일관성 CRDT 또는 last-write-wins