Featured Projects

Selected Engineering Work

Job Portal System

Problem: Traditional job boards lack real-time employer-candidate communication, forcing users to refresh pages constantly and miss opportunities.

Solution Architecture: Built a MERN stack application with Socket.io WebSocket layer. React frontend handles optimistic UI updates, Node.js/Express backend manages authentication via JWT with bcrypt password hashing, MongoDB stores user profiles with compound indexes on (location + skills) for sub-100ms search queries.

Technical Challenge: Notification system initially caused database write spikes (200+ writes/sec) during peak hours. Solved by implementing Redis pub/sub as message broker, batching notifications, and using MongoDB change streams to sync state. Result: 60% faster job-matching notifications, 45% increase in user engagement, system handles 500+ concurrent connections.

Trade-offs: Chose MongoDB over PostgreSQL for flexible resume schema evolution, accepting eventual consistency for notification delivery counts in exchange for horizontal scaling capability.

React.js Node.js MongoDB Socket.io

Instant Messaging App

Problem: WhatsApp clones exist, but building one that scales to 10K+ concurrent users requires solving hard distributed systems problems.

System Design: React Native mobile client maintains persistent WebSocket connections via Socket.io. Express.js backend uses Node.js cluster module (4 workers) behind nginx load balancer. Messages stored in MongoDB (indexed by roomId + timestamp), media files in AWS S3 with CloudFront CDN.

Technical Challenge: Group chat message ordering across distributed clients. Initial approach used client timestamps causing message reordering during network lag. Switched to server-assigned Lamport timestamps with vector clocks for causal ordering. Added optimistic UI updates with local rollback on conflict detection.

Security Implementation: End-to-end encryption using AES-256-GCM. Each conversation generates unique symmetric key via ECDH key exchange (P-256 curve). Public keys signed with HMAC, stored encrypted in DB. Messages encrypted client-side before WebSocket transmission.

Results: 99.9% uptime over 6 months, handles 10K+ daily active users, average message latency 45ms, supports group chats up to 256 members.

Socket.io React Native Express.js MongoDB

Chess Game

Problem: Chess AI requires evaluating millions of board positions. Naive minimax explores 20^4 = 160K positions at depth 4, causing 5-10 second move delays.

Algorithm Implementation: Minimax with alpha-beta pruning reduces search space by ~60%. Evaluation function weighs piece values (pawn=100, knight/bishop=300, rook=500, queen=900) plus positional bonuses from 64-element lookup tables for each piece type. Implement move ordering heuristic (captures first, then checks) to maximize pruning effectiveness.

Code Example - Core pruning logic:
int minimax(Board b, int depth, int alpha, int beta, boolean isMax) {
  if (depth == 0) return evaluate(b);
  List<Move> moves = orderMoves(b.getLegalMoves());
  for (Move m : moves) {
    int score = -minimax(b.makeMove(m), depth-1, -beta, -alpha, !isMax);
    if (score >= beta) return beta; // Beta cutoff
    alpha = Math.max(alpha, score);
  }
  return alpha;
}


Performance Optimizations: Transposition table (HashMap) caches board evaluations using Zobrist hashing, preventing redundant calculations when same position reached via different move sequences. Reduces effective search space by additional 40%.

Results: AI searches depth 6 in under 100ms, plays at ~1600 ELO level, 95% legal move accuracy. Swing GUI renders at 60 FPS with piece drag animations.

Java Swing GUI Game Logic AI Algorithm