Brenntag

Global B2B e-commerce, simplified

Senior Full Stack Engineer / Team Lead

Jan 2023 – Apr 2024

Brenntag, the global chemical distributor, sells to its business customers through a B2B e-commerce platform on Salesforce. Its frontend changed fundamentally without a big-bang rewrite. Different regions ran different storefronts: one was a legacy system in maintenance, another became the base for the future. We took that regional frontend and adapted it to a Salesforce backend. A separate backend project handled the mapping between Salesforce and the frontend, and built and synchronized a full-text search index. In about six months we upgraded the whole frontend stack to current versions of React and its tooling, while new features kept going live.

The biggest decision was what not to build. We chose not to develop a BFF or other services in our own team, to avoid accidental complexity. The frontend moved from Google Cloud to static hosting on AWS, served through a CDN, and talks directly to the backend APIs. The result was simpler to maintain, and fast.

To make that possible, I simplified the codebase step by step. I merged a separate component package into the application, replaced hand-written API calls with clients generated from the API specifications, and set up a mock server so the frontend could be built and tested without the backend. I added country and language to the URLs across the application. For security and operability I hardened the frontend with a content security policy and other security headers, and set up error monitoring. Commit conventions and checks in the pipeline kept the code quality consistent across the team.

Halfway through, I took over as team lead. I kept the team moving by clearing impediments, made the architecture decisions, and worked out with the business how functional requirements became an implementation. I designed the APIs together with the backend team, reviewed the team's work, and interviewed new candidates.

Leading did not mean I stopped building. I built core parts of the ordering experience: the cart and checkout, quotes, samples, favorites, global search, the document overview, the customer profile and a chat with customer service. New features went live behind feature flags and were covered by end-to-end tests.

As a Senior Full Stack Engineer and Team Lead, my responsibilities included:

  • Leading the team, from clearing impediments to architecture decisions
  • Adapting an existing frontend to Salesforce and upgrading its stack
  • Simplifying the architecture to a static frontend on AWS that talks directly to the backend APIs
  • Designing APIs together with the backend team
  • Modernizing the codebase with generated API clients, a mock server and multi-country URLs
  • Hardening frontend security with a content security policy and security headers
  • Building core ordering features in TypeScript and React, released behind feature flags
  • Reviewing code, setting team conventions, interviewing candidates and mentoring developers
TypeScriptReactReact QueryReduxViteChakra UIRESTOpenAPISalesforceAWS (S3, CloudFront)GitLab CICypressLaunchDarklySentry

Related work

← Newer projectOlder project →

LET'S BUILD SOMETHING

Whether you're migrating to headless, rescuing a legacy system, or need senior engineering capacity—let's start the conversation.

$start_conversation

info@crafity.com · Randstad, Netherlands