A single-user Android app for tracking what's in your kitchen pantry. Point the phone at a product barcode, the app resolves it against Open Food Facts (and its sister databases for cosmetics, pet food, and general products), and a confirm tap adds the item to a local, on-device inventory. Browse, search, edit quantities, and remove items — all of it stored in a local Room/SQLite database that works fully offline. The only network call the app ever makes is the anonymous barcode lookup; there are no accounts, no analytics, and no crash reporter.
- v1.0.0 (2026-05-18) through v1.4.0 (2026-06-02) have shipped as signed sideload APKs on GitHub Releases. There is no Play Store or F-Droid presence — distribution is sideload-only.
- The current release is v1.4.0.
See
CHANGELOG.mdfor the per-version detail and theUnreleasedsection for what's queued.
What the app does (and deliberately does not do) is set out in the arc42 docs — start with §1 Introduction and Goals and §3 System Scope and Context. Non-goals include multi-user sync, shopping lists, recipe planning, and expiry-date tracking.
See ROADMAP.md for direction and explicit non-goals.
Captured on a Pixel 6 emulator (API 34) in the DocGerdSoft Material 3 scheme — light and dark.
| Home | Scan | Detail | Home (dark) |
|---|---|---|---|
- Home — your pantry at a glance: search, browse, and tap an item to edit it. Scan-to-add (green) / scan-to-remove (red) up top, a buying-list cart, and out-of-stock items greyed out. Shown in both the light and dark Material 3 schemes.
- Scan — point the camera at a barcode; Pantry Tracker resolves it (from your pantry or via Open Food Facts) and a confirm tap adds or removes it.
- Detail — adjust the quantity, set an optional low-stock limit + buy amount for the buying list, view the product image, or delete the item.
Pantry Tracker is distributed as a signed APK on GitHub Releases — sideload it onto your device.
- Minimum Android version: 8.0 (API 26).
- Target Android version: 16 (API 36).
Download the app-release.apk asset from the latest release and install it
(you may need to allow "install from unknown sources" for your browser or file
manager). The full release-and-install procedure, including the signing-cert
identity that all v1.0.x updates share, is in
docs/release/SHIPPING.md.
Verify a downloaded APK before installing — see SHIPPING.md §Verifying a release APK signature.
The project builds with the Gradle wrapper. You need JDK 21 and an Android SDK with API 36 platform + build tools installed.
./gradlew :app:assembleDebug # debug APK (auto-signed with the debug keystore)
./gradlew :app:test # JVM unit tests (JUnit 4, Robolectric, Turbine)
./gradlew :app:detekt # Kotlin static analysis (CI gates on this)
./gradlew :app:lint # Android LintA release build (./gradlew :app:assembleRelease) additionally needs four
keystore properties; see docs/release/SHIPPING.md
§B. Without them the release task produces an unsigned APK that cannot be
installed (useful only for build-size checks).
| Layer | Technology |
|---|---|
| Language | Kotlin |
| UI | Jetpack Compose + Material 3 + Navigation Compose |
| Persistence | Room over SQLite (KSP-generated DAOs) |
| Networking | Ktor client (OkHttp engine) + kotlinx.serialization, against Open Food Facts |
| Camera + scanning | CameraX + Google ML Kit barcode-scanning (EAN-13/EAN-8/UPC-A/UPC-E) |
| Image loading | Coil 3 |
| Dependency injection | Manual constructor wiring (AppContainer) — no Hilt |
| Concurrency | kotlinx-coroutines |
Single :app module, application id de.docgerdsoft.pantrytracker. The full
list of what ships in the APK is in
arc42 §3.3.
Documentation is markdown-in-repo, rendered by GitHub (no separate docs site — see ADR-0007). Start at the documentation index for a map and reading order.
docs/README.md— the docs index: reading order across the tree.docs/architecture/— arc42 architecture docs covering all standard sections (with GitHub-rendered Mermaid diagrams); read §1 and §3 first.docs/adr/— Architecture Decision Records (the numbered ADRs).docs/security-posture.md— the living security overview;SECURITY.mdis how to report a vulnerability (privately).docs/release/SHIPPING.md— the release runbook.CHANGELOG.md— per-release notes (Keep a Changelog format).CONTRIBUTING.md— how to contribute: the GitFlow workflow, branch naming, the review process, and the source-header convention.GOVERNANCE.md— the decision-making model (single-maintainer, GitFlow, only-humans-merge-to-develop-and-main).CODE_OF_CONDUCT.md— Contributor Covenant.CLAUDE.md— the operational guide (workflow, tooling, project-local config), not the architectural canon.
Licensed under the Apache License 2.0.
Product data is from Open Food Facts (Open Database License); barcode decoding uses Google ML Kit.