Adn-602-rm-javhd.today01-55-27 Min May 2026
| # | Question | Options | Decision Needed By |
|---|----------|---------|--------------------|
| Q‑01 | Should the widget be optional for users (hide/show toggle)? | Yes / No | Product meeting (next sprint) |
| Q‑02 | Should we log a warning when the user is in a timezone where the cut‑off falls on the previous day (e.g., UTC‑12)? | Adjust to local day / keep absolute UTC | Architecture review |
| Q‑03 | What is the desired grace‑period length? | 0 s (hard lock) / 30 s / configurable | Admin UI design |
| Q‑04 | Do we need a fallback server‑side timer for browsers that block setInterval (e.g., background tabs)? | Use Web Workers / rely on server push | Performance team |
| ID | Requirement | Acceptance Criteria |
|----|--------------|---------------------|
| FR‑01 | Display – The widget appears in the top‑right corner of the dashboard (or configurable location). | - Visible on all pages where the user has view_dashboard permission.
- Shows the label “Today 01:55‑27 Min” followed by a digital timer MM:SS. |
| FR‑02 | Live Countdown – Timer updates every second. | - Timer counts down from the current time to the next occurrence of 00:55 + 27 min (i.e., 01:22).
- When the timer reaches 00:00, it briefly flashes and then resets to the next day’s value. |
| FR‑03 | Configuration – Admin can set the cut‑off offset (default 27 min) and optional start hour (default midnight). | - Settings stored in app_settings.daily_cutoff.
- Changes take effect within 5 minutes (cache bust). |
| FR‑04 | Timezone Awareness – Countdown respects the user’s selected timezone. | - If user is set to America/New_York, countdown is based on that zone.
- If user has no timezone, fallback to server timezone. |
| FR‑05 | Accessibility – ARIA live region and high‑contrast colors. | - Screen readers announce “X minutes remaining until today 01:55‑27 Min”.
- Contrast ratio ≥ 4.5:1 (WCAG AA). |
| FR‑06 | Event Hook – Fire a daily_cutoff_passed event when timer hits zero. | - Event payload includes userId, timestamp, and timezone.
- Event can be subscribed to via webhook or internal message bus. |
| FR‑07 | Grace Period – Optional 30‑second grace period after zero before lockout. | - Configurable via admin UI (grace_seconds).
- During grace period, timer shows “00:30 (grace)”. |
| FR‑08 | Responsive Design – Widget shrinks or moves on small screens. | - On screens < 600 px, the widget collapses into a top‑nav icon with tooltip. | adn-602-rm-javhd.today01-55-27 Min
| Category | Requirement |
|----------|-------------|
| Performance | < 50 ms UI update per second, negligible impact on page load. |
| Scalability | Stateless component – can be rendered by any front‑end instance; no per‑user server polling required (use client‑side Date calculations). |
| Reliability | Countdown must stay accurate within ±1 second even after browser tab is backgrounded. |
| Security | No sensitive data transmitted; only reads user timezone from profile. |
| Internationalisation | Label should be translatable (i18n key: widget.dailyCutoff.title). |
| Analytics | Track widget_view, countdown_started, deadline_passed events (GA4 / internal telemetry). | | # | Question | Options | Decision