Files

142 lines
9.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Recon map: Google Clock / Pixel Clock (Android)
Scope: the whole app: alarms, world clock, timer, stopwatch, bedtime, alarm ringing screen, settings, screensaver, home-screen widgets
For: personal use, a clock and alarm app without Google services (project NoGooleApps)
Date: 2026-10-17
## Sources
| # | source | URL | notes |
| --- | --- | --- | --- |
| 1 | help center | https://support.google.com/clock/?hl=en | full settings list (alarms, time and date, display), world clock, timer, widget |
| 2 | help center | https://support.google.com/clock/answer/9887159?hl=en | bedtime schedule, reminder, bedtime mode, sunrise alarm, sleep sounds |
| 3 | review | https://www.slashgear.com/1540180/android-clock-app-features-you-dont-know | sounds, pause alarm, volume buttons, snooze range, alarm duration, screensaver |
| 4 | app store listing | https://play.google.com/store/apps/details?id=com.google.android.deskclock | pitch only, no screenshots saved |
| 5 | screenshots | replica/uhr/screens/ref-01..07.png | supplied by user: alarm list (dark), world clock + settings, timer/alarm expanded/alarm sound, missed-alarm notification, ringing screen, launcher icon, stopwatch. Reference only, never shipped |
## Core loop
Set an alarm in a few taps and be woken reliably at that time, every time, even with battery saver and Do Not Disturb.
## Screens
| ID | screen | route / how to reach | purpose | key components | states seen |
| --- | --- | --- | --- | --- | --- |
| S01 | Alarm list | tab "Alarm" (default) | all alarms, on/off | top bar + overflow, alarm cards (label, big time + AM/PM, next-ring text, switch, expand chevron), FAB "+" | empty, filled, alarm off (dimmed time), section headers ("Wake up" = bedtime alarm, "Other") (ref-01, ref-03) |
| S02 | Alarm expanded | tap a card | edit one alarm in place | label field, time, day chips S M T W T F S, switch, rows: pause alarm, sound, vibrate, delete | expanded (ref-03) |
| S03 | Time picker | tap time / FAB | pick hour and minute | M3 clock dial / keyboard input toggle | dial, input |
| S04 | Alarm sound | S02 → sound row | choose ringtone | tabs (sounds; streaming partners in original), list with play preview, "add new" (own file) | playing, selected (ref-03) |
| S05 | Pause alarm | S02 → pause row | skip until a date | date picker | |
| S06 | Clock (world clock) | tab "Clock" | local time + cities | big time with seconds option, date, next alarm, weather line, city cards (name, day offset, time) , FAB add | one city, many (ref-02) |
| S07 | Add city | S06 FAB | search a city | search field, result list | empty, results |
| S08 | Timer | tab "Timer" | set and run timers | keypad (h m s) + start; running cards: label, ring progress, remaining, +1:00, pause/play, reset, delete; FAB add | idle keypad, running, paused, ringing, several timers (ref-03) |
| S09 | Stopwatch | tab "Stopwatch" | measure time, laps | big 00:00.00, buttons start/stop, reset, lap (large pill buttons), lap list | idle, running, stopped, laps (ref-07) |
| S10 | Bedtime | tab "Bedtime" | sleep schedule | first-run "get started", bedtime + wake-up times, days, sleep duration, reminder, sunrise alarm, sleep sounds | empty, set |
| S11 | Alarm ringing | full screen when an alarm fires | snooze or stop | big time, label, swipe/slide control "Snooze ← ⏰ → Stop", optional weather after stop | ringing, snoozed (ref-05) |
| S12 | Timer ringing | full screen / notification | stop or +1:00 | | |
| S13 | Settings | overflow → Settings | alarm, time, display settings | rows (silence after, snooze length, alarm volume, gradually increase volume, volume buttons, start week on, home time zone, automatic home clock, style analog/digital, seconds, night mode, timer sound/vibrate) | (ref-02) |
| S14 | Screensaver / bedside | overflow → Screensaver; system dream | dim clock on dark screen | analog/digital clock, night mode (red, dim) | day, night |
| S15 | Notifications | system | upcoming alarm (dismiss early), snoozed, missed alarm, running timer/stopwatch | notification actions | missed (ref-04) |
| S16 | Widgets | launcher | time on home screen | digital, analog, world clock list, next alarm | sizes |
| S17 | Lock-screen / quick settings tile | system | next alarm, start timer | | guess |
## Flows
```
F01 Set a new alarm
S01 -> FAB -> S03 pick time -> OK -> S01 (new card, "in 7 h 12 min" toast)
happy path clicks: 3 (FAB, dial hour+minute, OK)
edge: same time exists, exact-alarm permission revoked, notifications off, battery saver
F02 Make an alarm repeat on weekdays and name it
S01 -> tap card -> S02 -> tap 5 day chips -> label -> collapse
happy path clicks: 8
F03 Wake up
S11 rings -> snooze (slide left) -> rings again after 10 min -> stop (slide right)
edge: volume buttons set to snooze/stop, phone locked, DND, silent mode, reboot before alarm
F04 Skip tomorrow's alarm
S15 "upcoming alarm" notification -> "Dismiss now" or S02 -> pause until date (S05)
F05 Run a timer
S08 keypad 5 0 0 -> start -> running card -> +1:00 -> rings (S12) -> stop
happy path clicks: 4
edge: app closed, several timers at once, timer ends while screen off
F06 Measure laps
S09 start -> lap ×n -> stop -> reset
F07 Add a world clock
S06 -> FAB -> S07 search -> tap city -> S06
edge: reorder by long press, delete by swipe
F08 Set a bedtime schedule
S10 get started -> wake-up time + days -> bedtime -> reminder -> done (creates the "Wake up" alarm in S01)
F09 Change alarm sound
S02 -> sound -> S04 -> preview -> select / add own file
```
## Components
| component | variants | states | used on |
| --- | --- | --- | --- |
| Bottom navigation bar | 5 destinations with pill indicator | selected, unselected | all tabs |
| Top app bar | title + overflow menu | | all tabs |
| Alarm card | collapsed, expanded | on, off (dim), ringing soon, snoozed | S01, S02 |
| Big time text | alarm (56sp bold + small AM/PM), clock (very large), stopwatch (mono digits), ringing (huge) | | S01, S06, S09, S11 |
| Switch | M3 with thumb | on, off | S01, S02, S13 |
| Day chips | 7 round chips | selected (filled), unselected (outline) | S02, S10 |
| Settings row | icon + text + trailing (plus, check, chevron) | | S02 |
| FAB | large round "+" | | S01, S06, S08 |
| Timer card | ring progress, time, +1:00 pill, play/pause big pill, close | running, paused, ringing | S08 |
| Keypad | 0-9, 00, backspace, display h m s | empty, typing | S08 |
| Big pill buttons | primary (start/stop), secondary (reset, lap) | | S09, S08 |
| City card | name, offset text, time | dragging, swiping | S06 |
| Slide-to-act control | snooze ← → stop | idle, dragging | S11 |
| Time picker | dial, input | | S03, S10 |
| Notification | upcoming, snoozed, missed, timer running, stopwatch running | | S15 |
| Analog clock face | own design | | S06, S14, S16 |
## Inferred data model
```
Alarm id, hour, minute, enabled, days (bitmask Mon..Sun), label, ringtone_uri, vibrate,
snooze_until (nullable), skip_until_date (pause), is_bedtime_wake, created_at
evidence: S01, S02, help "Set, cancel, or snooze alarms" confidence: high
AlarmInstance alarm_id, fire_at (UTC instant), state (scheduled | snoozed | ringing | missed | dismissed)
evidence: S11, S15 notifications confidence: medium (needed for snooze/missed)
Timer id, label, duration_ms, remaining_ms, state (idle | running | paused | ringing), end_at, created_at
evidence: S08 cards confidence: high
Stopwatch state, started_at, accumulated_ms, laps[] (lap_ms, total_ms)
evidence: S09 confidence: high (single instance)
City id, name, country, timezone, sort_order
evidence: S06, S07 confidence: high
Bedtime enabled, bed_hour, bed_minute, wake_alarm_id, days, reminder_minutes, sunrise (bool), sleep_sound
evidence: S10, help "Set a bedtime schedule" confidence: high
Settings silence_after_min, snooze_min, alarm_volume, gradual_volume_s, volume_buttons (snooze|stop|volume|none),
week_start, home_timezone, auto_home_clock, clock_style (analog|digital), show_seconds,
timer_sound, timer_vibrate, night_mode, theme
evidence: S13 confidence: high
```
Relationships: Alarm 1-n AlarmInstance, Bedtime 1-1 Alarm (wake-up). No accounts.
## Feature matrix
See `features.csv`. Must: 26, should: 17, could: 8, skip: 5.
## Out of scope (cannot or should not be cloned)
- Streaming alarm sounds (YouTube Music, Spotify, Pandora, Calm): partner deals and accounts. Own audio files from the device replace them.
- Google Assistant Routines: Google service.
- Bedtime mode (silence + greyscale), sleep tracking, cough/snore detection, recent bedtime activity: Digital Wellbeing and system privileges, not available to normal apps.
- Calendar "upcoming events" card: needs Google Calendar; could later read the local calendar provider.
- Weather after the alarm: possible later via the Wetter app's data, not part of the first build.
- Google's clock face, ringtones and icons: own designs and own/CC0 sounds.
## Size
Screens 17, flows 9, entities 7. Hard parts: (1) reliable alarms (exact alarms, full-screen intent, Doze, reboot, time zone and DST changes), (2) timer and stopwatch running correctly in the background with live notifications, (3) the expressive UI (expanding cards, ring progress, slide-to-act) and widgets. Size: M.