Local-first Android product workspace for a private image calendar app. This repo is operated as an LLM-maintained second brain plus SDD implementation project.
Image Calendar is a personal mobile app for recording daily photos, short notes, and emotion tags by date.
Core constraints:
- No server
- No login
- No social graph, feed, likes, comments, follows, or sharing
- All records stay on the current device
- Backup/export is always an explicit user action
Product promise:
내 폰 안에만 조용히 쌓이는 하루 사진 캘린더
| Area | Status |
|---|---|
| Product/Wiki | MVP scope and local-only rules are documented |
| Design | Claude Design v2 ingested as implementation reference |
| Android App | Kotlin + Jetpack Compose app builds and runs |
| Persistence | Room-backed PhotoEntry + LocalAsset persistence implemented |
| Record Lifecycle | Day Detail edit/delete implemented and Android CLI verified |
| MVP Surfaces | Onboarding, Calendar, Add, Day Detail, Archive, Settings implemented |
| Verification | Android CLI build/run/layout/screenshot evidence is stored in raw/verification |
| Release Readiness | MVP feature-complete for internal QA; external design/privacy review still recommended before public release |
Latest verified slice:
- 2026-05-01 - MVP completion: onboarding, archive, settings backup/delete, restart verification
Implemented:
- Onboarding with local-only value proposition and start/skip actions
- Calendar tab with month grid, today highlight, local-only badge, and record marker
- Empty-date add CTA from Calendar
- Add tab with gallery picker entry, debug QA fixture, required photo validation, date validation, memo, emotion tags, and local save
- Day Detail view after save
- Day Detail edit dialog for date, memo, and emotion metadata
- Day Detail delete confirmation and repository-backed record deletion
- Archive tab with month grouping, memo/date search, emotion filters, no-result state, and Day Detail navigation
- Settings tab with local trust card, backup zip export, restore follow-up row, app info, danger zone, and delete-all confirmation
- Room database schema export under
app/schemas/ - Internal image copy and thumbnail generation
- Backup zip export with
manifest.json, originals, and thumbnails - Full data deletion for local records and internal entry assets
- Repository rollback cleanup on metadata insert failure
- Repository cleanup failure detection on record deletion
- Android CLI-friendly content descriptions and test tags for touched controls
Not yet implemented:
- Camera capture
- Restore/import
- Stable long-term backup migration contract
- Automated Android CLI smoke script
| Path | Purpose |
|---|---|
app/ |
Android Native Kotlin + Jetpack Compose app |
raw/ |
Source-of-truth materials: prompts, designs, meetings, verification evidence |
wiki/ |
Persistent LLM-maintained project wiki |
specs/ |
SDD-style feature specifications and implementation tasks |
.codex/skills/ |
Project-versioned Codex skills, including Android CLI workflows |
.github/pull_request_template.md |
PR checklist for wiki/spec sync, verification evidence, and local-only guard |
docs/conventions/ |
Project workflow conventions such as branch, commit, and PR rules |
AGENTS.md |
Agent operating rules and wiki maintenance protocol |
- Project Overview
- Current State
- MVP Scope
- Design Output Review v2
- Architecture
- Data Model
- Test Strategy
- Implementation Log
- Git Conventions
- Project Custom Skills
- Meeting Index
- Wiki Index
| Verification | Evidence |
|---|---|
| Room persistence smoke | raw/verification/2026-04-29-room-persistence-smoke |
| Overall behavior/design review | raw/verification/2026-04-29-overall-behavior-design-review |
| Day Detail edit/delete | raw/verification/2026-05-01-day-detail-edit-delete |
| MVP completion | raw/verification/2026-05-01-mvp-completion |
| QA summary | wiki/05-qa/verification-report-2026-04-29.md |
| QA summary | wiki/05-qa/verification-report-2026-05-01.md |
| QA summary | wiki/05-qa/verification-report-2026-05-01-mvp-completion.md |
Verification rules:
- Every meaningful UI verification must store screenshots, layout JSON, annotated screenshots, action log, and findings under
raw/verification/. - Android CLI is the official install/launch/layout/screenshot tool for device verification.
- Local ignored
artifacts/can be used temporarily, but durable evidence must be copied intoraw/.
./gradlew assembleDebug
android describe --project_dir=.
android run --apks=app/build/outputs/apk/debug/app-debug.apk --activity=.app.MainActivityCapture evidence:
android layout --pretty --output=raw/verification/<date-topic>/assets/screen-layout.json
android screen capture --output=raw/verification/<date-topic>/assets/screen.png
android screen capture --annotate --output=raw/verification/<date-topic>/assets/screen-annotated.pngBefore a feature is considered done:
./gradlew assembleDebugpasses.- Official
android runcan install and launch the app. - Screen evidence is saved under
raw/verification/. - Layout JSON exposes useful content descriptions or test tags for key actions.
- Source scan shows no
INTERNET, account, upload, sync, cloud, share, or social concepts. - The relevant
specs/*/tasks.md,wiki/06-project/implementation-log.md, andwiki/log.mdare updated.
Post-MVP sequence:
- Convert the Android CLI MVP journey into a reusable smoke script/checklist.
- Run external designer review against the MVP screenshot evidence.
- Review backup/delete copy with privacy/legal perspective before public release.
- Decide whether Camera capture or restore/import is the next product increment.