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.
The product, the data, and the parts that keep both honest.
Hover or tap any layer to see how it shows up in product.
UIProduct surfaces, dashboards, admin tools.
Four lanes I ship in. Each one names a concrete artifact, not a buzzword.
Product UI
React · Next App RouterDashboards, onboarding flows, and admin tools that hold up to daily use.
API + Auth
Node · JWT · ZodTyped handlers, validation, and tenant-aware access checks colocated with the action.
Billing + Payments
Stripe Connect · RazorpayStripe Connect and Razorpay flows with signed webhooks, idempotency, and reconciliation. Both shipped in production.
Headless Commerce
MedusaJS v2 · MercurJSMedusaJS v2 and MercurJS: storefront APIs, custom pricing engine, order splitting, vendor onboarding, and 8-integration production deployment.
Data + Schema Design
Postgres · Prisma · MongoRelational schemas, migrations, state transition guards, and audit-ready logs that guarantee system integrity under load.
Operations + Recovery
BullMQ · Structured logsQueues, retries, and structured logs so the parts that can fail, fail visibly.
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.
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.
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.
The product is not finished until these paths are handled.
Source-of-truth desync
Money is collected, but the local order stays pending. Support ends up reconciling revenue by hand.
A reconciliation cron walks pending records, asks Stripe what actually happened, and force-syncs state. The database stays the system of record.
Duplicate event processing
A retried webhook can decrement inventory, credit balances, or fire fulfillment more than once.
An idempotency log keyed on the provider event id. Duplicates exit early with 200 OK before any business logic runs.
Background job failure
Payment succeeds, but the follow-up job (email, fulfillment, sync) silently drops and no one notices.
BullMQ workers retry with backoff, then move unresolved jobs to a stalled queue surfaced in admin — failures are visible, not silent.
Notes from building.
Short essays on product engineering, frontend decisions, backend tradeoffs, and the parts of SaaS work that only show up after launch.
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
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
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
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.
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.