앱개발메모
Talkverse 언어앱의 개발·배포 현황입니다. 내부 기록이라 검색에는 올리지 않습니다.
기술 구성
- Flutter(3.41) 안드로이드 앱 — 언어별 독립 리포 17+개, zh(중국어유니버스)가 정본 골격, 다른 앱은 zh 화면을 포팅
- 콘텐츠 저장: Drift(SQLite) 시드 DB(zh·ja·th·id 계열, 대화 turn만 저장·시드 키 버전으로 갱신) / vi는 JSON 에셋 직접 로딩(상태관리·라우터 없음, setState + MaterialPageRoute)
- 학습 기록·설정: shared_preferences(온보딩·진도·티어·스트릭 로컬 저장), MemorizedStore
- 음성: 사전합성 mp3 번들(북부 베트남어=무료 edge-tts, 남부 베트남어=유료 상용 TTS, 몽골어=상용 TTS) → 기기 flutter_tts 폴백 / 말하기 연습 speech_to_text / 성조 판정 pitch_detector(YIN)
- 배포: GitHub Actions(release.yml) → 서명 APK + latest.json → 'latest' 롤링 릴리스, 앱 내 update_service/update_screen + MainActivity 설치 메서드 채널 + FileProvider
- 서명: 공용 debug keystore를 리포 시크릿(base64)으로 복원해 서명(zh·th만 자체 업로드 키). 새 키스토어 생성 금지 규칙
- 시크릿 관리: Doppler(talkverse/dev)에 TTS·Gemini·Supabase 키 보관, 빌드 시 --dart-define 주입
- 데이터 도구(Python): pythainlp(th 분절), jieba·pypinyin·OpenCC(zh), pykakasi(ja), kiwi/mecab(ko), pymorphy3(ru 레마화), hangul-romanize, Pillow(아이콘 생성), pandas 정제 라이브러리
- 검색·추천: bge-m3 임베딩(1024-d) + faiss/브루트포스 코사인, FastAPI /ladder/match 서버(talkverse-m), 출시 시 Postgres+pgvector 계획
- 매칭앱 talkverse-m: Flutter + Gemini API(챗·번역 프로토타입), 서비스 스왑 패턴(Mock/Http/Local, --dart-define BACKEND)
- 백엔드/호스팅: Supabase(Storage tts 버킷, 프로젝트 2개 분리), Cloudflare Pages(talkverse.uk), GitHub 조직 talkverselab
- 영어 앱(Grab): HTML SPA + Android WebView(직접 스캐폴드한 Gradle 앱), YouTube IFrame Player, faster_whisper+librosa 운율 분석, spaCy 다국어
- 실기기 테스트: Galaxy S25 1대(USB/무선 ADB, adb는 PATH 미등록, --user 0 지정 설치)
- 브랜딩: SVG 아이콘 패밀리(말풍선+꼬리 모티프, 크림 배경 B안, 언어별 파스텔+네이티브 글리프), flutter_launcher_icons
제작 파이프라인
콘텐츠 초안 → 앱 자산
_update_kit/build_content.py가 언어별 초안(content/<iso>.py)을 L1 회화 5편×8턴(한글 독음 포함)·문법 lesson1·여행 단어 JSON으로 변환(de·fr·it·pt·tr·hu·hi·fa 8개)
공통 기능 이식
port6_apply.py로 zh의 범용 기능 6종(문법 강의·테스트, 문장 카드, 말하기 연습, 청크 검색, 단어 카드)을 es형 앱에 복사, DB에 독음(rd) 칸 마이그레이션, speech_to_text·RECORD_AUDIO 추가
출처명 스크럽
scrub.py가 git 추적 파일(.dart/.md/.py/.json 등)에서 자막·데이터셋·스트리밍 브랜드명을 '공개 말뭉치' 같은 일반어로 치환(사전 데이터 파일은 제외)
자체 업데이트 킷 적용
apply.py가 update_service.dart/update_screen.dart, MainActivity 설치 채널, 매니페스트 권한+FileProvider, file_paths.xml, pubspec(package_info_plus·path_provider), release.yml, 설정 화면 진입 타일을 각 앱에 삽입
로컬 빌드·설치
flutter analyze → flutter build apk --release(순차 1개씩, 병렬 Gradle 충돌) → adb -s <기기> install --user 0 -r. vi는 tool/build_run.ps1이 버전+1·CHANGELOG·git 자동 커밋까지 수행, arm64 단독 빌드로 APK 절반
푸시 = 배포
master 푸시 → GitHub Actions가 --build-number=run_number로 서명 APK 빌드, latest.json{version,build,sha,date,notes,size} 생성, 'latest' 태그 릴리스 갱신. **.md만 바뀐 푸시는 빌드 안 함
앱 내 업데이트
앱이 자기 빌드 번호와 latest.json의 build를 비교 → 프로필·설정 → '앱 업데이트'에서 내려받아 설치(케이블·PC 불필요, 첫 설치 때 '출처를 알 수 없는 앱' 허용 1회)
허브 갱신
_hub/README.md(talkverse-releases)에 언어별 APK 받기 링크·준비 중 목록 유지, 세션 메모리에 서명·배포 규칙 배포(memo.py)
배포
각 앱 리포 master 푸시 → GitHub Actions가 서명 APK와 latest.json을 'latest' 릴리스에 올림 → 앱이 자기 빌드 번호(pubspec 또는 CI run_number)와 latest.json의 build를 비교해 새 빌드 알림 → 앱 안(프로필·설정 → 앱 업데이트)에서 내려받아 설치. 폰의 기존 앱과 서명 키가 같아야만 덮어쓰기 되므로 키스토어 변경 금지. 로컬 빌드 APK는 빌드 번호가 작아 항상 '새 빌드 있음'으로 보이는 게 정상
게시 17개: th, zh, ja, ko, de, es, fr, it, pt, ru, tr, hi, hu, id, fa, mn, ar
대기: vi(베트남어유니버스): 다른 세션의 아이콘·브랜딩 작업 미커밋 파일 694개(미추적 639·수정 55)와 충돌 회피를 위해 업데이트 기능 적용만 하고 커밋·푸시 보류. 2026-09-11 대본 원문 73편 삭제 + git filter-repo로 corpus/ 이력 제거·강제 푸시 완료. 리포는 아직 PRIVATE(공개여야 앱이 APK를 받을 수 있음) / en(Grab, 영어 듣기 앱): 별도 브랜드·별도 리포(talkverse-app), 17개 유니버스 계열 배포 대상 아님. 유튜브 링크 기반 피벗(2026-08-16) 후 실기기 WebView 검증 미완 / talkverse-m(매칭 본앱): 프로토타입(인메모리 페이월·목업 매칭), private 리포, 배포 없음
빌드 상태
| 언어 | 빌드 | 비고 |
|---|---|---|
| th | 성공 | 로컬 릴리스 빌드 54.3MB 성공. 자체 업로드 키(KEYSTORE_* 시크릿). 허브에는 thai-universe-latest.apk 이름으로 배포. 사용자가 직접 관리(다른 세션 손대지 말 것) |
| zh | 성공 | 정본 앱. CI로 'latest' 배포, 폰 설치본·릴리스 서명 SHA-1 일치 확인(09-11). 자체 업로드 키(ANDROID_KEYSTORE_*)로 다른 앱들과 키가 다름 |
| ja | 성공 | 로컬 빌드 55.2MB 성공. zh 구조로 2026-08-16 전면 재작성, 콘텐츠는 L1 ep1 40턴만 |
| ko | 성공 | K-유니버스(영어권 대상 한국어 앱). 허브 배포됨. 폴더 손대지 말 것(09-02 동결) |
| de | 성공 | 로컬 빌드 53.1MB 성공. es 템플릿 기반 기초 스캐폴드, 콘텐츠는 킷 초안(L1 5편·문법1·여행단어) |
| es | 성공 | 로컬 빌드 53.2MB 성공. fr/it/pt/de/tr/hu/hi/fa 8개의 템플릿. 8월 시점엔 CI가 debug 키 폴백(서명 시크릿 없음)이었음 |
| fr | 성공 | 로컬 빌드 53.2MB 성공. 여행 회화 콘텐츠 일부 있음, 회화(L1)·동사 데이터 비어 있음 |
| it | 성공 | 로컬 빌드 53.2MB 성공. fr과 동일 상태 |
| pt | 성공 | 로컬 빌드 53.1MB 성공. 기초 스캐폴드 |
| ru | 성공 | 허브 배포됨(app/ 하위 구조). Russian Talk: L1 문법 10단계·cliff 사전·L2 챗 D01~D13, 떠먹여주는 문장 600. 빌드 로그에는 미포함 |
| tr | 성공 | 1차 배치 로그 53.1MB 성공, 2차 로그에서는 Gradle assembleRelease 실패 — 간헐(순차 빌드 권장). 허브에는 배포됨 |
| hi | 실패 | 로컬 배치 빌드 2회 모두 Gradle assembleRelease 실패. 허브에는 CI 산출 APK 링크로 배포됨(원인 미기록) |
| hu | 성공 | 1차 로그 53.1MB 성공, 2차 로그 Gradle 실패(간헐). 허브 배포됨 |
| id | 성공 | 로컬 빌드 53.7MB 성공. 2026-08-16 zh 참고 신규 생성, 콘텐츠는 ep1 10턴·어근 40·접사 14 샘플, 빈도 CSV 50행 placeholder |
| fa | 실패 | 로컬 배치 빌드 2회 모두 Gradle 실패. 허브에는 배포됨. 기초 스캐폴드 |
| mn | 성공 | 허브 배포됨(app/ 하위, 패키지 kr.mlab.mn). RU 앱 클론, 여행 데이팅 250문장, 578 mp3 번들(APK ~56MB). 몽골어 문장 전부 AI 1차 생성·원어민 미검수 |
| ar | 성공 | 2026-09-11 허브 추가. 이전엔 CI 산출물 경로 문제로 실패(구 monorepo 플레이버 구조, apk/ar/release/). 2026-08-20 zh 구조로 UX 개편, 회화 데이터 L2/L3/L4/L6 각 20개뿐 |
| vi | 성공 | 로컬 빌드 86.7MB 성공(유니버설; arm64 단독이면 ~32~38MB). 배포 보류 — 브랜딩 작업 미커밋·리포 private. 남부 TTS·R1 다이얼로그 10·플러팅 10·R2 20+·카페 200단문 완료 |
진행 기록
| 날짜 | 내용 |
|---|---|
| 2026-05-16 | 2-앱 구조(Discover 무료 + Talkverse 유료 IAP per lang) 가격 메모 갱신 |
| 2026-05-23 | 비즈니스 모델·BEP 1차 확정(2-tier Premium $10/$20), 데이터 정제 책 총괄 작성(출시 12월말 명시) |
| 2026-05-30 | vi 앱 zh 기반 백지 재구축 시작, vi 회화 문장 R1~R4 라벨링·큐레이션(5,926문장 → 2,200 선별) |
| 2026-05-31 | talkverse-m Flutter 실앱 착수(온보딩 포함 풀 플로우), 프로젝트 루트 OneDrive 밖으로 이전(동기충돌 사고), 정렬쌍 150,461 정합 확정, 표현사다리 천장 B2 확정 |
| 2026-06-01 | 콘텐츠 마스터 DB 스키마 v3 LOCKED(데이터방↔앱방 4라운드), canonical 426K→v1 15,351 동결 |
| 2026-06-04 | OPIc 앱 파일럿: 온보딩 축소·Gemini 챗 실API 연결, 시험대비 3티어 확정 |
| 2026-06-06 | 브랜드 아키텍처(우주소통연구소/Universal Talking Lab, [Language] Talkverse) + SVG 아이콘 시스템 B안 확정, ar 슬림 앱 분리, 영어 앱 별도 브랜드 결정 |
| 2026-06-07 | P2 다국어 rung 생성 15,351행 100% 완료, ru·vi 앱 빌드/데이터정제 작업기록 |
| 2026-06-08 | bge-m3 임베딩·산출물 3종 완료(τ=0.866, near-dup 14,298쌍), IELTS·TOEIC·OPIc 시험대비 DB 병렬 완료 |
| 2026-06-10 | talkverse-m에 시험대비 DB + 사다리 실데이터(1,190 meanings) 연결, /ladder/match FastAPI 서버 |
| 2026-06-20 | vi 앱 코스믹/RPG UI 전면 폐기 → daydream 종이톤 셸 이식, 앱명 베트남어유니버스, R1 상황 다이얼로그 10개로 재설계 |
| 2026-06-27 | mn 앱 TTS 578 mp3 번들 복귀(kornet DNS 문제), 상용 TTS 키 Doppler 이관, speak() 버그 수정 |
| 2026-07-05 | ru 앱 L2 말풍선 챗 UI·성별 토글·D01~D13, 떠먹여주는 문장 600 코스 |
| 2026-07-07 | zh 빨간 테마 chinese_universe를 zh 정본으로 채택, OneDrive git 손상 복구 후 talkverse/zh로 이동 |
| 2026-07-12 | talkverse-m Flutter 앱 GitHub(talkverselab/talkverse-m) 최초 푸시 |
| 2026-07-13 | talkverse-m 성장루프+수익화 파일럿(4-Tier 페이월·전환트리거 3종·주간리포트) 및 shared_preferences 영속화 |
| 2026-08-16 | ja 앱 zh 구조로 전면 재작성, id 앱 신규 생성, 영어 앱 Grab(유튜브 링크 기반)으로 피벗 |
| 2026-08-20 | es 앱 zh 구조 계승 생성 + GitHub Actions APK 릴리스, ar 앱 zh 구조 UX 개편 |
| 2026-09-02 | en·ko 폴더 동결(손대지 말 것), 09-05 th 폴더 동결 |
| 2026-09-08 | zh 말하기 연습 v1/v2·성조연습(YIN)·HSK 1~5급 4,240단어+한자 1,500·회화 129편×8턴(시드 v7). ja 학습 정렬을 JLPT가 아닌 빈도 절벽구간 기준으로 확정 |
| 2026-09-10 | 리포 이름 talkverselab/talkverse-<코드>로 통일·공개 전환, 전 앱에 GitHub 릴리스 자체 업데이트 적용, 서명 사고(CI debug 키 재생성으로 17개 앱 설치 실패) 수습, 다운로드 허브 talkverse-releases 생성, th 세션 메모리 유실 후 HANDOFF에서 복원 |
| 2026-09-11 | 허브에 아랍어 추가(17개), 폰 듀얼 프로필 중복 설치 정리(--user 0 규칙), vi 대본 원문 삭제·git 이력 재작성, 로컬 일괄 빌드 2회(hi·fa 실패) |
남은 일
| 할 일 | 이유 |
|---|---|
| vi 배포: 브랜딩 작업 커밋 → 업데이트 킷 파일 커밋·푸시 → 리포 공개 전환 → 허브 등록 | 현재 유일한 미배포 유니버스 앱. corpus/ 이력은 09-11에 제거됐으나 미커밋 694파일과 private 상태가 남음 |
| hi·fa 로컬 Gradle assembleRelease 실패 원인 조사, tr·hu 간헐 실패 재현 | 로컬 배치 빌드 로그 2회 연속 실패. CI는 통과하지만 로컬 검증 불가 |
| th 리포 커밋 9248fe6의 원자료 전사 pages/*.md를 git filter-repo로 제거 | 공개 리포에 저작권 원문 이력이 남아 있는 잔여 위험 |
| pt·de·tr·hu·hi·fa 실콘텐츠 투입, fr·it 회화(L1)·동사 데이터, id 단어 콘텐츠 | 8개 앱이 킷 초안·placeholder 수준(회화 5편·단어 샘플). 정제된 여행회화 MD가 4개 언어분만 존재 |
| ru: L2 다이얼로그 D14~D60(base 37+challenge 10) 제작, 명사 격 정확도 전수 검토, 러시아어 음성팩 미설치 안내 배너 | 목표 60다이얼로그/480문장 중 13개만 완료 |
| vi: R2 챗 21~50세트, 호칭별 변형 TTS 합성, 성조연습 화면(2음절 성조쌍 365개 정제 후), 북부 방언 적응, R2 독음 400줄, 남부 원어민 감수, 유료 TTS 토큰 재발급 | 남부만 완성 방침. 다이얼로그·독음이 AI 생성이라 감수 전제 |
| mn: AI 1차 생성 몽골어 250문장·문법 노트 원어민 검수(모음조화·재귀접미사) | 출시 전 필수로 메모됨 |
| zh: 말하기 판정(threshold 0.7)·성조 판정 파라미터 실기기 피드백 반영, 미검수 HSK 뜻·아이콘 4,037개·이어쓴 회화 137턴 검수 | 합성 테스트만 통과, 에이전트 생성 콘텐츠 |
| ar: L1 회화 콘텐츠 보강(현재 L2/L3/L4/L6 각 20개), Amiri 폰트 에셋 번들 | 학습 탭 회화 행이 비어 숨겨짐, 첫 실행 시 폰트 네트워크 다운로드 필요 |
| talkverse-m: near-dup 14,298쌍 병합 결정, /ladder/match에 vectors+τ 투입, OPIc 원천(questions 474)·OPI 제3외국어·IELTS 연결, 챗 LLM provider 확정, 서버 영속화·결제 연동 | 페이월·점수·매칭이 전부 인메모리 프로토타입 |
| Grab(en): 실기기 WebView에서 유튜브 임베드 재생 확인, 자막 없는 영상 UX, Supabase에서 prepare 자동화 | 2026-08-16 피벗 후 미커밋·미검증 |
| 17개 앱 런처 아이콘 모양 전부 다르게(신규 8개는 icon.png + flutter_launcher_icons), SVG 텍스트 아웃라인 처리 | 09-03 규칙. SVG가 시스템 폰트 의존 |
| 스토어 출시 준비: 법인 명의 Apple Developer/Google Play 가입, PG·통신판매업, Privacy Policy/TOS | 마일스톤 메모(9월말 출시)의 Phase 0/0.5 항목이 체크되지 않은 채 남아 있음 |
| 루트 talkverse-m .git 복구(gitfile이 사라진 D: 드라이브를 가리킴), 경로버그 스크립트(build_pairs_dataset/consolidate/build_updated_md) 수정 | 루트에서 git 명령 전부 실패, 죽은 OneDrive 경로 하드코딩으로 사고 재발 위험 |
| ja: 한글독음 유지 vs 제거 여부 결정, 콘텐츠 ep2-5·L2·L3 작성 | zh는 성조 병음으로 전환했으나 ja는 독음 유지 결정(09-08), 콘텐츠는 L1 ep1 40턴만 |
확인 필요
| 항목 | 내용 |
|---|---|
| 서명 키 불일치로 앱 내 업데이트 전면 실패 | 2026-09-10 CI가 매 빌드마다 debug 키를 새로 만들어 17개 앱 설치가 INSTALL_FAILED_UPDATE_INCOMPATIBLE. 재발 시 학습 기록 전부 소실. 모든 리포 CLAUDE.md에 '새 키스토어 금지·Restore signing key 단계 삭제 금지' 명시 |
| 공개 리포에 저작권 원문·출처명 노출 | vi corpus/ 대본 180개 추적 → 09-11 filter-repo로 제거. th 9248fe6 원자료 전사 잔존. 규칙: 자막·말뭉치 제공처명·책명·작품명을 코드/에셋/문서/파일명 어디에도 남기지 않음, 단어·빈도 통계만 쓰고 문장은 자체 제작 |
| 비밀키가 평문으로 있음 (로컬 파일 15개 — debug keystore alias·비밀번호·SHA-1) | 공개 리포 루트 파일. 값은 안드로이드 기본 debug 키 관례이지만 실제 서명 키와 동일하므로 노출 자체가 위험 |
| 비밀키가 평문으로 있음 (로컬 파일 — keystore 비밀번호·SHA-1) | 세션 메모리에 배포되는 스크립트 본문에 포함 |
| 비밀키가 평문으로 있음 (로컬 파일 TTS 계정 노트 파일), 드라이브 메모 — 유료 TTS APP_ID) | 토큰(JWT)은 Doppler로 옮겼으나 APP_ID는 메모에 남음. 유료 TTS 토큰이 채팅에 노출돼 재발급 필요로 메모됨 |
| 비밀키가 평문으로 있음 (로컬 파일 — 상용 TTS 키·Supabase 키) | Doppler로 복사됐지만 원본 .env도 유지 중 |
| OneDrive 동기화가 git 저장소를 손상 | .git/objects 부분 동기화·파일 롤백·build 폴더 잠금으로 커밋 유실 반복 → vi·zh·talkverse-m 모두 OneDrive 밖으로 이전. 옛 경로 하드코딩 스크립트 잔존 |
| 로컬 일괄 빌드 불안정 | hi·fa 2회 연속 Gradle 실패, tr·hu 1회 실패. 병렬 Gradle 충돌로 순차 1개씩 빌드 규칙 |
| adb install이 폰 듀얼 메신저 프로필(user 95)·보안 폴더(user 150)에도 설치 | 09-11 24개 앱이 두 개씩 깔려 정리. --user 0 필수. 앱 내 업데이트 경로로 설치하면 발생 안 함 |
| gh CLI 계정 3개 혼용 | 활성 계정이 다른 세션에 의해 바뀌면 404. 푸시 전 gh auth switch --user talkverselab 확인. 초기 리포가 엉뚱한 계정에 만들어졌다 사라진 이력 |
| AI 생성 콘텐츠 원어민 미감수 | mn 250문장, vi 다이얼로그·독음, zh HSK 뜻 4,037·이어쓴 137턴, ru D01~D13 격 정확도. 상업 출시 전 감수 필요 |
| 실기기 1대가 개발자 데일리폰 | 자동 UI 조작이 다른 앱 위에 떨어진 사고, 보안잠금·AOD로 스크린샷 제한, USB 절전 끊김 |
| 외부 서비스 의존: 국내 ISP DNS가 Supabase 서브도메인·상용 TTS 호스트 resolve 실패 | mn 앱 네트워크 음성이 불안정해 번들로 복귀. 온라인 기능 설계 시 재검증 필요 |
| 라이선스: 공개 강연(CC BY-NC-ND) 등 NC 자료는 상업 앱에 못 씀 | Grab/Longform 수익화 시 공개 강연 데이터 제거, 자체 생성+공공 저작물(공공 저작물 등)로 대체 방침 |
| APK 크기 | 유니버설 빌드 시 vi 86.7MB(엔진 native lib 3중). arm64 단독으로 31.6MB, 오디오 128kbps 13MB |
| Claude 사용량 한도가 데이터 생성 병목 | 5시간 윈도우당 ~1,000행, 주간 캡 ≈20세션. 버스트 중 throttle로 배치 누락·백필 반복 |
| 매칭앱(talkverse-m) 핵심 기능이 목업 | 챗 상대·매칭·결제 없음. LLM provider 미정. 출시일 메모(9월말)와 실제 진척 괴리 |
가격안 미확정 · 메모마다 값이 달라 모두 병기
| 플랜 | 표기된 값 | 출처 메모 |
|---|---|---|
| Tier 0 Free | $0 (광고, 매칭 1일 3명, 번역 일 10회) | 내 드라이브\talkverse-m\09_REVENUE_MODEL.md (4-Tier 구조) |
| Tier 1 Basic | $6.99/월 (연 결제 시 $4.17/월) | 내 드라이브\talkverse-m\09_REVENUE_MODEL.md |
| Tier 2 Pro (메인 상품) | $14.99/월 (연 $9.99/월) | 내 드라이브\talkverse-m\09_REVENUE_MODEL.md |
| Tier 3 Master | $29.99/월 (연 $19.99/월) | 내 드라이브\talkverse-m\09_REVENUE_MODEL.md |
| Tier 4 B2B/기업 | 사용자당 월 $99+ (연 계약) | 내 드라이브\talkverse-m\09_REVENUE_MODEL.md |
| 프로모션(4-Tier안) | 첫 7일 무료(Pro), 학생 50%, 친구추천 1개월, 30일 연속학습 1개월 | 내 드라이브\talkverse-m\09_REVENUE_MODEL.md |
| Free (2-tier안) | $0 — AI 30 msg/일·사다리 5회/일·매칭 큐 | 내 드라이브\memo\talkverse\talkverse\19_비즈니스_모델_다이어그램.md (2026-05-23) |
| Premium (2-tier안) | $10/월 (₩13,000) / $96/년($8/월) | 내 드라이브\memo\talkverse\talkverse\19_비즈니스_모델_다이어그램.md |
| Premium+ (2-tier안) | $20/월 (₩25,000) / $192/년 | 내 드라이브\memo\talkverse\talkverse\19_비즈니스_모델_다이어그램.md |
| lang pack 월 (IAP per lang) | ₩9,900/월 ($7/월) — 1언어 L1~L4 | 내 드라이브\memo\talkverse\talkverse-apps\01-Strategy\pricing.md (2026-05-16) |
| lang pack 평생 | ₩59,000 ($44, 1회) | talkverse-apps\01-Strategy\pricing.md |
| 3 lang 번들 월 | ₩19,000/월 ($14/월) | talkverse-apps\01-Strategy\pricing.md |
| 전 lang 평생 | ₩149,000 ($109, 1회) — 14+ 언어 | talkverse-apps\01-Strategy\pricing.md |
| 무료 진입(IAP안) | 0 — 첫 언어 L1 sampler 30 turn (Discover 앱은 전부 무료) | talkverse-apps\01-Strategy\pricing.md |
| 시장별 조정 | 베트남 현지 $1~2/월 또는 광고(광고 제거 $1~2/월), 글로벌 $7/월, Family $10/월 4인 | talkverse-apps\01-Strategy\pricing.md |
| 앱 구현 파일럿 4-Tier(Free~Master) | 가격 미표기 — 페이월·전환 트리거(매칭 1일 3명·B2 룽 Pro 잠금·약점 리포트 2/5 미리보기)만 프로토타입 | .claude 메모리 talkverse-m/app-build.md (2026-07-13, commit 4ea0275) |
| BEP 가정(2-tier안) | 전환율 5%(Premium 4%+Premium+ 1%), BEP ≈ 2,300 DAU, 운영비 1K DAU ≈ $220/월 | 19_비즈니스_모델_다이어그램.md |
| 손익분기(4-Tier안) | 고정비 $16,000/월, 평균 객단가 $14·마진 60% → 유료 ≈1,900~2,000명 | 09_REVENUE_MODEL.md |
메모 간 불일치
| 항목 | 메모에 적힌 값들 |
|---|---|
| 배포된 앱 수 | 17개 (_hub/README.md 표: ar 포함) / '17개 중 16개 배포' (_hub git 커밋 메시지 2026-09-11) / 16개 + ar 준비 중 (_update_kit/hub_README.md 구버전) |
| 전체 앱 개수 | 17개 언어 앱 (zh 메모리 talkverse-sibling-apps.md, CLAUDE.md '17개 앱 설치 실패') / 18개 = 17 배포 + vi (허브 README) / 24개 앱이 두 개씩 설치 (CLAUDE.md 09-11 설치 정리 문구 — 유니버스 외 앱 포함 추정) |
| 리포 공개 여부 | zh·es·ar private (8월 메모리: chinese-universe/spanish-universe/talkverse-ar) / vi만 PRIVATE, 나머지 16개 PUBLIC (zh 메모리 2026-09-11, CLAUDE.md) |
| es 앱 서명 | 서명 시크릿 없어 debug 키 폴백 (es 메모리 2026-08-20) / 공용 debug keystore를 ANDROID_DEBUG_KEYSTORE_BASE64 시크릿으로 복원해 서명 (CLAUDE.md 2026-09-10 통일) |
| CI 릴리스 파이프라인 적용 범위 | zh만 있음, 나머지 16개 미적용 (zh pending-app-changes.md 2026-09-08) / 전 앱 적용, 푸시=배포 (허브 README·CLAUDE.md 2026-09-10) |
| 출시 목표일 | 2026-09-30 모바일 정식 출시, PWA 7월말/8월말 베타 (memo 08_마일스톤) / 2026-09 출시 Phase 1 (memo 19_비즈니스_모델) / 7월 출시 시 법인 명의 가동 (memo 11_법인_전환) / 2026년 12월말(확정 2026-05-23), 매칭앱은 2026-10-01 (데이터정제의기술 00_총괄) / 실제: 스토어 미출시, APK 사이드로드 단계 (허브 README 2026-09-11) |
| 앱 이름 체계 | '[Language] Talkverse' 공식(예: Russian Talkverse), 한국어 앱 HaDa (branding-architecture.md 2026-06-06) / '<언어>유니버스' (허브 README·AndroidManifest: 태국어유니버스·K-유니버스 등) / ru = 'Russian Talk' (ru 메모리·작업기록) / vi = 'Talkverse' (vi 작업기록 06-07) vs '베트남어유니버스' (vi 메모리 06-20) |
| 테스트 기기 모델명 | Galaxy S25+ SM-S936N (vi·ru·zh 메모리) / Galaxy S24 Ultra, SM S936N (mn-build-and-deploy.md) — 시리얼은 동일 |
| tr·hu 로컬 빌드 결과 | 성공 53.1MB (_build_all.log) / Gradle assembleRelease 실패 (_build_all2.log) |
| hi·fa 빌드 | 로컬 Gradle 실패 2회 (_build_all.log, _build_all2.log) / 허브에 CI 산출 APK 배포됨 (_hub/README.md) |
| vi 회화 데이터 스택 | Drift 안 씀, JSON 에셋 직접 로딩 (vi-rebuild-from-zh.md) / zh 정본 구조는 Drift 시드 DB (ja-mirrors-zh-structure.md) — 앱마다 다름 |
| 가격 정책 | 4-Tier $6.99/$14.99/$29.99 + B2B $99 (09_REVENUE_MODEL.md) / 2-tier Premium $10/Premium+ $20 (19_비즈니스_모델_다이어그램.md 2026-05-23) / IAP per lang ₩9,900/월·₩59,000 평생·₩149,000 전체 (pricing.md 2026-05-16) / 앱 프로토타입은 4-Tier Free~Master 가격 미표기 (app-build.md 2026-07-13) |
| vi 미배포 사유 문구 | '다른 작업이 진행 중이고, 공개 전 정리할 자료가 남아 있어' (_hub/README.md) / '작업 중인 변경이 남아 있어' (_update_kit/hub_README.md) / 미커밋 694파일 + corpus/ 이력(09-11 제거 완료) + private (vi/CLAUDE.md) |
| mn 앱 TTS 방식 | Supabase Storage 호스팅 + manifest, 번들 제거(APK 50MB) (상용 TTS-tts-blocker.md 중간 결정) / 578 mp3 번들 복귀(APK 56MB), flutter_tts 폴백 제거 (같은 파일 2026-06-27 최종) |
| th 세션 메모리 | 원본 메모리 파일 유실 → 2026-09-10 HANDOFF에서 복원(세부 이력 부족 명시) |