Deploy Watch - GitHub Deployment Monitor
A production-grade deployment monitoring platform that tracks GitHub push events in real-time using Server-Sent Events. Features OAuth 2.0 authentication, user-specific event broadcasting with Go channels, webhook processing, and a React analytics dashboard. Built to master Go concurrency patterns and real-time web architecture.
Screenshots







Tech Stack
Problem
Build a production real-time monitoring system to master advanced Go patterns (SSE broadcasting, OAuth flows, webhook processing) and understand the challenges of deploying full-stack applications across different platforms with cross-origin authentication.
Solution
Designed a Hub-and-Spoke broadcaster using Go channels for user-specific SSE event distribution. Integrated GitHub OAuth 2.0 for authentication and GitHub webhooks for event ingestion. Backend deployed on Fly.io, frontend on Vercel, with careful CORS and cross-origin cookie configuration for production.
Key Features
- ✓Real-time Server-Sent Events (SSE) for instant deploy notifications
- ✓User-specific event broadcasting with Go channels (Hub pattern)
- ✓GitHub OAuth 2.0 authentication flow
- ✓GitHub webhook integration for push event processing
- ✓Deploy history with PostgreSQL persistence
- ✓Analytics dashboard (total, daily, weekly, monthly stats)
- ✓Repository-level deploy tracking and rankings
- ✓Visual notification system with animated highlights
- ✓Multi-repository support via webhook configuration
- ✓Production deployment with SameSite cookie handling
Architecture
Backend: Go with Chi router running on Fly.io. SSE Broadcaster uses Hub-and-Spoke pattern with Go channels for user-specific message routing. OAuth handler manages GitHub authentication flow with secure state cookies. Webhook handler processes GitHub push events, stores to PostgreSQL, and broadcasts to connected users via SSE. Middleware chain handles CORS, auth, correlation IDs, and logging. Frontend: React SPA on Vercel with TanStack Router for routing and TanStack Query for server state. EventSource API maintains SSE connection with automatic reconnection. Vite proxy for local development, direct API calls in production with cross-origin cookie support.
Challenges & Solutions
- Implementing thread-safe user-specific SSE broadcasting without mutexes
- OAuth 2.0 flow with cross-origin cookie limitations (SameSite=None)
- GitHub webhook signature verification and event parsing
- CORS configuration for Vercel frontend + Fly.io backend
- Session management across different domains in production
- EventSource reconnection handling in React
- Deploying SSE long-lived connections on serverless platforms
What I Learned
- •SSE vs WebSocket trade-offs (unidirectional simplicity)
- •Go channels for safe concurrent user-specific broadcasting
- •OAuth 2.0 state parameter security and CSRF protection
- •Cross-origin authentication patterns (SameSite cookies, CORS)
- •GitHub webhook event structures and processing patterns
- •Production deployment challenges (cookies, CORS, proxies)
- •TanStack Query integration with real-time updates
- •When to use environment-based configuration vs build-time