Prototype Technical Specification

AI 다이어리 앱
시제품 개발 명세서

버튼 하나로 음성을 기록하고, 나중에 AI가 내용을 요약·정리해 캘린더 기반 다이어리로 보여주는 모바일 우선형 AI 다이어리 웹앱/PWA 시제품 개발 문서입니다.

1. 서비스 개요

AI 다이어리는 사용자가 하루 중 떠오르는 생각, 감정, 사건을 짧게 녹음하면, 나중에 앱에서 해당 음성 기록을 날짜별로 확인하고 AI 요약본으로 정리해주는 다이어리 앱이다.

핵심 행동

앱 실행 → 녹음 버튼 누름 → 말함 → 다시 누르면 저장

핵심 가치

글로 쓰기 귀찮은 순간에도 생각과 감정을 빠르게 남길 수 있음

핵심 결과

날짜별 음성 기록, 텍스트 변환, 요약, 감정 정리, 캘린더 확인

2. MVP 개발 목표

첫 번째 목표는 완성형 AI 앱이 아니라, 사용자가 실제로 “이런 방식이면 매일 쓸 수 있겠다”라고 느낄 수 있는 시제품을 만드는 것이다.

구분 내용 우선순위
모바일 우선 휴대폰 화면에서 바로 녹음하고 확인할 수 있는 좁은 레이아웃 필수
로그인 없이 체험 Supabase 연동 전에도 demoMode로 홈, 캘린더, 상세 화면까지 이동 가능 필수
음성 녹음 MediaRecorder 기반 녹음, 재생, 임시 저장 흐름 구현 필수
캘린더 날짜별 기록 존재 여부와 요약 확인 필수
AI 요약 초기에는 더미/임시 요약, 이후 STT와 LLM API 연결 후순위 연결

3. 사용자 흐름

3-1. 최초 체험 흐름

로그인 화면 로그인 없이 체험하기 demoMode 저장 홈 녹음 화면 녹음 저장 캘린더 확인 상세 기록 확인

3-2. 실제 사용 흐름

  1. 사용자가 휴대폰 바탕화면에서 앱 아이콘을 누른다.
  2. 앱이 켜지면 복잡한 메뉴 없이 바로 녹음 화면이 나온다.
  3. 녹음 버튼을 누르면 녹음이 시작된다.
  4. 다시 누르면 녹음이 종료되고 하나의 음성 기록으로 저장된다.
  5. 하루 중 여러 번 녹음하면 각각 별도의 기록으로 저장된다.
  6. 나중에 앱을 열면 캘린더 화면에서 날짜별 요약을 확인한다.
  7. 상세 화면에서 녹음 파일, 텍스트 변환본, AI 요약본을 확인한다.

4. 화면 구성 명세

1. 로그인 화면

  • 서비스 로고와 짧은 소개 문구 표시
  • 구글 로그인 버튼
  • 로그인 없이 체험하기 버튼
  • 체험 버튼 클릭 시 localStorage.demoMode = true 저장

2. 홈 녹음 화면

  • 큰 원형 녹음 버튼 중심 배치
  • 녹음 중 상태 표시
  • 녹음 시간 표시
  • 녹음 종료 후 저장 완료 메시지
  • 오늘 저장된 기록 개수 표시

3. 캘린더 화면

  • 월간 캘린더 표시
  • 기록이 있는 날짜에 점 또는 배지 표시
  • 날짜 선택 시 해당 날짜의 요약 목록 표시
  • 하단 네비게이션으로 홈/캘린더/설정 이동

4. 상세 기록 화면

  • 선택한 날짜의 녹음 기록 목록
  • 각 녹음의 재생 버튼
  • 텍스트 변환 영역
  • AI 요약 영역
  • 감정/키워드/중요 내용 표시

5. 설정 화면

  • demoMode 상태 표시
  • 데이터 초기화 버튼
  • 향후 로그인/동기화 안내
  • PWA 설치 안내 문구

6. 하단 네비게이션

  • 캘린더
  • 설정
  • 모바일 앱처럼 항상 하단 고정

5. 기능 명세

5-1. 녹음 기능

기능 설명 주의사항
녹음 시작 사용자가 녹음 버튼을 누르면 마이크 권한 요청 후 녹음 시작 브라우저 마이크 권한 필요
녹음 종료 다시 버튼을 누르면 녹음 중지 후 파일 저장 각 녹음은 독립 파일로 저장
녹음 재생 저장된 오디오 Blob을 URL로 변환해 재생 지지직 소리만 나는 문제 방지 위해 MIME 타입 확인 필요
임시 저장 초기 시제품에서는 IndexedDB 또는 localStorage 활용 오디오 파일은 localStorage보다 IndexedDB 권장

5-2. AI 처리 기능

MVP 초기에는 실제 AI 처리 대신 더미 데이터를 사용해 화면 흐름을 먼저 검증한다. 이후 단계에서 STT와 LLM API를 연결한다.

1단계: 화면 검증

녹음 후 임시 텍스트와 임시 요약 자동 생성

2단계: STT 연결

음성을 텍스트로 변환하는 Speech-to-Text API 연결

3단계: AI 요약 연결

텍스트를 일기 요약, 감정, 키워드로 정리

5-3. 캘린더 기능

6. 데이터 구조 초안

6-1. DiaryEntry

{
  id: "entry_20260601_001",
  userId: "demo_user",
  date: "2026-06-01",
  createdAt: "2026-06-01T21:15:00+09:00",
  audioUrl: "blob-or-storage-url",
  durationSec: 42,
  transcript: "오늘 있었던 일을 음성에서 변환한 텍스트",
  summary: "오늘의 핵심 요약",
  emotion: "calm",
  keywords: ["가족", "사업", "걱정"],
  isDemo: true
}

6-2. Local Demo Storage

{
  demoMode: true,
  entries: [
    {
      id: "demo_001",
      date: "2026-06-01",
      durationSec: 35,
      transcript: "임시 변환 텍스트",
      summary: "임시 요약 문장",
      emotion: "neutral",
      keywords: ["기록", "하루"]
    }
  ]
}

오디오 원본은 용량 문제 때문에 localStorage에 직접 저장하지 않는 것이 좋다. 시제품에서는 IndexedDB를 우선 검토하고, 정식 버전에서는 Supabase Storage 같은 외부 저장소를 사용한다.

7. 기술 구조

영역 권장 기술 설명
프론트엔드 React / Vite / TypeScript Lovable 기반 생성과 수정에 적합
스타일 Tailwind CSS 모바일 우선 UI 빠른 제작
녹음 MediaRecorder API 브라우저에서 마이크 입력 녹음
임시 저장 localStorage + IndexedDB demoMode와 오디오 파일 임시 저장
백엔드 Supabase 로그인, DB, Storage, 사용자 데이터 저장
AI 처리 STT API + LLM API 음성 텍스트 변환 후 요약 생성
앱 설치 PWA 휴대폰 바탕화면 설치형 웹앱

7-1. 오디오 재생 문제 체크

8. Lovable 작업 지시문

8-1. 다음 프롬프트

현재 AI Diary Companion 프로젝트의 로그인 화면에 “로그인 없이 체험하기” 버튼을 추가해줘.

요구사항:
1. 버튼 클릭 시 localStorage에 demoMode=true를 저장한다.
2. Supabase 로그인 없이도 홈 녹음 화면으로 이동해야 한다.
3. demoMode에서는 localStorage 또는 IndexedDB를 이용해 임시 기록을 저장한다.
4. 하단 네비게이션은 홈 / 캘린더 / 설정으로 구성한다.
5. 모바일 narrow layout을 유지한다.
6. 홈 화면에는 큰 원형 녹음 버튼, 녹음 시간, 오늘 기록 개수를 보여준다.
7. 캘린더 화면에는 날짜별 기록 여부를 표시한다.
8. 상세 화면에서는 녹음 재생, 임시 텍스트, 임시 AI 요약을 확인할 수 있게 한다.
9. 실제 AI 처리와 Supabase 저장은 아직 연결하지 말고, 화면 흐름과 저장 구조를 먼저 검증한다.
10. 녹음 파일은 재생 가능해야 하며, 지지직 소리만 나지 않도록 MediaRecorder MIME 타입과 Blob 저장 방식을 점검해줘.

8-2. 녹음 오류 수정 요청 프롬프트

현재 녹음 버튼은 작동하지만 저장된 오디오를 재생하면 정상 음성이 아니라 지지직 소리만 들린다.

다음을 점검해서 수정해줘:
1. MediaRecorder에서 브라우저가 지원하는 MIME 타입을 자동 선택하도록 해줘.
2. audio/webm;codecs=opus를 우선 사용하되, 지원하지 않으면 audio/webm 또는 기본값으로 fallback 해줘.
3. ondataavailable 이벤트에서 size가 0보다 큰 chunk만 저장해줘.
4. 녹음 종료 후 chunks를 Blob으로 합칠 때 같은 MIME 타입을 사용해줘.
5. 재생은 URL.createObjectURL(blob)으로 생성한 URL을 audio 태그에 연결해줘.
6. 저장된 녹음 파일을 다시 불러와도 재생 가능하도록 IndexedDB 저장 방식을 검토해줘.
7. 수정 후 홈 화면에서 녹음 → 저장 → 재생까지 한 번에 테스트 가능한 UI를 보여줘.

9. 개발 단계

단계 목표 산출물
1단계 화면 구조 완성 로그인, 홈, 캘린더, 상세, 설정 화면
2단계 로그인 없이 체험 흐름 구현 demoMode, localStorage, 화면 이동
3단계 녹음/재생 기능 안정화 MediaRecorder, Blob, IndexedDB
4단계 캘린더 기록 연결 날짜별 기록 표시, 상세 목록
5단계 AI 기능 연결 STT, 요약, 감정, 키워드 추출
6단계 정식 저장 구조 연결 Supabase Auth, DB, Storage

10. 시제품 검수 기준

필수 검수 항목

현재 가장 중요한 판단 기준

이 시제품은 기술적으로 완벽한 앱이 아니라, 사용자가 매일 음성으로 일기를 남기고 나중에 정리된 기록을 확인하는 경험이 자연스러운지 검증하는 것이 핵심이다.

최종 MVP 성공 기준

“앱을 켜자마자 바로 녹음하고, 나중에 캘린더에서 내 하루가 정리되어 보인다.” 이 경험이 막힘 없이 작동하면 1차 MVP는 성공으로 본다.