MoMatic은 회의 음성 녹음을 자동으로 텍스트로 변환하고, AI를 활용해 요약 및 액션 아이템을 추출하여 팀 협업 도구(현재 Notion)와 연동하는 통합 회의록 관리 시스템입니다.
- 🎙️ 음성 자동 전사: OpenAI Whisper API를 활용한 STT(Speech-to-Text)
- 🤖 AI 회의 요약: GPT를 통한 회의 내용 자동 요약 및 액션 아이템 추출
- 📒 Notion 정리(계획): 회의 결과와 일정 관리를 Notion 워크스페이스로 정리
- 📅 Google Calendar 연동: 액션 아이템 자동 일정 등록
- 🔐 OAuth2 인증: Google OAuth2 로그인 지원
- Framework: Spring Boot 3.5.3
- Language: Java 17
- Build Tool: Gradle 8.14.2
- Production: MySQL
- Development: H2 (In-memory)
- Migration: Flyway
- Spring Security
- OAuth2 Client (Google)
- SSL/TLS (HTTPS)
- OpenAI: Whisper (STT), GPT-3.5 (텍스트 처리)
- Google: Calendar API
- HTTP Client: OkHttp3
- JSON Processing: Jackson
momatic/
├── src/main/java/com/momatic/
│ ├── config/ # 설정 클래스 (Security, OAuth2)
│ ├── controller/ # REST API 컨트롤러
│ ├── domain/ # JPA 엔티티 (Meeting, User, Team, ActionItem 등)
│ ├── repository/ # 데이터 접근 계층
│ ├── service/ # 비즈니스 로직 (Audio, Whisper, LLM, 등)
│ └── util/ # 유틸리티 클래스
├── src/main/resources/
│ ├── application.properties # 메인 설정
│ ├── application-dev.properties # 개발 환경 설정
│ ├── application-prod.properties # 운영 환경 설정
│ └── db/migration/ # Flyway 마이그레이션 스크립트
└── build.gradle
- Java 17+
- MySQL (운영 환경)
- 각종 API 키 (OpenAI, Google)
.env 파일 또는 시스템 환경 변수에 다음 값들을 설정하세요:
# OpenAI
OPENAI_API_KEY=your-openai-api-key
# Google OAuth2
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret./gradlew bootRun --args='--spring.profiles.active=dev'./gradlew bootRun --args='--spring.profiles.active=prod'프로젝트는 HTTPS를 사용합니다. src/main/resources/keystore.p12 파일을 생성하거나 기존 인증서를 사용하세요:
keytool -genkeypair -alias tomcat -keyalg RSA -keysize 2048 \
-storetype PKCS12 -keystore keystore.p12 -validity 3650GET /login- OAuth2 로그인 페이지GET /loginSuccess- 로그인 성공 콜백
POST /api/audio/upload- 음성 파일 업로드 및 처리- Request:
multipart/form-datawith audio file - Response: JSON (요약 및 액션 아이템)
- Request:
GET /api/users/me- 현재 로그인 사용자 정보
GET /api/teams- 팀 목록 조회
id: 회의 IDtitle: 회의 제목started_at: 시작 시간ended_at: 종료 시간summary: AI 생성 요약team_id: 팀 ID (FK)owner_id: 회의 주최자 (FK)
id: 액션 아이템 IDtask: 작업 내용assignee: 담당자due_date: 마감일status: 상태 (TODO/IN_PROGRESS/DONE)meeting_id: 회의 ID (FK)
id: 전사 IDspeaker: 발언자content: 전사 내용start_sec: 시작 시간end_sec: 종료 시간meeting_id: 회의 ID (FK)
id: 사용자 IDemail: 이메일name: 이름team_id: 팀 ID (FK)roles: 권한 (CSV 형태)
id: 팀 IDname: 팀 이름
- 음성 업로드: 사용자가 회의 녹음 파일을 업로드
- 음성 전사: Whisper API를 통해 음성을 텍스트로 변환
- AI 처리: GPT가 전사 내용을 분석하여 요약 및 액션 아이템 추출
- 데이터 저장: Meeting, Transcript, ActionItem 데이터베이스 저장
- 통합 알림:
- Google Calendar에 액션 아이템 일정 추가
- 회의 결과/일정은 Notion으로 정리
- 음성 파일 업로드 및 저장 관리
- OpenAI Whisper API를 통한 음성-텍스트 변환
- GPT를 활용한 회의 요약 및 액션 아이템 추출
- Google Calendar API를 통한 일정 생성
- 회의 데이터 통합 관리 및 외부 서비스 연동 조율
- Google: 프로필, 이메일, 캘린더 권한
/api/**- 인증 없이 접근 가능 (개발 편의)- 기타 엔드포인트 - 인증 필요
- H2 인메모리 데이터베이스 사용
- H2 콘솔 활성화 (
/h2-console) - DDL 자동 생성 (
update)
- MySQL 데이터베이스 사용
- DDL 검증 모드 (
validate) - Flyway 마이그레이션 활성화
- API 키 보안: 모든 API 키는 환경 변수로 관리하고 절대 코드에 하드코딩하지 마세요
- SSL 인증서: 운영 환경에서는 반드시 유효한 SSL 인증서를 사용하세요
- 파일 업로드 경로:
file.upload-dir설정을 환경에 맞게 조정하세요 - CORS 설정: 프론트엔드 연동 시 CORS 설정이 필요할 수 있습니다
MoMatic - Making Meetings Matter 🚀