Radar Hype
Monitors 20+ streetwear stores in real-time, deduplicates via Redis Bloom filters and delivers alerts in under 2 seconds. Production on Kubernetes with Stripe and GitOps.
2024LiveFounder & Full-Stack ArchitectSaaSGrowth
- Next.js
- Node.js
- Postgres
- Redis
- Stripe
- Kubernetes
- Helm
- Traefik
~500 users
50k+ events/day
<2s alerts
20+ stores
Impact
- Scraper orchestration for 20+ independent stores with normalized product schemas. Alerts delivered in under 2s to 500+ concurrent users.
- Deduplication via Redis Bloom filters with O(1) lookups, cutting 85% of operational noise while keeping every genuine deal signal. TTL-based eviction via sorted sets.
- Unified billing with Stripe covering both recurring subscriptions and one-time purchases. Webhook idempotency keys and a reconciliation cron ensure 99.99% payment accuracy.
- Production deployment on k3s with Helm charts, GitLab CI/CD and full-stack observability. Rollbacks under 5 minutes, zero manual deployments.
KPIs
Stores integrated
20+
Daily events processed
50k+
Alert latency (p99)
<2s
Deduplication accuracy
99.99%
Payment success rate
99.99%
Uptime
99.95%
Deploy frequency
Daily
MTTR
<5min
Traction & Growth
Active Users
6
Paying Customers
3
Monthly Price
R$ 34.90
MRR
~R$ 105/month
Acquisition Channel
Direct Response
Cold audience acquisition via Meta Ads. Direct response copy with strong value proposition and scarcity messaging.
Highlights
- Idempotent workflow orchestration for Stripe webhook retries and scraper job replays without side effects.
- Sub-2s alert delivery pipeline for 500+ concurrent users via Next.js ISR and Redis pub/sub, optimizing for FCP and TTI.
- End-to-end ownership: scraper reliability (circuit breakers, exponential backoff) and billing consistency (webhook validation, invoice reconciliation).
- Moved from Lambda/VPS to k3s + Helm: one-command deployments, atomic rollbacks, zero manual toil.
Architecture
Frontend (Next.js 15) → API Gateway (Node.js/TS) → Postgres (normalized products) Scheduled Scrapers (cron workers) → Redis (dedup/cache/sessions) Notifiers (Discord/Email/Webhooks) via Event Bus Billing (Stripe webhooks) → Invoice reconciliation → Access control GitLab CI/CD → k3s (Helm) → Traefik (ingress)
Key Decisions
- Redis Bloom filters for deduplication instead of SQL: Trades consistency for sub-millisecond latency and linear scaling. The invalidation strategy needs care, but handles 50k+ events per day without bottleneck.
- Stripe invoice-based billing: Less UX flexibility, but production-grade payment infrastructure with native PCI, SCA and reconciliation. Reduced time-to-monetization from months to weeks.
- Kubernetes from day one: Steeper learning curve upfront, but unlocks GitOps, namespace isolation and deploy cycles under 5 minutes. Worth it with 3+ environments.
- One scraper module per store instead of a generic scraper: More duplicated code, but allows store-specific optimizations: Playwright where JavaScript rendering is required, different retry strategies. Onboarding new stores: days to hours.
Hard Problems
- Scrapers fail due to network timeouts, rate limits, DOM changes and data inconsistency. Circuit breakers with exponential backoff and jitter, stateless scraper design and separate retry queues per store keep the system reliable despite unstable sources.
- Database lookups for deduplication at real volume would mean millions of checks per day with high lock contention risk. Redis Bloom filters solve it with O(1) membership testing; sorted sets handle TTL-based eviction.
- Stripe webhooks can arrive duplicated with timestamp drift. Idempotency keys combining webhook ID, optimistic locking at invoice level and an async reconciliation cron eliminate race conditions.
- Real-time notifications for 500+ concurrent users need WebSocket-like latency. Next.js ISR with client-side polling and Redis pub/sub for broadcast handles it without persistent connection overhead.
- Keeping infrastructure secrets in Kubernetes without exposing them in Git: Sealed Secrets with GitOps-friendly encryption and environment-based .env injection.
Ops & Runbook
- Push to main triggers GitLab CI, which builds Docker images, updates the Helm chart and does a rolling update in k3s with zero downtime.
- Rollback: helm rollback radar-hype-api -n production. Takes about 30 seconds.
- Scraper failing: check /api/health, examine CronJob logs via kubectl, manual restart if needed.
- High alert latency: monitor Redis memory and eviction policy, check Postgres connection pool saturation, scale HPA if needed.
- Webhook backlog: check Stripe delivery logs, review idempotency key collisions, replay via Stripe CLI.
Security & Privacy
- Stripe API keys rotated quarterly, stored in Kubernetes Sealed Secrets.
- No PII persisted: only product names, prices and URLs. User identifiers hashed.
- All Stripe webhooks validated with HMAC-SHA256 signature verification.
- Rate limiting: 100 requests per minute per IP on API endpoints.
- TLS 1.3 for all external communications. Encrypted database backups with 30-day point-in-time recovery.
Proof
Real-time alert feed
Alerts with sub-2s latency aggregated from 20+ independent stores.
Orchestration pipeline
Fault-tolerant scraper orchestration with automated retries and idempotency.
Production deployment
Multi-environment k3s + Helm deployment with GitOps CI/CD.
Want a technical walkthrough?Email me
What I'd Improve Next
- Real WebSocket with Socket.IO for true push notifications instead of polling.
- ML model to predict price drops before they happen using historical data.
- Alert bundling: any promotion in a specific category across the top 5 stores.
- White-label API for fashion platforms and influencer tools as B2B revenue.