Paula Klimas
← Portfolio

Tuff Shed

Apr 2024 – Present

The largest and most architecturally complex project in this portfolio is an enterprise monorepo powering the digital presence for Tuff Shed — including their retail website (tuffshed.com), a Home Depot partnership site (888tuffshed.com), a standalone checkout flow, a data analytics dashboard, and several embedded product configurators. This work is ongoing, carried out by a team of 3 engineers, 2 technical product managers, and 2 directors.

Frontend Monorepo

The monorepo is built on Next.js with TypeScript and orchestrated by Turborepo and pnpm workspaces. The team built and maintains a shared UI component library of 75+ components consumed across all applications, along with a shared helpers package that abstracts integrations with Salesforce, Storyblok CMS, Google Maps and Places, and analytics. The system uses Jotai for lightweight state management, Formik and Yup for form validation, and DAPR for inter-service communication.

The architecture keeps six distinct applications aligned through shared packages, consistent TypeScript configuration, and a unified design system built on Tailwind CSS. It’s the kind of codebase where a new teammate can spin up any app and immediately recognize the patterns.

Backend Services

The backend is a .NET 9.0 microservices architecture with 13 services — including a DataMigrationService, NextworldService, SalesforceService, JdeService (for JD Edwards legacy integration), and HomeDepotService — all communicating via DAPR sidecars. Infrastructure runs on Azure with Redis caching, SQL Server and MongoDB databases, and Docker Compose for local development.

The team built RESTful APIs in C# using ASP.NET Core with proper MVC patterns — 28 controllers, DTOs, repository abstraction, and polymorphic domain models with inheritance hierarchies. The Bogus library is used for realistic test data generation, and defensive programming patterns maximize backward compatibility in production hot patches.

Promotions Engine

Beyond the core monorepo, the team designed and maintains a configuration-driven promotion rules engine that powers the company’s discount and offer system. The engine supports six distinct promotion types — percentage-off, free upgrades, buy-X-get-Y, tiered spend thresholds, and location-specific product discounts — all defined declaratively in CSV-based rule files versioned in Git and deployed via CI/CD. The rules span multiple dimensions including building type, product series, and store location, making the system flexible enough to support diverse marketing strategies without code changes.

ERP Migration

As part of the Tuff Shed engagement, the team also initiated a large-scale data cleaning and migration effort to support an ERP implementation with Nextworld. The migration scripts — a collection of Python Jupyter notebooks running on Azure ML compute instances — handled the ETL pipeline for moving fiscal and operational data from JD Edwards into the new system. The work involved reading CSVs from Azure Blob Storage, handling legacy cp1252 character encoding, cleaning over a million GL transaction records across five partitioned files, and processing dimension tables for chart of accounts, suppliers, serial tags, and company structure.

The DataMigrationService in the core monorepo (28 controllers, 40 orchestration classes, and 18 embedded CSV seed files totaling over 1.1 million records) was built to ingest and transform that cleaned data. The JD Edwards-to-Nextworld migration was ultimately canceled when the business relationship with Nextworld soured — but the DataMigrationService remains in place today, serving as the broader data infrastructure for ongoing migration and integration needs across the platform.

A Note on the Change-Machine Project

A change-machine algorithm project completed for the team demonstrates comfort working across paradigms: the same algorithm implemented six different ways in C# and F#, optimizing separately for readability, conciseness, memory efficiency, and scalability — including pure functional approaches using fold/aggregate patterns.