Commit Graph

13 Commits

Author SHA1 Message Date
83bd23945c Add Anthropic and OpenAI API endpoints to monitoring targets
Reorder host list: datavi.be first, then LLM APIs, then cloud
providers (AWS, GCP, Azure), then CDN/hosting, then GitHub.
2026-02-23 00:01:50 +07:00
cb8d47d7aa Enable prettier prose wrapping for markdown
Add proseWrap: "always" to .prettierrc so markdown prose is
hard-wrapped at 80 columns.
2026-02-23 00:00:25 +07:00
818accc454 Bring repo up to REPO_POLICIES.md standards
- Add prettier (4-space indents) and reformat all files
- Add Makefile with test/lint/fmt/fmt-check/check/docker targets
- Add MIT LICENSE file
- Add REPO_POLICIES.md
- Fix Dockerfile: listen on 8080 with PORT env var via envsubst
- Restructure README.md with all required sections
- Set up pre-commit hook (make check)
- Update .prettierignore, .gitignore, .dockerignore
2026-02-22 15:59:10 +01:00
ca403e68d1 Pin Dockerfile base images to SHA256 digests
Mutable tags on Docker Hub enable RCE during builds.
Pin to exact digests with version/date comments for auditability.
2026-02-22 14:55:55 +01:00
e106dd5332 Update README with Docker, health indicator, and WAN/local docs 2026-02-22 14:51:55 +01:00
fa3d50393e Add Dockerfile with nginx for static serving
- Multi-stage build: node:22-alpine builds, nginx:stable-alpine serves
- RFC1918 set_real_ip_from for 10/8, 172.16/12, 192.168/16
- X-Forwarded-For real_ip_header with recursive resolution
- Access log to stdout, error log to stderr (Docker best practice)
- Immutable cache headers for hashed static assets
- SPA fallback via try_files
2026-02-22 14:51:33 +01:00
651c86211d Refactor to classes and implement UI improvements
Architecture:
- Extract AppState and HostState classes (no global mutable state)
- Extract SparklineRenderer class with static methods
- Extract CONFIG object for all constants
- Break monolithic functions into focused helpers

Features:
- Clickable service URLs (open in new tab, existing styling)
- Health status box above summary (red DEGRADED if >half unreachable)
- Local Gateway separated into bottom group
- Local Gateway excluded from WAN min/max/avg summary stats
- Pause stops probes but history keeps scrolling (blank gaps, no false outage)
- WAN_HOSTS / LOCAL_HOSTS separation with indexed rendering
2026-02-22 14:51:06 +01:00
3069b4692d Add fixed axes, color-coded lines, summary stats, and >1000ms clamping
- Fixed Y-axis (0-1000ms) with tick labels
- Fixed X-axis showing seconds ago (-0s to -300s)
- Sparkline segments color-coded by latency value
- Summary line showing reachable count, min/max/avg across hosts
- Latencies >1000ms now clamped to unreachable/timeout
- Canvas height increased to 80px for axis labels
2026-01-31 14:22:35 -08:00
ed602fdb5f Fix timing: use performance.now() instead of Resource Timing API
Resource Timing entries are added asynchronously after fetch resolves,
causing a race condition. The simple performance.now() around fetch
gives accurate latency measurements without this issue.
2026-01-31 13:58:18 -08:00
0038f23460 Always check timing data even on fetch error (4xx/5xx)
Resource Timing API records latency even for error responses.
Now we check for timing data regardless of fetch success/failure,
only reporting unreachable if no timing data is available.
2026-01-30 22:25:32 -08:00
8be7002ad9 Fix latency measurement and chart direction
- Use Resource Timing API for accurate network latency instead of
  performance.now() around fetch (fixes ~600ms measurement error)
- Chart now shows latest sample at right edge, growing left
- Reduce request timeout from 5000ms to 1000ms
2026-01-30 22:23:35 -08:00
83d9d15b6c Change update interval to 2000ms and add play/pause button
- Update interval changed from 250ms to 2000ms (150 history points)
- Add large play/pause toggle button in header
- Show running/paused status indicator
- Pause stops all network requests, resume restarts them
2026-01-30 22:20:19 -08:00
65cc2014c6 Initial implementation of NetWatch network latency monitor
SPA for real-time latency monitoring to 10 internet hosts:
- 250ms update interval with 300s history sparkline graphs
- Color-coded latency display (green <50ms to red >500ms)
- HEAD request timing with no-cors mode for cross-origin support
- Built with Vite + Tailwind CSS v4, all dependencies bundled
- Designed for static bucket deployment
2026-01-29 21:32:19 -08:00