Adn-602-rm-javhd.today01-55-27 Min -
A lightweight, always‑visible countdown widget that shows the remaining minutes/seconds until a daily “cut‑off” time (01:55 – 27 minutes past midnight). The widget will be displayed on the dashboard/home page (or any page where the user has permission) and will automatically refresh in real‑time.
| # | As a … | I want … | So that … | |---|--------|----------|-----------| | US‑001 | logged‑in user | to see a small badge that reads “Today 01:55‑27 Min” with a live countdown | I know exactly how many minutes/seconds I have left to complete the daily task. | | US‑002 | admin | to configure the cut‑off time (default 00:55 – 27 min after midnight) | the widget can adapt to different regions or business rules. | | US‑003 | user with accessibility needs | the countdown to be announced by screen‑readers and have sufficient contrast | I can perceive the information regardless of visual ability. | | US‑004 | product analyst | to capture an event when the countdown reaches 0 (e.g., fire a “deadline‑passed” webhook) | downstream systems can react automatically (lock submissions, send notifications). | adn-602-rm-javhd.today01-55-27 Min
| # | 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 | Design mock‑up – Ask UI/UX team for a
| 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
| Layer | Suggested Tech | Notes |
|-------|----------------|-------|
| Front‑end | React (functional component) + useEffect + setInterval (or requestAnimationFrame) | Compute next cut‑off timestamp on mount using date-fns-tz or luxon. |
| State Management | Context / Redux slice dailyCutoff (optional) | Store user settings (timezone, custom offset). |
| Back‑end | No API required for the countdown itself (client‑side).
Admin endpoint: POST /api/settings/daily-cutoff | Persist settings in settings table (JSON column). |
| Event Bus | Kafka / RabbitMQ or internal pub/sub (if exists) | Publish daily_cutoff_passed with key userId. |
| Testing | Jest + React Testing Library for component; Cypress for e2e (verify timer resets). |
| Feature Flags | LaunchDarkly / internal flag daily_cutoff_widget | Enable/disable per environment. |