bharath.pages.dev

Backend & full-stack engineer

Bharath Kumar Merigala

I build the parts of the web you don't see — seat locks that survive flash sales, queues that swallow webhook floods, and APIs that stay fast when the tables get big. Final-year CS at VIT Chennai, shipping since before it counted for credit.

Open to SDE roles & internships Chennai, India VIT ’26 · CGPA 8.65
01

About

the human behind the commits

The short version: I'm Bharath, a final-year computer science student at VIT Chennai, and I gravitate toward the messy parts of web development — the ones involving race conditions, cache invalidation, and the other things people warn you about.

Most of what I build is backend-first. My ticket-booking platform holds seats with a two-stage Redis lock so a flash sale can't double-book anyone; my analytics platform digests Shopify webhook floods through a BullMQ job queue so the database never blocks. Last summer at Suminite Holdings I owned the global ranking module end to end and made its leaderboard API roughly 40% faster with better MongoDB indexing.

Off the clock I grind data structures and algorithms in C++ — 400+ problems and counting — tune my Neovim config more often than strictly necessary, and daily-drive Linux (Arch these days, Fedora before that).

Currently: looking for backend / full-stack roles for 2026.

name
Bharath Kumar Merigala
based_in
Chennai, IN
education
B.Tech CSE, VIT Chennai ’26
cgpa
8.65 / 10
focus
Backend systems · Full-stack
daily_driver
Arch Linux + Neovim
02

Experience

shipped, reviewed, deployed
Jun — Jul 2025 Howrah, West Bengal

Software Engineer Intern — Full Stack

Suminite Holdings · aptiandapti.com

  • Owned the global ranking module end to end — took fuzzy business requirements, turned them into a concrete technical design, and delivered it independently.
  • Diagnosed slow queries on large collections and cut leaderboard API response times by ~40% with targeted MongoDB indexing.
  • Implemented search and filtering in clean, modular TypeScript that later modules reused instead of rewriting.
  • Worked in short iterative sprints with regular product reviews, keeping the module aligned with shifting business goals.
TypeScript Node.js MongoDB REST APIs Agile
03

Selected work

systems, not screenshots

P—01 · Nov 2025

TickingTickets

High-concurrency event booking — built to not fall over during a flash sale.

Node.js 20 TypeScript PostgreSQL 15 Redis 7 BullMQ WebSockets Docker · Nginx
  • Two-stage seat locking (Hold → Reserve) on Redis sets and Bull queues, with automatic lock expiry — no double-booking, even under flash-sale contention.
  • Real-time seat map over WebSockets, with seat-state broadcasts batched at 100 ms so traffic spikes don't melt the server.
  • Ticket-based WebSocket auth instead of JWTs in query params — query strings leak into server logs, browser history, and proxies.
  • Razorpay payments with webhook signature verification, processed asynchronously on BullMQ; JWT sessions in HTTP-only cookies.
  • Shipped with Docker Compose behind an Nginx reverse proxy on AWS EC2; integration-tested with Jest + Supertest.
design note — a selected seat is held in Redis with a TTL, and only promoted to a Postgres reservation once payment clears. If the buyer bails, the TTL frees the seat on its own: no cleanup crons, no zombie locks.

P—02 · Oct 2025

Multi-Tenant Insights

SaaS analytics for Shopify stores — one backend, many isolated tenants.

Next.js Node.js PostgreSQL Redis · BullMQ Python · scikit-learn SendGrid
  • Multi-tenant Node.js + PostgreSQL backend with strict tenant isolation; order data lands in real time via Shopify webhooks.
  • An asynchronous BullMQ + Redis job queue offloads database sync work, so the API stays responsive while webhook floods drain in the background.
  • A scikit-learn pipeline runs RFM analysis with K-Means clustering to segment customers automatically — “Champions”, “At-Risk”, and friends.
  • Segments feed the SendGrid API to fire targeted, automated email campaigns per cohort.
design note — webhooks are acknowledged instantly and queued, never processed inline: a burst of orders becomes queue depth, not downtime.

P—03 · May 2025

ResumeAnalyzer

ML-powered résumé insights with a career-fit chat on top.

Python BERT OpenAI API Flask
  • A BERT-based classifier reads a résumé and predicts the job category it fits best, trained on a Kaggle dataset.
  • An interactive GPT-powered chat lets users dig into career fit and skill gaps instead of getting a one-shot score.
  • Deployed end to end on Render — upload a PDF, get analysis, start asking questions.

P—04 · 2025

RTMS

IoT railway-track monitoring — hardware sensors to live dashboard.

ESP32 Arduino Firebase JavaScript
  • An ESP32 with fire, water-level, IR, ultrasonic, and GPS sensors watches track segments for fire, flooding, obstacles, and cracks.
  • Readings stream to Firebase and surface on a real-time web dashboard — latest anomaly with its location, plus a history view with resolution status.
  • A trackside LCD gives on-site staff the same alerts without a browser; built with Arduino, TinyGPS++, and the Firebase ESP client.

More from the lab

all 24 repos →
04

Toolbox

chosen deliberately, learned deeply

$ languages

TypeScript C++ JavaScript Python SQL Lua

$ backend & systems

Node.js Redis — caching · rate-limiting · locks Express Next.js WebSockets Webhooks BullMQ REST APIs

$ data

PostgreSQL MongoDB Firebase DB indexing & query tuning

$ devops & environment

Docker Nginx AWS EC2 Git · CI/CD Postman Linux — Arch / Fedora Neovim
400+  DSA problems solved — mostly in C++ leetcode/bharathCodes247 →
05

GitHub, live

fetched from the API as you read this
24
public repos
contributions, past year
21
original (non-fork) projects
400+
dsa problems solved
git log --author="bharath391" --since="1 year ago"

Stats and heatmap load straight from the GitHub API in your browser — if a number looks frozen, the API is rate-limiting and you're seeing the cached fallback.

06 — Contact

Let's build something solid.

I'm graduating in 2026 and looking for backend / full-stack roles. If you have a gnarly concurrency problem, a codebase that needs an owner, or just want to argue about Redis eviction policies — my DMs are open on X, or find me on GitHub.