Skip to content
Ritesh Ranjan
Ritesh Ranjan

Software Engineer – Frontend

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.

Experience
4+ years
Based in
India
Open to
Remote, hybrid & on-site

Experience

Knack Systems

Associate Consultant, Frontend Engineer

Dec 2024 — Present

Remote

  • 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.

46 / 46
tables behind RLS
914
unit tests
38 / 38
pages are Server Components
4
draw calls for a 200-node 3D tree
  • Frontend
  • Client state
  • Backend
  • Data model
  • Infra
  • AI
  • Next.js 16
  • React 19
  • TypeScript
  • Supabase / Postgres
  • TanStack Query
  • three.js
  • MapLibre GL
  • Cloudflare Workers
Private repositoryLive site
Aura's dashboard: net worth, income, expenses and safe-to-spend cards above a cashflow chart, budget burn, recent transactions and travel spend

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.

0
model calls on a 686-job run
638
tests
22
typed tools
425
TypeScript files
  • AI
  • Backend
  • Data model
  • Frontend
  • Infra
  • TypeScript
  • Next.js 15
  • Drizzle / PGlite
  • Ollama
  • Zod
  • Vitest
  • Biome
Private repository
The Job Switch Agent command centre: a row of pipeline counts above a ranked list of actions, with the salary and notice figures blurred

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 storefront home page: dark hero reading 'Commerce at the speed of Hermes' above a row of four featured products

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 in Storybook: sidebar listing Navigation, Commerce and Components groups — Accordion, MegaMenu, FacetPanel, Badge and more

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.

72
UI primitives
72
Storybook stories
440
tests
  • Design systems
  • Frontend
  • React 19
  • TypeScript
  • Tailwind v4
  • Radix UI
  • tsup
  • Storybook
  • Turborepo
LuckyU on a phone, three screens: the catalogue with a Draw a chit button, the 'You've won this' reveal, and the claim form with its claim code

LuckyU

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.

7
SQL migrations
9
routes
33
components
  • Backend
  • Data model
  • Frontend
  • Next.js 15
  • React 19
  • Supabase
  • Postgres RLS
  • Zod
  • TypeScript
HealthDecode upload screen: a choice between English and Hindi above a drop zone for a lab report PDF

HealthDecode

Lab reports explained in plain English or Hindi.

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.

2
languages
4
serverless functions
  • AI
  • Frontend
  • Infra
  • Vite
  • React
  • TypeScript
  • Cloudflare Pages Functions
  • Gemini API
promptOS web app: a wordy prompt beside its shorter rewrite, with a token count on each side

promptOS

A prompt improver with no model and no network.

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.

0
network calls
5
AI sites supported
20
tests
  • Frontend
  • AI
  • TypeScript
  • Next.js
  • Chrome MV3

Tech stack

Languages
  • TypeScript
  • JavaScript
  • HTML5
  • CSS3
  • Sass / SCSS
  • SQL
Frontend
  • React
  • Next.js
  • Angular
  • TanStack Query
  • Zustand
  • NgRx
  • RxJS

App Router & RSC · SSR / ISR · Micro-frontends

UI & design systems
  • Tailwind CSS
  • shadcn/ui
  • Storybook
  • Angular Material

Design tokens · Theming · WCAG accessibility · Responsive design

Backend & data
  • Node.js
  • PostgreSQL
  • Supabase
  • Drizzle
  • GraphQL
  • MySQL

REST APIs · Schema design & migrations · Row-level security

AI engineering
  • OpenAI API
  • Claude API
  • MCP
  • Ollama

LLM product features · Agentic workflows · Structured output · Prompt engineering · Prompt-injection defence

AI-assisted development
  • Claude Code

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
  • Playwright
  • GitLab CI
  • Jenkins
  • Azure 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.