Kelvin Gevariya/Full-stack · Commerce/1 of 2 slots open

I build productsfrom the first screento the last retry.

Product UI, typed APIs, Stripe Connect flows, multi-tenant data, and the operational details that hold up after launch. End-to-end, by one person.

Headless commerce on MedusaJS & MercurJS — storefront, checkout, payments, and the operational paths that hold up after launch.

Book a call
Stack
MedusaJS · Next.js · Node · Stripe · Razorpay
Surface
UI · API · Commerce · Ops
Based
Remote · GMT+5:30
payment.system
Healthy
Recovery flow · Stripe + Razorpay + MedusaJS
Every event — stripe, razorpay, or commerce — survives a retry, a duplicate, and a malformed payload.
┌─
POST /api/stripe/webhook
├─
verifySignature(req.headers)
└─fail→ 401
├─
idempotency.has(event.id)
└─yes→ 200 no-op
├─
handlers[event.type](payload)
└─
idempotency.commit(event.id)
└─ack→ 200
Recent
last 60s
invoice.paidevt_8421
committed
charge.failedevt_8422
queued
order.placedmdsa_7091
routed
payment.capturedrzp_5512
acked
idempotent
stripe · razorpay · medusa

The product, the data, and the parts that keep both honest.

system.stack
Stack truth

Hover or tap any layer to see how it shows up in product.

UIProduct surfaces, dashboards, admin tools.

Capability slices

Four lanes I ship in. Each one names a concrete artifact, not a buzzword.

Product UI

React · Next App Router

Dashboards, onboarding flows, and admin tools that hold up to daily use.

ArtifactTenant-scoped admin panel with reversible actions

API + Auth

Node · JWT · Zod

Typed handlers, validation, and tenant-aware access checks colocated with the action.

ArtifactRBAC middleware that fails closed

Billing + Payments

Stripe Connect · Razorpay

Stripe Connect and Razorpay flows with signed webhooks, idempotency, and reconciliation. Both shipped in production.

ArtifactIdempotent webhook handler with hourly reconciliation

Headless Commerce

MedusaJS v2 · MercurJS

MedusaJS v2 and MercurJS: storefront APIs, custom pricing engine, order splitting, vendor onboarding, and 8-integration production deployment.

ArtifactCustom pricing engine + order-split module on MedusaJS/MercurJS

Data + Schema Design

Postgres · Prisma · Mongo

Relational schemas, migrations, state transition guards, and audit-ready logs that guarantee system integrity under load.

ArtifactPostgres schema with state-machine transition checks

Operations + Recovery

BullMQ · Structured logs

Queues, retries, and structured logs so the parts that can fail, fail visibly.

ArtifactStalled-queue dashboard with one-click retry
end-to-end · one operator
ui · api · commerce · billing · ops
Case studies

Products where the full stack mattered.

Each one connects the interface, API, data model, and the operational details that make the product usable after launch — not a UI shot, not a backend note.

Commerce / 01Live

Headless B2C Ecommerce Platform

Built end-to-end as sole backend and platform developer on MedusaJS v2. Storefront APIs, admin workflows, Razorpay payment integration, notification delivery (Novu, FCM, ZeptoMail, Twilio SMS), Jio DLT compliance, Redis caching, and AWS S3 asset storage — all live in production.

8 integrations
third-party
Idempotent
payment webhooks
Live
in production
Capability description · NDA · no screenshots
system flow
architecture · not a demo
01
Storefront API
02
Payments
03
Notifications
04
Infrastructure
Stack
MedusaJS v2 · Next.js · PostgreSQL · Razorpay · Redis
Commerce / 02In Progress

Multi-Vendor B2B Marketplace

Built on MercurJS and MedusaJS v2 with custom module development throughout. Configurable pricing engine with vendor-specific rules, order splitting with vendor assignment, finance and invoicing layer, and bulk order import pipeline — in active development.

Custom
pricing engine
Multi-vendor
order splitting
In Progress
active build
Capability description · NDA · no screenshots
system flow
architecture · not a demo
01
Vendor Onboarding
02
Pricing Engine
03
Order Splitting
04
Finance
Stack
MercurJS · MedusaJS v2 · Next.js · PostgreSQL

The product is not finished until these paths are handled.

Stripe vs database
Reconciled

Source-of-truth desync

Consequence

Money is collected, but the local order stays pending. Support ends up reconciling revenue by hand.

Fix mechanism

A reconciliation cron walks pending records, asks Stripe what actually happened, and force-syncs state. The database stays the system of record.

$ pending order reconciled from stripe source
Webhook retries
Guarded

Duplicate event processing

Consequence

A retried webhook can decrement inventory, credit balances, or fire fulfillment more than once.

Fix mechanism

An idempotency log keyed on the provider event id. Duplicates exit early with 200 OK before any business logic runs.

$ duplicate event ignored before mutation
Partial failures
Surfaced

Background job failure

Consequence

Payment succeeds, but the follow-up job (email, fulfillment, sync) silently drops and no one notices.

Fix mechanism

BullMQ workers retry with backoff, then move unresolved jobs to a stalled queue surfaced in admin — failures are visible, not silent.

$ fulfillment job moved to stalled queue
Availability/1 of 2 slots open
Book a call →

Where I have owned the work.

A short version of the roles behind the project work — headless commerce, product UI, APIs, payments, data, and reliability.

Software Engineer — Headless Commerce & Full-Stack

Product company, Remote
Jan 2026 — Present

Sole MedusaJS/MercurJS developer. Shipped a live B2C ecommerce platform end-to-end and actively building a multi-vendor B2B marketplace.

  • B2C platform: MedusaJS v2, Razorpay payments, 8 third-party integrations (Novu, FCM, ZeptoMail, Twilio, S3, Redis, Jio DLT).
  • Custom commerce modules: configurable pricing engine, RBAC, order splitting, finance and invoicing, loyalty points.
  • B2B marketplace on MercurJS: vendor onboarding, order-split integrity, bulk import, inventory management.
  • Deployment and infrastructure ownership end-to-end.

Full-Stack Developer

Zerotime Solutions, Ahmedabad
Jul 2024 — Dec 2025

Owned product features that crossed the frontend and backend: protected routes, billing states, slow pages, and admin workflows.

  • JWT and RBAC flows for payment, admin, and user-facing routes.
  • Stripe Billing lifecycle states — failed charges, subscription updates, recovery.
  • High-load page performance — restructuring server-rendered data and query patterns.

Software Developer

Zerotime Solutions, Ahmedabad
Dec 2023 — Jun 2024

Started closer to the UI, then kept moving toward the API and data problems behind the screens.

  • Reusable React components and product screens for internal workflows.
  • REST API updates for more predictable data loading and error handling.
  • Review standards so product changes shipped with fewer avoidable defects.
contact.online
response < 24h
Contact

Need someone who can build the product and understand the system behind it?

Open to full-stack and headless commerce consulting — MedusaJS, MercurJS, SaaS product systems, APIs, auth, billing, and production recovery paths. A 30-minute call is the fastest way to know if we should work together.