Build a local viewer for Edgenivo webhook events so you can inspect event types and delivery outcomes while developing an integration. Start with signed synthetic fixtures before connecting a live source.
Use an empty workspace or open the project that will receive events. Live testing needs a webhook secret and a reachable receiver, while the viewer needs access controls. Continuing with an agent supplies no repository, secret, or tunnel.
You get a bounded event list with redacted details and duplicate handling. The viewer observes deliveries; it does not replay payloads, deploy projects, or trigger business actions.
Build a local debugging app that receives verified Edgenivo webhook events and shows a bounded, redacted event history. It must observe deliveries without replaying them or triggering business actions. Read repository instructions and inspect the framework, package manager, persistence, authentication, UI patterns, and tests. Reuse them. If an intended existing project is missing, ask me to open or import it. Otherwise an empty workspace can use a small Next.js app. Start with signed synthetic Edgenivo event fixtures and a local test secret. Never silently bypass signature checks for fixture mode. Use the current Edgenivo webhook documentation to verify the signature format, event envelope, and delivery behavior. Enforce a request byte limit before buffering. Authenticate the exact raw request bytes with the configured webhook secret before parsing JSON. Validate signature encoding and length, then compare in constant time; reject absent secrets and invalid signatures. Validate the envelope and allow only the event types chosen for this viewer. Persist a minimal allowlisted record containing the event identifier, type, timestamps, processing outcome, and selected non-sensitive fields. Redact before persistence, logging, or display. Do not store request headers, signatures, tokens, or arbitrary raw payloads. Scope deduplication to the configured source and event ID with an atomic uniqueness constraint. A duplicate should return an accepted response without creating another event; storage failure must not return success. Acknowledge successful durable recording promptly, with no detached in-memory work after the response. Build a paginated list and detail view with event-type filtering, readable timestamps, empty/error states, and keyboard access. Render values as text, never HTML. Set a bounded retention policy and keep fixture data distinguishable from live events. Gate the viewer and read API with authentication, or make the initial app explicitly loopback-only and refuse public operation until access control exists. If deployed later, require durable storage suitable for Edgenivo Functions instead of local files or process memory. Test signed valid input, altered raw bytes, malformed signatures, missing configuration, oversized bodies, duplicate deliveries arriving concurrently, storage failure followed by retry, redaction, and unauthorized viewer access. Use local fixtures and existing tools; do not register a webhook or open a tunnel without approval. Report actual tests, local run steps, required configuration, and persistence/retention limits. Ask before exposing the receiver publicly, connecting live events, creating services, or deploying.