Handoff: Watchtower — Blockchain Network Monitor

Overview

Watchtower is an analytics dashboard for monitoring the health of a Proof-of-Stake blockchain network. It is built for analysts / researchers and is organized around period-based analytics (24H / 7D / 30D), not a live realtime tick. The prototype monitors a single fictional PoS network — Helios (HLX) — so no real brand/UI is copied; swap in your real network + data source on implementation.

It has four screens (Overview, Transactions, Staking, Alerts) plus three switchable Overview layouts (Grid / Briefing / Dense).

About the Design Files

The files in this bundle (Watchtower.dc.html, support.js) are design references created in HTML — a prototype showing the intended look, layout, and behavior. They are not production code to copy directly.

Watchtower.dc.html is a "Design Component": markup + a class Component logic block, run by the support.js runtime. Treat it as an executable spec. The task is to recreate these designs in your target codebase (React, Vue, Svelte, SwiftUI, etc.) using your established patterns, component library, charting library, and data layer. If no codebase exists yet, pick the most appropriate stack (a React + TypeScript SPA with a charting lib such as Recharts/ visx/ECharts is a natural fit) and implement there.

All mock data is generated deterministically in the logic class (renderVals() and helpers like mkSeries, rng). Replace these with real RPC/indexer queries.

Fidelity

High-fidelity. Final colors, typography, spacing, and interactions are defined. Recreate the UI to match, using your codebase's libraries. Charts in the prototype are hand-built inline SVG (mkSpark, mkMultiArea, mkBars, mkDonut, mkRing) — you should reproduce the same chart types and styling with a proper charting library rather than porting the SVG math.


Design Tokens

Color

Token Hex Usage
bg #f7f8fa App background
surface #ffffff Cards, sidebar, panels
border #ebedf2 Card borders
border-hairline #f3f4f7 / #f0f1f5 Table row dividers / chart gridlines
ink #1a1d23 Primary text, active nav text, dark buttons
ink-2 #3a4150 / #5b6473 Secondary text
ink-3 #8a93a3 Muted labels
ink-4 #a3abb8 / #b6bdc8 Faint captions, timestamps
primary #5b54f0 Brand accent, charts, progress bars, links (#4b40e0 for active nav text, #5b54f0 link)
primary-soft #eef0fe Active nav bg, info badges
teal (secondary series) #19b3a6 Outbound series in flow charts
positive #16a34a Up deltas, healthy status, staking line
positive-soft #e7f6ec Positive badge bg
negative #dc2626 Down deltas, critical alerts, exchange inflow
negative-soft #fdeaea Negative badge bg
warning #d97706 Watch status, warning alerts
warning-soft #fdf2e3 / #fdf2e3 Warning badge bg
nav hover #f2f3f7 Nav item / chip hover
row hover #fafbfc Table row hover

Sidebar network avatar gradient: linear-gradient(135deg,#5b54f0,#8b7dfb).

Typography

Type scale (size / weight):

Spacing, radius, shadow

Animations / keyframes


Layout Shell (all screens)

Two-column flex, min-height:100vh:

Navigation (sidebar)

Items: Overview, Transactions, Staking, Alerts. Each is a full-width button, 9×12px padding, 9px radius, 13.5px/500, with a 18px stroke icon (grid / swap-arrows / hexagon-layers / bell). Active item: bg #eef0fe, text #4b40e0. Hover: bg #f2f3f7. Alerts shows a red count badge (3) — mono 11px/600, bg #fdeaea, text #dc2626, pill radius.

Period segmented control (topbar)

Three buttons in a #eef0f3 track (3px padding, 10px radius). Active button: white bg, shadow 0 1px 2px rgba(20,25,40,.12), text #1a1d23. Inactive: transparent, text #8a93a3. Labels mono 12.5px/600. Changing the period regenerates all series & KPIs.


Screens / Views

1. Overview

Purpose: at-a-glance network health & flow. Has a Layout switcher (small segmented control labeled "Layout": Grid / Briefing / Dense; active = dark #1a1d23 bg / white text, inactive = #f2f3f7 / #8a93a3).

Layout A — Grid (default):

Layout B — Briefing: narrative top-to-bottom. Hero row 320px / 1fr: large Health card (ring + score + signals) beside a 2×2 grid of KPI cards (with sparklines). Then full-width Transaction flow card (totals inline in header). Then 1fr/1fr Decentralization + TVL. Then full-width Large transactions table.

Layout C — Dense: max information density. Top: 4 compact KPI cards (no sparkline, smaller). Then a repeat(3,1fr) masonry: Transaction flow (spans 2 cols), Health (1), Decentralization, TVL (with protocol list), Recent alerts. Then a full-width Large transactions table. Smaller radii (12px), tighter padding, smaller type.

2. Transactions

Purpose: inbound/outbound activity & whale movements.

3. Staking

Purpose: validator set, staking ratio & rewards.

4. Alerts

Purpose: anomalies, reorgs & slashing events.


Interactions & Behavior

State Management

Assets

Files

Running the prototype locally

Serve the folder over HTTP (the runtime is fetched relatively) and open Watchtower.dc.html, e.g. npx serve . then open the file — do not open via file://.