Wallet & Timeline Widgets
SCR-DASH-02 · Project Dashboard & Health
Scopedno Figma mapping
Layout
Combines the two Should-priority dashboard widgets — wallet & payment status (DOV-073) and timeline & holding cost (DOV-074) — that can be viewed independently of each other and of the core dashboard content in SCR-DASH-01, and never gate it. They're documented together because both are secondary, self-contained sections of the same project dashboard page rather than separate navigable destinations.
States
- **Wallet not set up**: "set up wallet" prompt in place of payment method/activity detail.
- **Wallet set up**: shows connected methods, Dovel Project Card status, and recent activity.
- **Timeline not set up**: "add timeline" prompt in place of schedule status.
- **On schedule**: neutral/positive schedule indicator, no cost-impact callout.
- **Behind schedule**: schedule indicator plus the resulting holding-cost impact.
- **Loading / error**: loading state on first render; retry affordance if either widget's data fails to load.
Acceptance criteria
- A wallet/payment widget summarizes wallet setup status: connected, not set up, or needs attention.
- The widget shows connected payment methods and Dovel Project Card status, where applicable.
- The widget shows the project's most recent payment activity.
- With no wallet set up, a "set up wallet" prompt is shown; the rest of the dashboard is never blocked or broken by this.
- Tapping the widget opens the full wallet & payments screen (FEAT-06).
- A timeline widget shows schedule status (e.g., on schedule, behind schedule) relative to the project's planned timeline.
- The widget shows the current holding cost impact — accrued and/or projected holding costs tied to the timeline.
- With no timeline set up, an "add timeline" prompt is shown instead of a blank or misleading schedule status.
- Holding costs shown here match the holding-costs section of the project's overall P&L — never a separately calculated, potentially conflicting number.
- When the project is behind schedule, the widget shows the resulting holding-cost impact (e.g., additional days × daily holding cost), not just a generic "delayed" flag.
Powered by — endpoints · the Backend agent owns these
GET /projects/{project_id}/pnl