{"id":49528956,"url":"https://github.com/jeiel85/markscene-android","last_synced_at":"2026-05-29T09:00:41.662Z","repository":{"id":354792424,"uuid":"1225193365","full_name":"jeiel85/markscene-android","owner":"jeiel85","description":"MarkScene은 사진을 검색 가능한 개인 비주얼 메모로 바꾸는 로컬 우선 Android 앱입니다.","archived":false,"fork":false,"pushed_at":"2026-05-29T05:04:36.000Z","size":1138,"stargazers_count":0,"open_issues_count":6,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-29T05:13:44.749Z","etag":null,"topics":["android","android-photo-picker","byok","camerax","github-pages","jetpack-compose","kotlin","local-first","material3","mlkit","photo-notes","play-store","privacy-first","room","visual-notes"],"latest_commit_sha":null,"homepage":"https://jeiel85.github.io/markscene-android/","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jeiel85.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"docs/CONTRIBUTING_GUIDE.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-04-30T03:22:42.000Z","updated_at":"2026-05-29T05:04:33.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/jeiel85/markscene-android","commit_stats":null,"previous_names":["jeiel85/markscene-android"],"tags_count":49,"template":false,"template_full_name":null,"purl":"pkg:github/jeiel85/markscene-android","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeiel85%2Fmarkscene-android","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeiel85%2Fmarkscene-android/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeiel85%2Fmarkscene-android/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeiel85%2Fmarkscene-android/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jeiel85","download_url":"https://codeload.github.com/jeiel85/markscene-android/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeiel85%2Fmarkscene-android/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33644313,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-29T02:00:06.066Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","android-photo-picker","byok","camerax","github-pages","jetpack-compose","kotlin","local-first","material3","mlkit","photo-notes","play-store","privacy-first","room","visual-notes"],"created_at":"2026-05-02T05:15:50.648Z","updated_at":"2026-05-29T09:00:41.656Z","avatar_url":"https://github.com/jeiel85.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MarkScene\n\n\u003e 사진 속 장면을 태그, 메모, 기억 유형으로 정리해 나중에 바로 찾는 Android 비주얼 메모 앱입니다.\n\n[GitHub Pages](https://jeiel85.github.io/markscene-android/) ·\n[APK Releases](https://github.com/jeiel85/markscene-android/releases) ·\n[Privacy Policy](https://jeiel85.github.io/markscene-android/privacy/) ·\n[Play Store Checklist](docs/PLAY_STORE_CHECKLIST.md)\n\n## 현재 버전\n\n| 항목 | 값 |\n| --- | --- |\n| 앱 이름 | MarkScene |\n| 최신 문서 기준 | v2.6.3 |\n| Android Application ID | `com.markscene.app` |\n| 루트 패키지 | `com.markscene.app` |\n| 저장소 | \u003chttps://github.com/jeiel85/markscene-android\u003e |\n| 공개 페이지 | \u003chttps://jeiel85.github.io/markscene-android/\u003e |\n| 개인정보 처리방침 | \u003chttps://jeiel85.github.io/markscene-android/privacy/\u003e |\n| 라이선스 | [MIT License](LICENSE) |\n\n## 제품 한 줄 설명\n\nMarkScene은 사진을 검색 가능한 개인 기억으로 바꿉니다. 사진을 찍거나 선택하면 로컬 태그와 OCR 초안을 만들고, 사용자는 태그와 메모를 수정해 로컬에 저장한 뒤 나중에 검색과 Recall Box로 다시 찾을 수 있습니다.\n\n기본 기능과 고급 AI 분석은 외부 AI API Key 없이 동작합니다. 로컬 VLM 모델을 앱에서 다운로드하면 사진 검증, 장면 요약, 추천 태그 생성이 기기 안에서만 실행됩니다.\n\n## 핵심 흐름\n\n```text\n사진 촬영 또는 선택\n  -\u003e 로컬 태그 초안 및 OCR\n  -\u003e 태그, 제목, 메모, 기억 유형 편집\n  -\u003e 로컬 저장\n  -\u003e Scene Timeline, 검색, Recall Box에서 다시 찾기\n```\n\n## 주요 기능\n\n- **Today / Scene Timeline**: 날짜별로 정리된 사진 기록과 오늘의 요약을 확인합니다.\n- **사진 촬영 및 가져오기**: CameraX 촬영과 Android Photo Picker 가져오기를 지원합니다.\n- **로컬 태그와 OCR**: ML Kit 기반 온디바이스 태그/OCR 초안을 생성합니다.\n- **수정 가능한 기억 유형**: 아이디어, 업무, 영수증, 장소, 나중에 보기 등 여러 기억 유형을 지정합니다.\n- **빠른 검색**: 태그, 제목, 메모, OCR 텍스트, 기억 유형 기반으로 기록을 찾습니다.\n- **Recall Box**: 나중에 다시 볼 기록을 별도 탭에 모읍니다.\n- **로컬 VLM 고급 분석**: MediaPipe 호환 온디바이스 모델을 앱에서 다운로드하면 사진 검증, 장면 요약, 추천 태그를 생성합니다.\n- **로컬 비주얼 Q\u0026A**: 로컬 모델이 준비된 경우 사진에 대한 질문도 외부 전송 없이 답변합니다.\n- **보안 옵션**: 모델 다운로드 토큰 암호화 저장, EXIF 제거, 갤러리 숨김, 자동 잠금, 스크린샷 차단 옵션을 제공합니다.\n- **공유와 내보내기**: 소셜 공유 템플릿, 이미지 크롭, Markdown/CSV 내보내기를 지원합니다.\n\n## 공개 자료\n\n| 자료 | 위치 |\n| --- | --- |\n| GitHub Pages 랜딩 | \u003chttps://jeiel85.github.io/markscene-android/\u003e |\n| 개인정보 처리방침 | \u003chttps://jeiel85.github.io/markscene-android/privacy/\u003e |\n| Play Store 등록 문구 | [docs/STORE_LISTING_KO.md](docs/STORE_LISTING_KO.md) |\n| 앱 아이콘 512x512 | [store-assets/MarkScene_icon_512.png](store-assets/MarkScene_icon_512.png) |\n| Feature graphic 1024x500 | [store-assets/MarkScene_feature_graphic_1024x500.png](store-assets/MarkScene_feature_graphic_1024x500.png) |\n| 스크린샷 | [store-assets](store-assets) |\n| 릴리즈 체크리스트 | [docs/RELEASE_CHECKLIST.md](docs/RELEASE_CHECKLIST.md) |\n| Play Store 체크리스트 | [docs/PLAY_STORE_CHECKLIST.md](docs/PLAY_STORE_CHECKLIST.md) |\n\n## 개인정보 및 권한 원칙\n\n- 기본 플로우에서 사용자 사진을 외부 서버로 업로드하지 않습니다.\n- Android Photo Picker를 우선 사용하고, 전체 갤러리 스캔을 하지 않습니다.\n- `MANAGE_EXTERNAL_STORAGE`, 광범위한 사진/동영상 권한, 백그라운드 위치 권한을 사용하지 않습니다.\n- 로컬 VLM 모델을 가져온 경우 고급 분석도 기기 안에서 처리되며 외부 AI API Key가 필요하지 않습니다.\n- Gemini/BYOK 같은 외부 AI 분석 경로와 분석용 API Key 입력은 제공하지 않습니다.\n- 라이선스 게이트 모델 다운로드에 필요한 read token은 기기 내부 암호화 저장소에 보관하고 모델 다운로드에만 사용합니다.\n- 모델 다운로드 토큰, 이미지 바이트, 프롬프트, AI 응답, 민감 정보는 로그에 남기지 않습니다.\n- AI와 로컬 태그 결과는 확정 사실이 아니라 수정 가능한 제안으로 표시합니다.\n\n현재 매니페스트의 주요 권한:\n\n```xml\n\u003cuses-permission android:name=\"android.permission.CAMERA\" /\u003e\n\u003cuses-permission android:name=\"android.permission.INTERNET\" /\u003e\n```\n\n`INTERNET` 권한은 사용자가 로컬 AI 모델 다운로드를 실행할 때 필요합니다. 사진 분석 자체는 다운로드된 로컬 모델로 기기 안에서 처리됩니다.\n\n## 기술 스택\n\n| 분야 | 기술 |\n| --- | --- |\n| 언어 | Kotlin |\n| UI | Jetpack Compose, Material 3 |\n| 카메라 / 사진 | CameraX, Android Photo Picker |\n| 로컬 저장 | Room, DataStore |\n| 비동기 | Coroutines / Flow |\n| 이미지 | Coil, 앱 내부 이미지 최적화 |\n| 로컬 AI | ML Kit Image Labeling, ML Kit Text Recognition, MediaPipe LLM Inference |\n| 고급 AI | MediaPipe LLM Inference + 로컬 VLM |\n| 보안 | Android Keystore, EncryptedSharedPreferences |\n| CI/CD | GitHub Actions, GitHub Pages |\n\n## 빌드와 검증\n\n```bash\n# 단위 테스트\n./gradlew :app:testDebugUnitTest\n\n# 린트\n./gradlew :app:lintDebug\n\n# 디버그 APK\n./gradlew :app:assembleDebug\n```\n\nGitHub Actions가 최종 Android CI와 GitHub Pages 배포 검증을 담당합니다.\n\n## 문서\n\n- [AGENTS.md](AGENTS.md): 에이전트 작업 규칙\n- [docs/PRODUCT_BRIEF.md](docs/PRODUCT_BRIEF.md): 제품 브리프\n- [docs/PRD.md](docs/PRD.md): 제품 요구사항\n- [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md): 아키텍처\n- [docs/PRIVACY_AND_SECURITY.md](docs/PRIVACY_AND_SECURITY.md): 개인정보 및 보안 원칙\n- [docs/AI_PROVIDER_STRATEGY.md](docs/AI_PROVIDER_STRATEGY.md): AI 제공자 전략\n- [docs/LOCAL_TAGGING.md](docs/LOCAL_TAGGING.md): 로컬 태깅 전략\n- [docs/UX_FLOW.md](docs/UX_FLOW.md): UX 흐름\n- [docs/DESIGN_SYSTEM.md](docs/DESIGN_SYSTEM.md): 디자인 시스템\n- [docs/DATA_MODEL.md](docs/DATA_MODEL.md): 데이터 모델\n- [docs/ROADMAP.md](docs/ROADMAP.md): 로드맵\n\n## 에이전트 작업 방식\n\n이 저장소의 단일 진입 규칙은 [AGENTS.md](AGENTS.md)입니다. 작업 전 최신 `main`을 기준으로 상태를 확인하고, 문서와 작업 이력을 읽은 뒤 작은 범위로 구현, 검증, 기록, 커밋, 푸시까지 진행합니다.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeiel85%2Fmarkscene-android","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjeiel85%2Fmarkscene-android","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeiel85%2Fmarkscene-android/lists"}