Implement Phase 1: project skeleton and data layer

Android project with Kotlin, Jetpack Compose, and Room. Includes:
- Gradle build system with version catalog, foojay JDK resolver, lint config
- Room entities (Notebook, Page, Stroke) with packed float BLOB encoding
- DAOs and repositories for all entities
- Unit tests for blob roundtrip and PageSize enum (10 tests, all passing)
- Minimal Application class and stub MainActivity

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-24 14:03:57 -07:00
parent 47778222b7
commit 0b53023a25
35 changed files with 1090 additions and 14 deletions

View File

@@ -12,26 +12,26 @@ completed and log them in PROGRESS.md.
## Phase 1: Project Skeleton + Data Layer
- [ ] 1.1: Generate Android project with Gradle
- [x] 1.1: Generate Android project with Gradle
- `build.gradle.kts` (root), `app/build.gradle.kts`, `settings.gradle.kts`
- Kotlin, Compose, Room KSP, minSdk 30, targetSdk 34
- [ ] 1.2: Configure `gradle/libs.versions.toml` version catalog
- Kotlin, Compose, Room KSP, minSdk 30, compileSdk/targetSdk 36
- [x] 1.2: Configure `gradle/libs.versions.toml` version catalog
- Compose BOM, Room, Navigation, Lifecycle, Coroutines
- [ ] 1.3: Configure linting (`app/build.gradle.kts` Android Lint config)
- [ ] 1.4: Define Room entities
- [x] 1.3: Configure linting (`app/build.gradle.kts` Android Lint config)
- [x] 1.4: Define Room entities
- `data/model/Notebook.kt`, `Page.kt`, `Stroke.kt`, `PageSize.kt`
- [ ] 1.5: Implement type converters
- `data/db/Converters.kt``FloatArray``ByteArray`, `PageSize``String`
- [ ] 1.6: Define DAOs
- [x] 1.5: Implement type converters
- `data/db/Converters.kt``FloatArray``ByteArray`
- [x] 1.6: Define DAOs
- `data/db/NotebookDao.kt`, `PageDao.kt`, `StrokeDao.kt`
- [ ] 1.7: Define Room database
- [x] 1.7: Define Room database
- `data/db/EngPadDatabase.kt`
- [ ] 1.8: Implement repositories
- [x] 1.8: Implement repositories
- `data/repository/NotebookRepository.kt`, `PageRepository.kt`
- [ ] 1.9: Unit tests
- [x] 1.9: Unit tests
- `test/.../data/StrokeBlobTest.kt` — blob roundtrip
- `test/.../data/RepositoryTest.kt`CRUD, cascade delete
- **Verify:** `./gradlew build && ./gradlew test && ./gradlew lint`
- `test/.../data/PageSizeTest.kt`page size enum
- **Verify:** `./gradlew build` — PASSED (build + test + lint)
## Phase 2: Notebook List Screen