A modern Android app for counting stitches with support for multiple themes and color schemes. This is rewritten from an older Stitch Counter project I previously created.
- Single and Double counter project modes for tracking stitches and/or rows
- Library system to save counters and return to them later using Room, an abstraction layer over SQLite, for the database.
- Three different customizable color themes using Material3 and DataStore to save the theme selection. The theme selection changes the app icon. Light and Dark mode also supported.
- Responsive design for all device sizes using Jetpack Compose. Optimized for portrait and landscape orientations.
- The user can add up to 6 photos to each project. Photos are compressed and saved in app-managed internal storage (
project_images), and relative file paths are stored in Room. Images are loaded with Coil from these resolved local paths. - Import/Export Library creates and restores an offline backup that includes both project data and project photos, so local-only data can be transferred to a new device.
- No account, login, or cloud service is required to use backup and transfer features.
- Stitch Counter does not collect analytics, tracking data, or personal information. All data is stored locally on the user’s device.
- CI runs
:app:testDebugUnitTestand fails if Kotlin source inapp/src/mainchanges without corresponding changes inapp/src/test. - Install local Git hooks with:
bash scripts/install-git-hooks.sh
- The pre-commit hook runs
:app:testDebugUnitTestwhen staged changes include Kotlin production or test files.
This project is configured to build signed release AABs with an upload key from keystore.properties.
- Create
keystore.propertiesin the project root:storeFile=/absolute/path/to/upload-keystore.jksstorePassword=YOUR_STORE_PASSWORDkeyAlias=uploadkeyPassword=YOUR_KEY_PASSWORD
- Build the signed AAB:
- Android Studio Gradle task:
:app:buildPlayReleaseAab - CLI equivalent:
./gradlew :app:buildPlayReleaseAab
- Android Studio Gradle task:
Notes:
buildPlayReleaseAabruns release unit tests before packaging by way of thebundleReleasetask dependency chain.- On success, it opens the output folder in Finder.
- AAB output path:
app/build/outputs/bundle/release/app-release.aab.