Skip to content

Repository files navigation

Paper Clock

A private, offline Android alarm clock for building mornings around meaningful goals. Paper Clock stores everything on the device and bundles its alarm sounds in the app.

Build

Requirements: Android SDK platform 36, JDK 21 or newer, and an Android device/emulator running API 26+.

export ANDROID_HOME=/path/to/Android/sdk
./gradlew assembleDebug

The debug APK is written to app/build/outputs/apk/debug/app-debug.apk.

GitHub releases

GitHub Actions builds an installable debug APK for every pull request targeting main and publishes it as a workflow artifact. Every push to main also creates a GitHub Release, tags it as v<versionName>-build.<runNumber>, and attaches the APK. These builds use the standard Android debug signing key; they are intended for personal device installation rather than Play Store distribution.

Use

  • Tap ADD ALARM to set a time, repeat days, label, optional linked goal, chosen sound, and vibration.
  • Tap GOALS then NEW GOAL for the four-stage flow: title and note, target date, morning alarm, then sound.
  • Give exact-alarm access when Paper Clock presents its settings card. Android 13+ also requests notification access at launch.
  • When an alarm rings, Paper Clock opens a lock-screen-safe full-screen view and loops its selected sound until the large DISMISS button is pressed.

Architecture

  • Kotlin, Jetpack Compose Material 3, ViewModel, and StateFlow
  • Room database and repository under app/src/main/java/com/paperclock/data
  • Exact AlarmManager scheduling, broadcast delivery, boot/package replacement recovery, full-screen activity, and foreground STREAM_ALARM playback under app/src/main/java/com/paperclock/alarm
  • Manual application-scoped dependency container in PaperClockApp
  • Room schema snapshots: app/schemas/com.paperclock.data.ClockDatabase/

Bundled sound manifest

The source audio files were inspected before integration: all are MP3 at 44.1 kHz / 192 kbps, with durations from about 10.5 to 19.4 seconds. Their sanitized Android raw resources and display names are mapped in SoundCatalog.kt.

Resource Display name
beep_beep_beep Beep Beep Beep
good_morning_sunshine Good Morning Sunshine
harp_smash Harp Smash
iron_paradise Iron Paradise
lovely_flute_wakey_wakey Lovely Flute (Wakey Wakey)
old_school Old School
ring_ring Ring Ring
the_roar The Roar

The reference images informed the near-black, charcoal, and restrained gold visual direction, oversized uppercase typography, generous spacing, and geometric hero panels. No reference imagery is packaged in the Android application.

About

bringing back what we lost

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages