Vue 3 + Firebase 기반 실시간 채팅 앱 개발
2. Vue 3 + Firebase 기반 실시간 채팅 앱 v-chat 개발 - 요구 사항 분석
그랜파 개발자
2025. 5. 5. 12:35
Vue 3 + Firebase 기반 채팅 앱의 요구 사항 분석서
📌 1. 개요
목표:
사용자 간 1:1 채팅, 음성 메시지 전송, 읽음 확인 등의 기능을 포함한 실시간 채팅 웹 애플리케이션을 개발한다.
주요 기술 스택:
- 프론트엔드: Vue 3, Vuetify, Pinia, Vite
- 백엔드: Firebase (Authentication, Firestore, Storage)
- 배포: Firebase Hosting
📌 2. 사용자 요구 사항
🔐 인증 및 사용자 관리
- 사용자는 이메일/비밀번호 또는 소셜 로그인을 통해 인증할 수 있어야 한다.
- 사용자의 프로필 정보는 Firestore에 저장된다.
- 로그인한 사용자의 상태(온라인/오프라인)와 마지막 접속 시간(last seen)을 확인할 수 있어야 한다.
💬 채팅 기능
- 사용자는 다른 사용자와 1:1 채팅을 할 수 있어야 한다.
- 채팅방에는 실시간으로 메시지를 주고받을 수 있어야 한다.
- 메시지는 텍스트 또는 음성 형태를 지원해야 한다.
- 메시지는 읽음 여부가 표시되어야 하며, 읽은 시간(readAt)을 확인할 수 있어야 한다.
- 채팅방 목록에는 상대방 이름, 마지막 메시지, 전송 시간, 안 읽은 메시지 수가 표시되어야 한다.
🔊 음성 메시지
- 사용자는 브라우저에서 직접 음성 녹음을 시작하고 전송할 수 있어야 한다.
- 녹음은 최대 60초로 제한된다.
- 녹음 중임을 시각적으로 표현(예: 텍스트 깜빡임, 마이크 아이콘 애니메이션)
- 녹음이 완료되면 Firebase Storage에 업로드되고, 메시지로 전송된다.
📱 UI/UX
- Vuetify를 활용한 반응형 디자인
- Drawer 메뉴에서 채팅방으로 이동하면 자동으로 drawer가 닫힌다.
- 읽지 않은 메시지에 대해 빨간 뱃지를 표시한다.
- 채팅방 리스트는 최근 메시지 순으로 정렬된다.
📌 3. 시스템 요구 사항
🔧 기능 요구 사항
분류기능설명
인증 | 회원가입/로그인 | Firebase Authentication |
사용자 관리 | 프로필 저장 및 상태 표시 | Firestore 연동 |
채팅 | 1:1 메시지 송수신 | Firestore를 이용한 실시간 메시지 |
채팅 UI | 채팅방 목록 | 상대 이름, 마지막 메시지, 읽지 않은 개수 |
읽음 처리 | readBy 및 readAt 필드 처리 | 메시지 읽음 여부 및 시간 |
음성 메시지 | MediaRecorder + Storage | 60초 제한, 실패 시 알림 |
상태 관리 | Pinia | 사용자 상태 및 채팅방 정보 관리 |
성능 | Lazy load 및 chunk 분리 | Vite + Rollup 최적화 |
📌 4. 비기능 요구 사항
- 실시간성: Firebase snapshot을 활용한 데이터 실시간 반영
- 보안성: Firestore 보안 규칙, 인증 기반 접근 제한
- 성능: 대용량 chunk 경고 해결 (코드 스플리팅)
- 반응형: 모바일 및 데스크탑 뷰 대응
- 확장성: WebRTC 기반 1:1 통화 기능 확장 고려
📌 5. 제약 조건
- MediaRecorder는 iOS 일부 브라우저에서 제한적으로 동작 (대체 처리 필요)
- Firebase 무료 요금제에서 트래픽/쓰기/저장소 제한 고려
- WebRTC 사용 시 STUN/TURN 서버 구성 필요 (영상통화 도입 시)