Profile

Chris McBee

Full-Stack Web Developer

Profile headshot

Chris McBee

Full-Stack Web Developer

Des Plaines, IL (Chicagoland, NW Suburbs)

Full-stack web developer and architect with a track record of designing scalable applications, leading DevOps initiatives, and driving AI integration across development workflows.

Projects

  • ClickClinicals

    2026

    Next.js CRUD app built on Azure infrastructure.

    • Next.js
    • Tailwind
    • Stripe
    • Azure
    • API

    View details →

  • ClickClinicals

    2026
    Next.jsTailwindStripeAzureAPILive site ↗

    This app provides students with a secure account that they can use to seek placement in a clinical setting. CRUD actions are handled using server-side API routes that communicate with the microservice endpoints.

    • Authentication against Entra, using signed JWT stored client-side (custom, no library used)
    • Login support using One Time Passcode
    • Protected routes handled via middleware auth checks
    • Custom checkout flow using `stripe-js` library
    • Custom React forms and elements using dynamic data from various microservices
    • Context hooks to handle various pieces of data across distinct components
  • Dynamic Branding of SPA

    2026

    This was a solution to providing branding assets and data to a Next.js app in order to dynamically brand the app.

    • Drupal
    • Next.js
    • Azure
    • Redis
    • Key Vault
    • Function App
    • Blob Storage
    • Front Door
    • App Service

    View details →

  • Dynamic Branding of SPA

    2026
    DrupalNext.jsAzureRedisKey VaultFunction AppBlob StorageFront DoorApp ServiceLive site ↗

    Branding data lives in 30+ distinct partner Drupal sites. The goal was to have a single Next.js app branded accordingly based on the request path. To accomplish, I created a decoupled sync tool using an isolated worker model Function App written in C# on Azure. This Function App listens for a webhook request from Drupal when branding data is changed on the Drupal site. When triggered the Function App then creates a secure connection using OAuth with the Drupal site and ingests the branding data to then be stored in Blob Storage (binary assets) and Redis. Next.js can then consume the proper branding data.

    • Drupal Form API used for the branding configuration form
    • Uses Drupal Queue Worker on form save to enqueue the Guzzle HTTP request to the Function App's webhook
    • OAuth used to authenticate Function App with Drupal instance
    • Drupal custom RESTful API to provide endpoint for Function App to ingest data
    • Binaries are stored in Blob Storage, the rest in Redis
  • Study Next

    2024

    Drupal site built around Algolia search for 1300+ online courses.

    • Drupal
    • Algolia
    • Pantheon
    • API

    View details →

  • Study Next

    2024
    DrupalAlgoliaPantheonAPILive site ↗

    This sites purpose is to be a resource to potential students looking for specific online courses. Courses are stored in a headless Drupal instance and are synced to this site via OAuth and JSON:API to be subsequently indexed and used by the Agolia-powered search.

    • Uses Algolia's JavaScript integration within a custom Drupal module
  • Melbourne Business School

    2023

    Drupal site built for Melbourne Business School in Australia using Drupal Commerce to accept payments.

    • Drupal
    • Drupal Commerce
    • Pantheon

    View details →

  • Melbourne Business School

    2023
    DrupalDrupal CommercePantheonLive site ↗

  • Saint Joseph's College of Maine

    2021

    Drupal 10 (soon to be 11) site for a college in Maine. Custom theme and module development, zip code qualification and 3rd party integrations.

    • Drupal
    • API
    • Pantheon

    View details →

  • Saint Joseph's College of Maine

    2021
    DrupalAPIPantheonLive site ↗

    This site was built from the ground up to support the college's online ABSN program. Certain unique requirements made for interesting work. One example is that only prospective students from the region could apply, so they needed a way to validate by zip code. Leverage the client-side validation library using remote validation to an API we created to validate the users entered zip code against the region restrictions defined in the Term for the given course. If outside an acceptable region, field level validation errors and the user is presented with a modal explaining the issue.

    • Custom theme development
    • Custom module development
  • Batch Update Script

    2021

    • Golang
    • Git

    View details →

  • Batch Update Script

    2021
    GolangGit

  • Network UPS Tools (NUT) Controller

    2026

    Using a Raspberry Pi 3+ with Debian lite installed, it serves as the controller and communicator with the UPS and attached devices

    • Bash
    • Debian
    • Raspberry Pi
    • Home Assistant

    View details →

  • Network UPS Tools (NUT) Controller

    2026
    BashDebianRaspberry PiHome Assistant

    While native NUT provides acceptable configuration, it does not provide finer grain control such as waiting until the UPS recharges to a certain percentage before powering devices back on. That is what this script was meant to solve.

    • RPi runs this script as a service with a USB connection to the UPS for driver control
    • When power outage occurs, wait 60 seconds before initiating power down of devices
    • After 60 seconds start shutting devices down using SSH `shutdown` command
    • RPi stays running along with the UPS until UPS reaches 50%. Script will shut down UPS when under 50% charge
    • Power restored, RPi starts up and checks the status of the UPS, polling current charge and how long power has been restored
    • After 10 minutes of stable power and the UPS charged to 90%, start to power on devices
    • Integrated with Home Assistant to provide notifications and check UPS state
  • Drupal 7 Migrations

    2021

    Migrated 25+ Drupal 7 sites to Drupal 9 creating an easier editing experience, providing more configuration and unifying the underlying codebase.

    • Drupal
    • Drupal Migrate
    • Pantheon

    View details →

  • Drupal 7 Migrations

    2021
    DrupalDrupal MigratePantheon

    • Led planning meetings across departments to gather requirements, pain-points of the current D7 sites and understand the business model
    • Developed a component-based, drag-n-drop editing system using Paragraphs and Layout Paragraphs
    • UI components are highly configurable from the edit area
    • Custom migration scripts to bring over unique content
    • Created an upstream repo that all migrated sites are based on. Core updates, composer package updates, general scaffold files, etc are managed here, then this upstream is merged into individual sites
    • Various custom configuration areas were created where they were hardcoded in D7
    • Included theming kit was provided to developers to rapidly start theming new sites using the new component-based system
  • Magento 1 Migrations

    2017

    • Magento
    • Data Migration Tool

    View details →

  • Magento 1 Migrations

    2017
    MagentoData Migration Tool

  • Warelight

    2026

    Very bare-bones site that I was brought into to assist with easing the page editing process

    • WordPress
    • Elementor
    • Google Tag Manager

    View details →

  • Warelight

    2026
    WordPressElementorGoogle Tag ManagerLive site ↗

    The WARELIGHT brand and product line was established as a high quality, high-value, energy efficient, lighting fixture source for industrial, commercial, architectural, municipal and residential applications. This project involved a re-theme (no redesign) along with the removal of Elementor in favor of native Gutenberg blocks. The goal here was not to change the design, but to make the site easier for the client to manage on their own. They did not like the Elementor interface being separate from the WordPress native editor, so the plan was to re-theme the site to replace Elementor with native Gutenberg blocks. This was successful and the client is now able to manage the site on their own without any issues.

    • Three custom plugins to replace Elementor functionality with native Gutenberg blocks
    • Custom theme development to match the existing design
    • Various content updates and adjustments to ensure a smooth transition from Elementor to Gutenberg
    • Migrated hosting and domain management for easier client access and control
  • Warehouse Lighting

    2026

    Provided basic maintenance to existing site, front-end changes and checkout updates

    • Shopify
    • Google Tag Manager

    View details →

  • Warehouse Lighting

    2026
    ShopifyGoogle Tag ManagerLive site ↗

    Warehouse Lighting is a national supplier of commercial and industrial lighting solutions. Handled on-going maintenance, bug fixes, theme updates, new feature development and third-party integrations for their Shopify store.

    • Converted to a 1-step checkout page
    • Migrated custom checkout JavaScript code to Custom Pixels
    • Maintained and updated 3rd-party form integration (Jotform)
    • Various template updates
    • Custom events via dataLayer along with Google Tag Manager configuration/setup
  • Luxor Workspaces

    2018

    Luxor Workspaces, a division of EBSCO,

    • Magento
    • API
    • Google Tag Manager

    View details →

  • Luxor Workspaces

    2018
    MagentoAPIGoogle Tag Manager

    Luxor is a Chicago-based manufacturer of AV carts, mobile furniture, and workspace solutions. We assisted in the development and launch of their Adobe Commerce (Magento 2) B2B eCommerce solution. The project involved deep Adobe Commerce (Magento) customization — dealer-specific pricing modules, a custom B2B quote workflow, and REST API integrations with their ERP system to keep inventory and pricing in sync across thousands of SKUs.

    • Data migration from the old website into Adobe Commerce (Magento 2)
    • Various theme updates to support new content
    • Imported and configured all products
    • Custom module to provide dealer support for product assets