Frontend engineer with 4+ years building enterprise SaaS products and web platforms in React, Next.js and TypeScript. I build the design systems and frontend platforms other teams ship on, and own features from architecture to production. I build with Claude Code every day, and every repo carries the spec and tests that keep agent-written code honest.
Architected a backend-agnostic Next.js storefront framework that was adopted as the internal platform for commerce builds, using slot and outlet composition so teams override any page region without forking templates or inheriting upgrade breakage.
Designed its design system of 72 production UI primitives — design tokens, light and dark theming, and full WCAG support across keyboard operability, ARIA and reduced motion — documented in 74 Storybook stories as the single source of truth for consuming teams.
Built the data layer as 7 gateway adapters with a composable normalizer chain and a mock adapter, so the storefront runs offline in development and swaps backends behind one environment flag.
Set the platform's engineering standards — strict TypeScript, Turborepo orchestration and a 706-case Vitest and React Testing Library suite — and wrote the integration guide that onboards new teams.
Shipped Smart Quick Order solo: an LLM-powered bulk-ordering flow that parses free-form input into validated SKUs, cutting order-entry effort by 40% and approved by the client to replace manual entry in their Spartacus storefront.
Migrated the Electrolux B2B storefront to SAP Spartacus and Avantor's legacy ATG frontend to Angular, owning Quick Order end to end and improving PDP render performance by 25% through variant switching and an image normalizer that cut redundant API calls.
Next.js
React
TypeScript
Turborepo
Storybook
SAP Spartacus
Angular
Vitest
Brane Enterprises
SDE 1, Frontend
Sep 2023 — Dec 2024
Hyderabad
Migrated the platform to a micro-frontend architecture with Webpack Module Federation, reducing build and deployment times by 25%.
Built features end to end for a low-code / no-code platform, extracting shared component patterns that consuming teams reused across modules.
Implemented NgRx state management and RxJS-based API integration across platform modules, standardising async data flow and error handling.
Angular
NgRx
RxJS
Webpack Module Federation
TypeScript
Keka HR
Frontend Developer Intern → SDE 1, Frontend
Jan 2022 — Sep 2023
Hyderabad
Built and shipped features across the Workforce, Timesheet and ATS modules of a B2B HRMS platform, owning them from development through deployment.
Designed data-driven FusionCharts dashboards, GPT-powered job description generation, and a drag-and-drop Kanban board for the ATS hiring pipeline.
Reviewed 30+ code submissions per sprint, mentoring junior engineers on review standards and frontend patterns.
Angular
TypeScript
FusionCharts
RxJS
Education
B.Tech, Computer Science and Engineering
Chandigarh Group of Colleges, Chandigarh · 2018 — 2022
Selected work
01
Aura
A personal life OS — four modules on one Postgres schema.
Finance, Travel, Career and a Job Pipeline in a single app, built solo and deployed to Cloudflare Workers. Every table sits behind row-level security, which is why there is no per-entity API layer at all: the client talks to Postgres and the database decides what it is allowed to see.
The dashboard, in production. Finance and Travel read from the same Postgres schema, each table behind row-level security.
02
Job Switch Agent
A local-first job search agent that spends nothing to say no.
Polls ATS boards and a job-alert mailbox, then filters deterministically before any model sees a posting. The language model extracts data; TypeScript decides. It runs entirely on a local Ollama instance, so the pipeline costs nothing to operate — and I built it to run this job search.
The command centre. Every number on it is a stored row plus arithmetic — nothing on the page asks a model anything.
How far I take a product
01
Interface
The part I have the most depth in, and the reason the rest matters.
227 components across Aura's four modules, with every one of its 38 pages a Server Component
A 72-primitive design system published as an installable package, with an enforced file shape
Charts hand-built as inline SVG — no charting library, in either project
02
Client state & data
Where most frontend work actually gets hard.
75 TanStack Query modules; an optimistic Kanban reorder that writes exactly one row
Rollback restores the snapshot verbatim, because undoing a drag field-by-field drifts
Keyboard drag announced to screen readers through dnd-kit's announcement API
03
Backend & data model
Not a second skill bolted on — the same judgement, one layer down.
46 tables, 43 migrations and ~170 RLS policies; RLS is why there is no per-entity API layer
A secrets table with row-level security enabled and zero policies — unreadable by any client query
Drizzle over PGlite, so local development and hosted Postgres share one dialect
04
Delivery & operations
Shipping it, and keeping it inside its budget.
7 Cloudflare cron tiers, plus job-alert ingestion over Cloudflare Email Routing
A 3 MiB Worker script budget enforced by explicit dynamic-import boundaries
three.js nested two boundaries deep, so it costs only the visitor who asks for it
More work
Hermes Commerce
An Alokai- and Spartacus-style storefront template for B2B and B2C commerce.
A template storefront in the mould of Alokai and Spartacus, on Next.js and Medusa v2: one codebase covers B2C shopping and a B2B layer, and pages are composed from typed CMS content blocks, so an editor reshapes a client's home page without a developer touching a component. It runs with no backend at all — a deterministic catalog sits behind a typed adapter and swaps to a real instance on one environment variable. The B2B layer carries org hierarchies, cost centres, spend limits, multi-level cart approval and RFQ negotiation over a frozen cart.
336
tests, plus 4 E2E specs
11
decision records
16
App Router routes
Frontend
Client state
Data model
Next.js 15
React 19
TypeScript
TanStack Query
Zustand
Playwright
Private repository
StadiumX
Live cricket as a 3D reconstruction, at 50 KB an over.
Every ball of a live match rendered inside a model of the actual venue — trajectories synthesised from ball-by-ball event data rather than proprietary tracking, and labelled honestly in the UI as a reconstruction. Built for fans on Indian mobile data: about a megabyte an hour against a video stream's gigabyte.
120
tests
4
data providers behind one interface
13
routes
Frontend
Client state
Backend
Next.js 15
three.js
React Three Fiber
TypeScript
SSE
Zustand
Private repository
storefront-ui
A publishable design-system package for commerce frontends.
An open-source UI and theming package for Next.js storefronts, built so a team can compose and override without forking a template and inheriting its upgrade breakage. It deliberately never fetches data, never assumes routing and never talks to a backend — the non-goals are written down and enforced in review.
A giveaway app where the public key cannot read the odds.
A mobile-first draw app where every entry wins something. The interesting part is the security posture: a migration revokes the anonymous role's table access and grants back only display columns, so the public key that reaches every browser cannot read prize tier or remaining stock even if the query asks for them. Draw fairness and claim idempotency are enforced in Postgres, not in the client.
Upload a medical lab report and get every value explained in language a patient can act on — on screen and as a downloadable PDF. No accounts, no database, no history kept. Model output is constrained to a schema rather than parsed out of prose, and the whole thing runs on Cloudflare Pages Functions.
Rewrites and structures prompts entirely on-device — deterministic TypeScript, regex and curated word lists, with no API key and no request leaving the page. Ships as a web app and as a browser extension that injects itself into ChatGPT, Claude, Gemini, Perplexity and Cursor.
Agentic coding · AI code review · AI-assisted debugging · Spec-driven development (CLAUDE.md)
Build & performance
Vite
Webpack
Turborepo
Module Federation · Code splitting · Lazy loading · Tree shaking · Caching · Core Web Vitals
Testing & delivery
Vitest
Jest
Testing Library
Cypress
PPlaywright
GitLab CI
Jenkins
AAzure DevOps
Cloudflare Workers
Vercel
How I work
Decisions get written down while they are still fresh.
A 3,445-line decision log in Aura; 81 numbered entries in Job Switch Agent.
A coding agent makes me faster. It does not make the decisions.
Every project on this site was built with Claude Code, working from a CLAUDE.md spec checked into its repo. On this site, the rules an agent must not break — never mixing employer and personal figures — are tests, not reminders.
Architecture boundaries belong in the linter, not in a convention nobody remembers.
Importing a model package into the polling app is a build error, verified by adding one on purpose.
A model produces data; code makes the decision.
The job extractor has no verdict field, so a hostile posting has nowhere to put one.
Numbers on a page should be reproducible by whoever doubts them.
Every figure on this site was counted from source, and the method is recorded alongside it.
I would rather state a limitation than have an interviewer find it.
Job Switch Agent's match score is hand-tuned against a sample of 30. That is not an evaluation, and I say so.
Contact
What I’m looking for
A senior frontend role where I own features end to end. I’m glad to carry full-stack scope — schema, API and deploy — on the products I work on, and the work above is the evidence that I already do.
Open to remote roles, and to hybrid or on-site roles in Hyderabad, Bangalore, Pune or Delhi NCR. If you’re hiring, or just want to talk about something here, email is the fastest way to reach me.