%%{init: {'theme': 'neutral'}}%% sequenceDiagram autonumber participant FE as Frontend (React) participant BE as Backend API participant ER as Error Receiver (errors.tdvorak.dev or :8083) participant EV as Error Review Admin UI Note over FE: JS errors captured (window.onerror,
unhandledrejection, manual report) FE->>BE: POST /api/v1/errors {event} BE->>BE: RateLimit(120/min) BE->>BE: Validate & normalize alt External ingest configured BE->>ER: POST /api/v1/errors (Bearer/X-Ingest-Token) ER-->>BE: 202 Accepted {request_id} else Local DB fallback BE->>BE: Store as ErrorEvent (DB) end BE-->>FE: 200 OK Note over ER,EV: Admin inspects EV->>ER: GET /admin/api/errors ER-->>EV: List, details rect rgba(240,240,255,0.2) Note over BE,EV: Auto-register monitor (background) BE->>ER: Register/heartbeat monitor (retry) EV->>ER: Autologin redirect injects token (local dev) end