Skip to content
Sujan Rokad
● Full-stack application developerEnterprise commerceHamilton, Ontario

Sujan Rokad

is full-stack, literally.

I build and debug enterprise B2B and B2C commerce on Microsoft Dynamics 365: React and TypeScript storefronts, C# commerce services, SQL, and the ERP underneath. When something breaks, I don't stop at the layer where it shows up.

Now
Application Developer, Evenica Corp.
Specialty
Microsoft Dynamics 365 Commerce
Range
React → C# → SQL → X++
traceGET /orders?page=1
184 ms
04590135184 ms
  1. L1React
    order-history module
  2. L2CSU
    custom controller
  3. L3CRT
    request handler
  4. L4SQL
    ext view · indexed
  5. L5CDX
    not in path
  6. L6RTS
    not in path
  7. L7F&O
    not in path
Illustrative

The data was synced ahead of time, so the ERP never sees this request.

Fig. 1: The same page, three architectures. Choosing between them is the job.

01The stack

Seven layers down.

Enterprise commerce on Microsoft Dynamics 365 is a distributed system, with React on top and an ERP at the bottom. A request as simple as “show this field on the order page” can touch every layer, and I work across all of them.

  1. L1

    Storefront

    React and TypeScript modules for product, search, cart, checkout, payment and account pages.

    • React
    • TypeScript
    • Commerce SDK
  2. L2

    API layer

    C# endpoints on the Commerce Scale Unit, designed around how many calls a page really needs.

    • C#
    • .NET
    • REST
  3. L3

    Commerce Runtime

    Business logic in C#: request handlers, triggers and extensions to Microsoft's pipeline.

    • C#
    • Extensions
  4. Waterline

    L4

    Channel database

    SQL views, stored procedures and extension tables behind search, pricing, inventory and orders.

    • T-SQL
    • SQL Server
  5. L5

    Data sync

    Scheduled jobs that copy ERP data into the channel database, and fixing them when they stall.

    • CDX
    • Custom jobs
  6. L6

    Real-time calls

    Live calls into the ERP for data that can't wait for the next sync, and knowing when they won't scale.

    • RTS
    • X++
  7. L7

    ERP

    Dynamics 365 Finance & Operations: X++ extensions and the commerce setup everything above depends on.

    • X++
    • D365 F&O

    200 OK: response on its way back up

↔ All

Delivery

Around all of it: Azure DevOps, Git and pipelines, and following my changes from DEV to UAT to production.

  • Azure DevOps
  • Git
  • CI/CD
02Projects

Outside the day job.

Full-stack products I've built on my own, for clients, for school and for myself.

  • Next.js
  • React
  • TypeScript
  • Node.js
  • PostgreSQL
  • GraphQL
  • Drizzle
  • Prisma
  • MongoDB
  • Stripe
  • AWS S3
  • Tailwind CSS
  • Jest
  • Playwright
  • React Native
01 IMAGEUPLOAD · CROP02 CASEMATERIAL · FINISH03 DEVICEPHONE MODELLIVE PRICE$29.00
Tests215
API routes46
Pages24

012025Capstone · Mohawk College

DesignMyCase

A store where the product is your own photo.

A full-stack store for designing and ordering custom phone cases. Shoppers place a photo on a live device mockup, choose model, material and finish while the price updates, and pay with Stripe.

  • Admin dashboard for orders, revenue, customers, the product catalog and moderation of shared designs
  • 215 automated tests (Jest and React Testing Library) plus Playwright end-to-end tests in CI

Next.js 15 · React 19 · TypeScript · PostgreSQL · Better Auth · Stripe · AWS S3 · TanStack Query · Zod · Jest · Playwright

sujan-capstone.vercel.appSource in a private college repository.
HANDWHEELRISING STEMBONNETPN 16 / 25 / 40WEDGE GATEBOREDN 50–600FLOWFACE TO FACE
Valve types9
Material grades10
Industries6

022025–26Client website

Orbis Valves Industries

A valve catalogue that reads like a spec sheet.

The website for an industrial valve manufacturer in India: a product catalogue with specification tables for every valve, a brochure download and inquiry forms.

  • Product and spec pages generated from typed data, so adding a valve means adding one entry
  • Exported as static HTML to run on the client's shared hosting, with full SEO metadata

Next.js · React 19 · TypeScript · Tailwind CSS 4 · Framer Motion · Zod

CuCOPPERZ 29 · 63.546 UGROUP 11 · PERIOD 4SHELLeK2L8M18N1VALENCE · 4SCu2(OH)3ClCOPPER OXYCHLORIDE · CAS 1332-40-7CuO · CuSO4·5H2OOXIDE · SULPHATE
Product lines8
Pages19
Copper salts3

032026Client website

Rovanta

Copper chemistry, presented for business buyers.

The website for a specialty chemical manufacturer in India that makes copper compounds. Product pages carry formulas, CAS numbers and specifications, and buyers can request a quote from any of them.

  • A design system with a copper-and-verdigris palette taken from the products themselves
  • Structured data and per-page metadata so business buyers can find it in search

Next.js 16 · React 19 · TypeScript · Tailwind CSS 4 · Motion · Vercel

00030609151821MONTUEWEDTHUFRI12:00MERIDIAN37.75HOURS · WK 39WEEK 39MON → FRI15-MIN GRID✓ TIMESHEET READY
Minute unit15
Screens7
Migrations17

042026Personal tool

Meridian

Time tracking that ends in a finished timesheet.

A time tracker I built because I kept piecing my Friday timesheet back together from memory. It has a timer, a drag-and-resize week calendar, Google Calendar sync and a screen that prepares the whole week's timesheet.

  • Code-first GraphQL API with typed client operations generated from the schema
  • Exact timestamps stored, with billable quarter-hours derived from them so rounding never loses data

Next.js 16 · TypeScript · GraphQL · Apollo Client · Drizzle ORM · PostgreSQL · Better Auth

Earlier projects2023–2025 · 8Show
  • 2025
    Polaris Store · Multi-vendor store with seller and admin dashboards, order tracking and Stripe payments
    Next.js · Prisma · MongoDB · ZustandLive Code
  • 2024
    RoboCase · The first phone-case designer, the prototype the capstone grew out of
    Next.js 14 · Stripe · TailwindLive Code
  • 2024
    Airbnb clone · Listings, bookings, favourites and authentication
    Next.js 13 · Prisma · MongoDB · NextAuthLive Code
  • 2024
    Night Owl · MERN e-commerce with auth, search and cart
    MongoDB · Express · React · NodeLive Code
  • 2024
    Realtime chat · Mobile chat with presence and live updates
    React Native · FirebaseCode
  • 2024
    Movie browser · Discover and search films from the TMDb API
    React Native · RESTCode
  • 2024
    Competitive programming · Codeforces solutions across difficulty levels
    C++Code
  • 2023
    HTML tag checker · Desktop tool that checks whether HTML tags are balanced
    C# · .NETCode
03Work

Selected client work.

Three examples from production B2B commerce at Evenica. Client names are left out. The strip on each card shows which layers of the stack the work touched.

01B2B distributor

Order history without the ERP round-trip

Every order-history page view made live calls into the ERP, which was slow and put load on the system that runs the business.

  • Mapped each field in the new designs to its source tables in the ERP
  • Designed a sync that copies order, invoice and shipment data into the commerce database
  • Built the C# APIs and React pages that read from it, with paging and filters

The redesign takes the ERP out of the page-load path entirely.

React · C# · SQL · Data sync · X++

02B2B invoice payments

Paying hundreds of invoices in one go

Business customers needed to filter their invoices and pay everything due at once, but one ERP call per invoice doesn't hold up when an account has hundreds.

  • Built invoice filters and a Pay all due flow that adds invoices to the cart in batches
  • Blocked duplicate and pending payments, with limits the business can change without a deploy

Large accounts can clear their balance in one checkout, without an ERP call per invoice.

React · TypeScript · C# · Site Builder

03Industrial distributor

Selling the right replacement product

Discontinued products are replaced by others, sometimes several levels deep. The store had to offer the right replacement, from the right warehouse, the same way the ERP does.

  • Wrote recursive SQL that follows the replacement chain alongside warehouse inventory
  • Exposed it through C# services to product pages, quick order and the cart

Replacement logic in the store matches the ERP, warehouse by warehouse.

SQL · C# · React

How I work

  1. P/01

    Follow it to the bottom.

    A bug that shows up in React might start in a sync job, a stored procedure or a config setting. I keep tracing until I find where it actually lives.

  2. P/02

    Know when not to write code.

    One request to merge identical cart lines turned out to be a single configuration setting. I check what the platform already does before building anything.

  3. P/03

    Count the calls.

    Something that works isn't always something that scales. I think about network calls, query sizes and load before I think about components.

04Experience

Co-op to full-time.

Evenica hired me as a co-op student in 2024, kept me on while I finished school, and brought me on full-time in December 2025.

Download résumé
Evenica, Sep 2024 → today25 months and counting
Co-opPart-time + schoolFull-time
  1. Sep 2024 → now

    Application Developer

    Evenica Corp. · Burlington, ON

    Joined as a co-op, stayed on part-time while finishing school, and went full-time in December 2025. I build and maintain B2B and B2C commerce for Microsoft Dynamics 365 clients across the whole stack, from React to the ERP. I also write estimates, take part in releases, and help newer teammates get up to speed.

  2. 2022 → 2025

    Computer Systems Technology, Software Development

    Mohawk College · Hamilton, ON

    Dean's List. Data structures and algorithms, databases, and web and mobile development. My capstone was DesignMyCase.

Skills

Languages
TypeScript, JavaScript, C#, SQL, X++, Python, Java
Frontend
React, Next.js, Tailwind CSS, SCSS, Accessibility
Backend & data
.NET, REST, GraphQL, Node.js, SQL Server, PostgreSQL, Elasticsearch
Platforms & tools
Dynamics 365 Commerce, Dynamics 365 F&O, Azure DevOps, Git, CI/CD, Vercel, AWS S3, Stripe, Jest, Playwright
05Bedrock

You've reached the bottom of the stack.

Most people stop at the surface. If you need someone who won't, whether for a role, a project, or a bug that crosses too many layers, I'd like to hear about it.