https://github.com/kimptoc/chimer
Chimer — a chiming countdown timer for Android, with Android Auto support
https://github.com/kimptoc/chimer
alarm android android-auto car-app-library jetpack-compose kotlin material3 timer
Last synced: 9 days ago
JSON representation
Chimer — a chiming countdown timer for Android, with Android Auto support
- Host: GitHub
- URL: https://github.com/kimptoc/chimer
- Owner: kimptoc
- License: mit
- Created: 2026-05-13T20:57:13.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2026-05-22T16:43:24.000Z (about 1 month ago)
- Last Synced: 2026-05-22T20:56:40.148Z (about 1 month ago)
- Topics: alarm, android, android-auto, car-app-library, jetpack-compose, kotlin, material3, timer
- Language: Kotlin
- Size: 152 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Chimer
[](https://github.com/kimptoc/chimer/actions/workflows/ci.yml)
A simple Android countdown-timer app — chimes when time's up, with an Android Auto cancel surface.
- Set a timer from the phone (minutes; defaults to your most-recent duration, plus a list of the last five used)
- A four-note chime + vibration loops on expiry, auto-stopping after 2 minutes if you don't cancel
- Survives the app being killed and the device being rebooted
- When connected to Android Auto, the running countdown and a big STOP button show on the head unit
- When the timer expires, the car screen shows a prominent red STOP button (no more "unlock screen" UI)
## Tech stack
- Kotlin, Jetpack Compose, AndroidX Car App Library
- `minSdk = 29` (Android 10), `compileSdk = 35`
- AlarmManager (`USE_EXACT_ALARM`) for scheduling, foreground service (`specialUse`) for the ringing playback
- DataStore Preferences for persistence
- No DI framework — single `AppContainer` for wiring
- 21 JVM unit tests covering the recents helper, time formatting, and the repository (DataStore via Robolectric)
## Build
You'll need a JDK 17+ — the build uses Android Studio's bundled JBR by default.
```bash
JAVA_HOME=/Applications/Android\ Studio.app/Contents/jbr/Contents/Home \
./gradlew :app:assembleDebug
JAVA_HOME=/Applications/Android\ Studio.app/Contents/jbr/Contents/Home \
./gradlew :app:testDebugUnitTest # 21 unit tests
JAVA_HOME=/Applications/Android\ Studio.app/Contents/jbr/Contents/Home \
./gradlew :app:installDebug
```
Open in Android Studio normally; everything is Gradle Kotlin DSL.
## Android Auto: known limitations
This app is **not Play-ready** out of the box:
- The `CarAppService` declares `androidx.car.app.category.IOT`. This is for sideloaded/development use only; Android Auto category support is host-controlled and not Play-publishable for this timer app without a different product shape.
- `TimerCarAppService.createHostValidator()` returns `HostValidator.ALLOW_ALL_HOSTS_VALIDATOR`. Useful for development; replace with the strict validator before any production release.
For personal/sideloaded use these are fine. To use it in your own car: enable developer mode in the Android Auto app on your phone, then add this app from "Unknown sources".
## Project docs
- `docs/superpowers/specs/2026-05-13-timer-with-auto-design.md` — design spec
- `docs/superpowers/plans/2026-05-13-timer-with-auto-implementation.md` — full implementation plan (20 tasks)
- `docs/MANUAL_SMOKE_TESTS.md` — manual smoke test checklist for phone + Auto
## How this was built
This repo was developed with [Claude Code](https://claude.com/claude-code) using the brainstorming → spec → plan → subagent-driven implementation workflow from the `superpowers` plugin. The full design spec, implementation plan, and an honest per-commit history (including the field-debug session that fixed five real Android 14/16 bugs after the initial implementation passed unit tests) are checked in.
## License
MIT — see [LICENSE](LICENSE).