דאשבורד — ראייה מהירה
סטטוס של כל הצופים, שינויים אחרונים, ויעדים שכדאי לטפל בהם.
פעילות לפי שעה
בדיקות (אפור) מול שינויים (קורל) ב-24ש
המובילים בדריפט
צופים עם הכי הרבה שינויים מצטברים
snapshots אחרונים
לחץ על שורה כדי לפתוח את ה-diff
צופים — Watchers
כל יעד שמערכת ניטור פעילה עליו. ערוך פרטים, הפעל בדיקה ידנית, השבת.
היסטוריה — snapshots & diffs
כל snapshot שנלכד נשמר ל-30 ימים. בחר שורה כדי לפתוח את ה-diff מול הקודם.
בחר snapshot
לחץ על שורה ברשימה משמאל
— ריק —
התראות — webhook log
כל פעולת alert שנשלחה, עם סטטוס מסירה ופרטי היעד.
דוגמת payload
כל webhook מקבל JSON בפורמט הבא
{
"watcher": "Hacker News — דף הבית",
"url": "https://news.ycombinator.com/",
"kind": "change",
"added": 12,
"removed": 4,
"captured_at": "2026-05-12T03:00:00Z",
"summary": "+ Show HN: shipping a 1M-token agent ..."
}
לוג מסירה
תוצאת המסירה האחרונה לכל יעד
הגדרות — workspace
קונפיגורציה גלובלית: שם workspace, retention, webhook ברירת־מחדל, ועוד.
איך זה בנוי
stack מלא ב-zbang-api · 5+ endpoints · Postgres · scheduler · diff engine
FastAPI router
10 endpoints: watchers CRUD, run, snapshots, alerts, analytics, settings, scheduler tick.
SQLAlchemy
4 טבלאות: watchers, snapshots, alerts, settings. אינדקסים לפי watcher_id+captured_at.
httpx async
fetch על כל watcher עם User-Agent אישי, follow_redirects, timeout 12s, ומדידת זמן תגובה.
difflib diff
unified_diff בין snapshot קודם לנוכחי — סופר added/removed, מייצר summary מ-14 שורות.
Selector engine
extractor קליל שתופס id/class/tag, מצמצם תוכן לסקציה הרלוונטית — לפני ה-hash וה-diff.
Webhook dispatch
POST async לכל היעד שהוגדר על watcher עם payload JSON — מסירה נרשמת בטבלת alerts.