PettiBox
Save anything from anywhere, then find it instantly later.
A calm, colorful, offline-first Android app that lives in the Android share sheet.
Google Play · Website · Privacy policy · Apache 2.0
Share a link, text, image, screenshot or PDF into PettiBox from any app. It extracts text with on-device OCR, indexes everything for full-text search, and keeps it all on your phone. Backups can go to a local folder or, optionally, your own Google Drive.
Build
You need:
- Android Studio Hedgehog (2023.1.1) or newer
- JDK 17
- Android SDK 35
Open this project folder in Android Studio. Let it sync Gradle, then run on a device or emulator (minSdk 24).
Or from a shell with the wrapper:
./gradlew :app:assembleDebug
On Windows PowerShell, use .\gradlew.bat :app:assembleDebug.
What's Where
| Layer | Folder |
|---|---|
| Theme | app/src/main/java/com/ghostgramlabs/pettibox/ui/theme/ |
| Components | app/src/main/java/com/ghostgramlabs/pettibox/ui/components/ |
| Screens | app/src/main/java/com/ghostgramlabs/pettibox/ui/screens/ |
| Database | app/src/main/java/com/ghostgramlabs/pettibox/data/local/ |
| OCR worker | app/src/main/java/com/ghostgramlabs/pettibox/data/ocr/ |
| Share entry | app/src/main/java/com/ghostgramlabs/pettibox/ui/screens/save/ShareReceiverActivity.kt |
Stack
Kotlin, Jetpack Compose, Material 3, Room with FTS4, Hilt, WorkManager, ML Kit text recognition, Coil, and Jsoup.
Store Listing
Play Store metadata, ASO keywords, screenshot captions, translations and store graphics live in
store/. The icon and feature graphic are generated by the scripts in tools/icon/.
Architecture
ARCHITECTURE.md walks through the data model, saving flow, OCR, search,
backups, reminders and settings. Emulator QA scripts and the latest QA report are in
qa/.
Tests
./gradlew :app:testDebugUnitTest
Release signing and Google Drive
Debug builds need no setup. Release builds read their signing key from local.properties
(git-ignored) or environment variables:
PETTIBOX_RELEASE_STORE_FILE=path/to/your-release-key.jks
PETTIBOX_RELEASE_STORE_PASSWORD=...
PETTIBOX_RELEASE_KEY_ALIAS=...
PETTIBOX_RELEASE_KEY_PASSWORD=...
Google Drive backup signs in through an OAuth client registered to GhostGram Labs' package name and signing certificate, so it only works in official builds. Everything else, including local backups, works in your own builds.
Contributing
Bug reports, translations and pull requests are welcome. See CONTRIBUTING.md and the code of conduct. To report a security problem, follow SECURITY.md instead of opening a public issue. Changes are listed in CHANGELOG.md.
License
PettiBox is released under the Apache License 2.0. You may use, modify and redistribute it, including commercially, as long as you keep the copyright notice and the NOTICE file, which credits GhostGram Labs.
The PettiBox name and icon are not covered by the license. If you publish a fork, give it its own name, icon and application ID.
Made by GhostGram Labs.
