// 💡 Daily system design practice in TypeScript
const om = {
name: "Om Dandagvhal",
role: "Final-Year B.Tech IT @ SITRC, Nashik",
class: "BE 2026-27 | Group 37 | Roll 70",
pronouns: "he/him",
location: "Nashik, Maharashtra 🇮🇳",
email: "omd4485@gmail.com",
phone: "+91 9970055620",
currently: [
"🚀 Day 6: Distributed Backend System Design",
"📊 Capstone: Multimodal Sentiment Analysis (MinHash LSH)",
"🎯 Actively applying for Summer 2026 Backend Internships",
"📦 Published: @omdd/agent-loop-guard on npm"
],
interests: ["Distributed Systems", "API Design", "Cloud Native", "Open Source", "AI Safety"],
funFact: "I ship one production-ready backend system every week 📦",
philosophy: "Learn by building. Ship by shipping. Improve by iterating."
};|
|
||
|
|
|
13 ⭐ • npm: agent-loop-guard-js
Prevents runaway loops, repeated tool calls, uncontrolled execution in AI agents
Provider-independent • Zero deps • TypeScript-first • Loop detection
🛠️ Repo • 📦 npm • ⭐ 13
| Package | Version | Links |
|---|---|---|
| agent-loop-guard-js | 📦 npm • 🛠️ Repo • 📊 Bundle |
TypeScript • Redis • BullMQ
| Day | System | Key Technologies | Tests |
|---|---|---|---|
| Day 1 | Rate Limiter | Token Bucket, Sliding Window, Leaky Bucket, Fixed Window, Sliding Log • Redis | ✅ |
| Day 2 | JWT Auth | RBAC, Refresh Tokens, Rotation, Blacklisting, bcrypt | ✅ |
| Day 3 | GraphQL Gateway | Schema Stitching, Redis L1/L2 Cache, Rate Limiting, Auth | ✅ |
| Day 4 | Notification System | WebSocket + Redis Pub/Sub, Multi-channel, Retry + DLQ | ✅ |
| Day 5 | Job Queue | BullMQ + Redis, Priority, Retry, DLQ | 45 tests ✅ |
| Day 6 | Backend System | Service Mesh, Distributed Tracing, Circuit Breakers | 🔄 |
| Project | Description | Key Tech |
|---|---|---|
| 🕸️ Distributed Web Crawler | Scalable MERN crawler with distributed queue, politeness policies, rate limiting | MERN, TS, Redis, BullMQ |
| 🗄️ DB Sharding & Replication | Consistent hashing + Range sharding, Single-leader replication, Quorum reads, Vector clocks | JS, Zero deps, node:test |
| ⚙️ Distributed Task Orchestrator | Priority queues, State persistence, Reliable execution | TS, Redis |
| 📦 Job Queue (Day 5) | BullMQ + Redis, Priority queues, Retry with exponential backoff, DLQ | 45 tests ✅ |
| ☁️ Container Scheduler | Docker orchestration, Resource allocation, Health checks | MERN, TS, Docker |
| Project | Description | Key Tech |
|---|---|---|
| 🛡️ agent-loop-guard ⭐ 13 | AI agent safety library • Loop detection • Tool call limiting • Zero deps • Published on npm | TS, Zero deps |
| Multimodal Sentiment Analysis | MinHash LSH deduplication • Customer feedback analysis • Nearest neighbor search | Python, MinHash LSH |
| AI Code Execution Arena | Sandboxed code execution • Multi-language support • Resource limits | TS, Sandbox |
| Project | Description | Key Tech |
|---|---|---|
| 🐙 GitHub-like Platform | Native Git storage (nodegit) • CI/CD (BullMQ) • Webhooks • Code search • Monaco Editor | MERN, TS, nodegit, BullMQ |
| 🎮 LeetCode Clone | Code execution sandbox • Real-time submissions • Problem management | MERN, TS |
| 🏗️ Advanced System Design MERN | Caching layers • Load balancing • Service mesh | MERN, TS |
| 🏗️ Day 6: Distributed Backend System | Service mesh patterns • Distributed tracing • Circuit breakers | TS, Service Mesh |
| Project | Description | Key Tech |
|---|---|---|
| 🗄️ DB Sharding & Replication | Consistent hashing + Range sharding • Single-leader replication • Quorum reads • Vector clocks • Zero deps | JS, node:test |
| 🧠 Multimodal Sentiment Analysis | MinHash LSH deduplication • Customer feedback analysis • Nearest neighbor search | Python, MinHash LSH |
| 🪙 OmCoin ERC-20 | Solidity • Hardhat • OpenZeppelin • Ethers.js • Deployed on testnet | Solidity, Hardhat |
| 🛰️ GOD'S EYE | Real-time intelligence dashboard • Flights, vessels, AQI, CCTV, seismic • 24 Indian cities | JS, Real-time APIs |
+ 🚧 Day 6 → Distributed Backend System Design [IN PROGRESS]
+ 🚧 Capstone → Multimodal Sentiment Analysis (MinHash) [WEEK 2 of 12]
+ 🎯 Goal → Land a Summer 2026 Backend Internship [ACTIVELY APPLYING]
+ ✅ Done → Day 5 Job Queue (BullMQ, 45 tests) [DONE]
+ ✅ Done → Day 4 Notification System (WS + Redis) [DONE]
+ ✅ Done → Day 3 GraphQL Gateway (Schema Stitching) [DONE]
+ ✅ Done → Day 2 JWT Auth (RBAC, Refresh, Rotation) [DONE]
+ ✅ Done → Day 1 Rate Limiter (5 algorithms) [DONE]
+ ✅ Done → agent-loop-guard (Published on npm) [DONE]| Quarter | Goal | Status |
|---|---|---|
| Q1 (Jan–Mar) | Master backend basics (Node, DB, API, Redis) | ✅ 100% |
| Q2 (Apr–Jun) | Build 6 production backend systems (Weekly) | 🔄 83% (5/6) |
| Q3 (Jul–Sep) | Capstone + Advanced Distributed Systems | 🔄 In Progress |
| Q4 (Oct–Dec) | Land Summer 2026 In 8000 ternship + Final Year Project | ⏳ Upcoming |
| Detail | Value |
|---|---|
| Degree | B.Tech Information Technology |
| Institute | SITRC, Nashik (Savitribai Phule Pune University) |
| Graduation | 2027 |
| Current Year | Final Year (4th Year) |
| Roll / Group | Roll 70 • Group 37 |
| CGPA | 8.5+ (Till Sem 6) |
What kind of contributor am I? I ship root-cause fixes with regression tests to production OSS — not typo patches. Every contribution below was diagnosed from source, verified against the real runtime, and independently reviewed by an AI code reviewer before a human looked at it.
|
Anchoring a A CSS Root cause — |
Finding high-signal bugs that maintainers accept:
|
| Open PRs | 14 across 11 repositories |
| Merged upstream PRs | 3 (Sequelize, Temporal TypeScript SDK, The Last Signal) |
| Combined stars of targeted repos | ~820,000 |
| Stars on the largest target | 186k (Ollama) |
| Repository | Contribution | Stars |
|---|---|---|
| Ollama | Fix media ordering in embeddings for multimodal models | 186k ⭐ |
| Axios | Cancel the response-stream capability-probe body | 109k ⭐ |
| Axios | Prevent RangeError when a form field is named length |
109k ⭐ |
| Axios | Reject a nullish url for dispatched requests |
109k ⭐ |
| Deno | Reject non-object iterator results in URLSearchParams |
108k ⭐ |
| TypeScript | Improve the error message for JSX in non-module files | 111k ⭐ |
| vLLM | Reclaim encoder compute budget after multimodal pruning | 96k ⭐ |
| Bun | Match Node.js ToIntegerOrInfinity in crypto.randomInt |
96k ⭐ |
| Karakeep | Anchor the highlight popover to the selection in the preview modal | 30k ⭐ |
| Docker Compose | Extract an IsPureResourceProvider helper |
38k ⭐ |
| Cua | Persistent connection pooling for VzApi |
31k ⭐ |
| Moleculer | Per-action and per-service validator overrides | 6k ⭐ |
| KafkaJS | deleteConsumerGroupOffsets admin API |
4k ⭐ |
All contributions use signed-off commits and a linear (rebase) history to satisfy DCO checks.
A passing unit test tells you very little. For UI and positioning bugs I build a real-browser harness that exercises the actual production code path:
// Legacy behaviour: the anchor is displaced by exactly the dialog origin
[ok] legacy: the anchor is displaced by exactly the dialog origin
[ok] legacy: the REAL Radix popover covers the text selection (the reported bug)
[ok] fixed: the anchor lands exactly on the selection centre
[ok] fixed: the REAL Radix popover no longer covers the text selectionThe legacy branch is asserted as a bug — so the test proves the bug existed, not just that the new code happens to be self-consistent.
I score targets on four axes before writing any code:
| Signal | Why it matters |
|---|---|
| Reproducible bug reports | A confirmed bug is already agreed-upon work — no design debate |
| Merges external PRs | Maintainers who actually review outside contributions |
| An AI code reviewer is wired in | My PR gets a structured first review before a human sees it |
A public CONTRIBUTING.md with real rules |
The repo wants contributions and states the bar |
- Read
CONTRIBUTING.mdand the repo'sAGENTS.md - Searched for duplicate issues and duplicate PRs
- Root-caused it from source, not from the issue text
- Failing regression test written first
- Minimal diff — no drive-by refactors, no new dependencies
-
typecheck/lint/format/testall green -
pnpm install --frozen-lockfilestill succeeds - Verified in the real runtime, not just the test harness
- PR description explains the root cause, not just the diff
- LLM-use disclosure included, as the repo's template requires