Projects

Things I have built, most of them from the ground up: a database server, a coding agent, scaled backends, AI tools and one offline Android app.

01Systems2026

Radish

A Redis-compatible server written from scratch in Java.

Speaks RESP2 and RESP3, so redis-cli and normal Redis client libraries connect to it unchanged. A single Java NIO event loop serves every client, and a background thread handles AOF writes so the hot path never waits on disk.

  • ~175K GET/s and ~144K SET/s on redis-benchmark (50 clients, AOF on)
  • Leader–replica replication, AOF and RDB persistence, pub/sub, transactions
  • No third-party dependencies, only the JDK
  • Java
  • Java NIO
  • RESP Protocol
  • TCP Sockets
  • AOF Persistence
  • Docker
redis-benchmark → radish:6379
$ redis-benchmark -c 50 -n 100000 -q
PING ~151,000 req/s p50 0.151 ms
SET ~144,000 req/s p50 0.151 ms
GET ~175,000 req/s p50 0.151 ms
HSET ~164,000 req/s p50 0.151 ms
LPUSH ~159,000 req/s p50 0.151 ms
# AOF everysec, RDB snapshots and LRU eviction all on
$ redis-cli SET lang java
OK

02AI2026

Codemon

A coding agent that runs in your terminal.

Bring your own API key from about 185 providers. Codemon streams answers, shows every file edit as a diff before it touches disk, and asks before running anything risky. It ships as one binary built with Bun, so there is no Node or npm to install.

  • Permission gate sorts every tool call into read, write, bash or network
  • Sessions saved in SQLite: resume one, or roll back all of its file changes
  • MCP servers, sub-agents, plan mode, and a headless mode for CI
  • TypeScript
  • Bun
  • Ink
  • Vercel AI SDK
  • SQLite
  • MCP
codemon
$ codemon --plan
# read and grep only, every write is denied
$ codemon --sandbox docker
# bash runs inside a throwaway container
$ codemon --rewind
# restore files from the last session
$ codemon run "review the diff" --json
exit 0 finished · 2 turn budget hit · 3 denied

03Systems2026

TrimURL

A link shortener built to keep serving under heavy load.

A redirect reads Caffeine, then Valkey, then PostgreSQL, and pushes the click onto a Valkey stream, so no database write sits on the response path. A consumer group writes the clicks in batches. Runs on Kubernetes, with Helm charts for three environments.

  • Autoscales from 3 to 15 backend pods
  • Load-tested with k6 up to 4,000 concurrent users
  • Rate limits per user, password-locked links, click limits, hashed-IP analytics
  • Prometheus, Grafana and Loki for metrics and logs
  • Spring Boot
  • React
  • PostgreSQL
  • Valkey
  • Kubernetes
  • Helm
  • Grafana
  • K6
grafana / JVM (Micrometer)
Grafana dashboard showing JVM memory and HTTP latency for the URL shortener backend

04Mobile2026

CropDoc

Point the phone at a leaf, get a diagnosis. No internet needed.

An Android app for farmers working where there is no data connection. An on-device MobileNetV2 model names the disease, then the app suggests a targeted treatment and works out the dose, so farmers spray less and spray the right thing.

  • 38 conditions across 14 crops, fully offline
  • Offline AI assistant (SmolLM2 on llama.cpp) with voice in and out
  • 11 languages, including Hindi, Bengali and Urdu
  • Built at NextStep Hacks 2026
  • React Native
  • Expo
  • TypeScript
  • TensorFlow Lite
  • llama.cpp
  • SQLite
CropDoc diagnosis: tomato mosaic virus at 99% confidence

05AI2026

Agentic Support Desk

An AI support agent that knows when to hand off to a human.

Reads a customer's message from web chat, WhatsApp, email or a voice note, checks real order and payment data, and drafts a reply. A verify step checks the draft before it is sent. When confidence is low it escalates, with a summary and timeline ready for the human agent.

  • One LangGraph state machine behind four channels
  • Hybrid retrieval: pgvector plus full-text search in PostgreSQL
  • Checkpointed: a human can hand a ticket back and the AI picks up where it stopped
  • Runs on a laptop with local embeddings, no paid services needed
  • Python
  • FastAPI
  • LangGraph
  • PostgreSQL (pgvector)
  • Redis
  • React
ticket lifecycle
channel web · whatsapp · email · voice
classify intent → tool group
retrieve pgvector + full-text (hybrid)
act typed tools: orders, payments, shipments
verify grounded? policy-safe? complete?
decide reply | escalate with handoff packet
# human replies, AI resumes from its checkpoint

More projects

foolscap
$ foolscap merge a.pdf b.pdf -o out.pdf
$ foolscap split report.pdf --pages 1-3,7 -o out/
$ foolscap compress scan.pdf --level screen -o small.pdf
$ foolscap ocr scan.pdf -o searchable.pdf
$ foolscap-gui report.pdf

Systems2026

Foolscap

A Linux PDF toolkit: one Rust core, a CLI and a GTK4 app. Merge, split, compress and OCR PDFs from the command line or a desktop app. All PDF logic lives in one core crate that never prints or exits, so the CLI and the GUI call exactly the same functions.

  • Rust
  • GTK4
  • MuPDF
  • Tesseract
brutshop / products
BrutShop product grid in a neo-brutalist style

Full Stack2025

BrutShop

A neo-brutalist store with real payments. Full-stack shop with role-based access for buyers and admins, Razorpay checkout and live wishlist notifications. Shipped as one container with CI/CD to Docker Hub.

  • Spring Boot
  • React
  • PostgreSQL
  • Redis
  • Cloudinary
  • Docker
  • Razorpay

Free-tier host, first load can take ~30s

socket-chat-nine-tau.vercel.app
ChatApp group conversation in dark mode

Full Stack2025

ChatApp

Real-time chat with voice and video calls. Private and group chat over Socket.IO, with WebRTC calls, media sharing, reactions and Gemini smart replies. Messages are cached in IndexedDB, so a return visit loads from disk first.

  • React
  • Express.js
  • MongoDB
  • Socket.IO
  • WebRTC
  • Zustand
  • IndexedDB
syllab-ai-sarcastic-soul.vercel.app
SyllabAI dashboard with course progress cards

AI2025

SyllabAI

Turns a topic or a PDF into a full course. Generates structured courses, quizzes, cheat sheets and flashcards with Gemini, using Next.js Server Actions and PostgreSQL. Tracks progress, streaks and accuracy per topic.

  • Next.js
  • PostgreSQL (Neon)
  • Drizzle ORM
  • Clerk
  • Gemini AI
guide weave pipeline
query "how do I reset the router?"
retrieve manual text → ChromaDB
retrieve manual images → ChromaDB
generate local LLM
guide step-by-step, with figures

AI2025

Guide Weave

Visual how-to guides generated from product manuals. Built during the Samsung PRISM R&D internship. A multimodal RAG pipeline pulls both text and images from manuals out of ChromaDB, and a locally hosted LLM writes the guide. Custom benchmarks tuned retrieval accuracy and latency.

  • Python
  • Multimodal RAG
  • ChromaDB
  • Local LLM