Portfolio

Challenge, solution, trade-offs, and results. Client names omitted; architecture and outcomes are not.

Featured Case Studies

Deeper looks with diagrams, metrics, and lessons learned

More Case Studies

Checkout rules, infrastructure platforms, migrations, and ops tooling

POS Loyalty Marks & Cart Fields

Challenge

A retail team needed associates to apply loyalty “marks,” capture cart fields, and follow up after purchase inside Shopify POS, without slowing the line or relying on back-office workarounds.

Solution

POS tiles, modals, and Lambdas so loyalty marks and cart fields lived in the cashier flow with Admin configuration for product rules.

  1. Built POS UI extensions for home tiles, modals, line-item actions, and post-purchase blocks so the flow lived where cashiers already worked.
  2. Added an Admin link extension on product details so merchandisers could configure product point rules from Admin.
  3. Implemented a supporting Lambda service for mark calculations and persistence the POS UI could call during a sale.
  4. Provisioned the AWS footing with Terraform and CodeBuild specs so POS app deploys stayed repeatable across environments.

Trade-offs

  • Chose POS extensions over a separate loyalty tablet to keep one device in the lane.

Result

  • Loyalty marks applied during live sales
  • Product point rules configurable from Admin
  • Fewer post-sale back-office corrections

Cashiers could apply and record loyalty data in-flow, and product configuration stayed reachable from Admin.

Shopify POS UI ExtensionsAdmin LinksAWS LambdaTerraformRemixTypeScript

B2B Order Sync Into Shopify

Challenge

A B2B operation needed external order payloads turned into accurate Shopify B2B orders, including company locations, catalogs, and price lists, without silent failures or duplicate chaos.

Solution

SQS-triggered Lambda with Zod validation, company/location enrichment, Shopify GraphQL create/reconcile, and response queues for visible failures.

  1. Designed an SQS-triggered Lambda that validates each record with zod schemas and returns batch item failures the AWS way.
  2. Separated concerns into processors, repositories (Prisma/Postgres), Shopify API clients, and mappers so order rules stayed testable.
  3. Resolved company location and catalog pricing before mapping the payload into Shopify GraphQL order input.
  4. On conflicts, updated metafields and cancelled the prior Shopify order before recreating, then published success or user-error results back to a response queue.

Trade-offs

  • Preferred cancel-and-recreate on conflicts over partial silent updates so order truth stayed auditable.

Result

  • External B2B orders landed with location and catalog pricing intact
  • Duplicate and conflict paths became explicit
  • Failures surfaced on a response queue instead of disappearing

External B2B orders landed in Shopify with pricing and location context intact, and failures were visible instead of buried.

Architecture

Sequence
AWS LambdaSQSPrismaPostgreSQLShopify GraphQLTypeScriptZod

Credit Limits & Delivery Rules at Checkout

Challenge

A wholesale-style merchant needed checkout to enforce credit limits and capture delivery dates, rules that native Shopify checkout would not enforce on its own.

Solution

Checkout validation Functions plus delivery-date UI so credit and delivery rules blocked bad orders before payment.

  1. Implemented a cart/checkout validation Function that blocked progress when an order would exceed allowed credit.
  2. Added checkout UI extensions (and POS/delivery companions) so buyers and staff could pick delivery dates in-flow.
  3. Wired theme/app extensions where storefront presentation needed delivery-date messaging.
  4. Deployed the supporting Shopify apps and AWS services with Terraform so validation and delivery tooling stayed environment-consistent.

Trade-offs

  • Enforced rules at checkout (buyer friction) instead of after-order cleanup (ops cost).

Result

  • Over-credit orders blocked before payment
  • Delivery date captured in-flow
  • Ops cleanup for invalid checkouts dropped sharply

Checkout became a control point: bad credit and missing delivery data failed early, before ops had to clean up orders.

Shopify FunctionsCheckout UI ExtensionsTerraformAWS LightsailRemixTypeScript

Class Booking With Checkout Validation

Challenge

The business needed customers to book classes on the storefront and have checkout reject invalid or unavailable dates before payment.

Solution

Theme booking UX with a checkout validator that can block progress when dates are invalid.

  1. Shipped a theme app extension for the class-booking experience on the storefront.
  2. Added a checkout UI extension with API and network access to validate selected dates against live availability rules.
  3. Enabled block_progress so checkout could not continue when validation failed.
  4. Backed the product with ECS/Terraform hosting and CI buildspecs for repeatable app releases.

Trade-offs

  • Used block_progress for safety over soft warnings that buyers ignored.

Result

  • Invalid class dates rejected before payment
  • Bookings and paid orders stayed aligned

Bookings and payments stayed aligned, customers only completed checkout when the date rules passed.

Theme App ExtensionsCheckout UI ExtensionsRemixTerraformECSDocker

POS Custom Pricing & Day Discounts

Challenge

Store teams needed cashiers to override or apply special pricing during a sale, custom price taps and automatic discounts by day, without leaving POS or memorizing back-office discount IDs.

Solution

POS price-tap and date-based discount extensions with Remix/Prisma multi-store configs and Dockerized deploys.

  1. Built POS home tile/modal extensions for a “price tapper” workflow so associates could apply custom prices on eligible products.
  2. Added product-details and home POS extensions for automatic discounts driven by date rules.
  3. Configured Remix apps with Prisma and multi-store Shopify app configs so each merchant environment could deploy cleanly.
  4. Used Docker and CodeBuild (dev/prod) so POS app updates followed the same pipeline as other commerce services.

Trade-offs

  • POS-side overrides instead of only Admin discounts so cashiers could act without ticket latency.

Result

  • Custom pricing became a deliberate POS action
  • Day discounts applied without memorizing discount IDs

Pricing exceptions became a deliberate POS action instead of a risky manual workaround.

Shopify POS UI ExtensionsRemixPrismaDockerCodeBuildTypeScript

Shipping Address Prefill at Checkout

Challenge

An institutional storefront needed checkout to prefill shipping address details so buyers were not retyping known address data on every order.

Solution

Checkout UI extension that prefills known shipping fields for institutional buyers.

  1. Implemented a checkout UI extension targeted at the shipping-address experience.
  2. Loaded the address context Shopify exposes to the extension and applied prefills where the business rules allowed.
  3. Kept the app extension-only (no Admin home UI) so the footprint stayed small and focused on checkout.

Trade-offs

  • Extension-only footprint over a full custom checkout rewrite.

Result

  • Checkout friction reduced for returning institutional buyers
  • No heavyweight checkout fork to maintain

Checkout friction dropped for returning institutional buyers without a heavyweight custom checkout rewrite.

Checkout UI ExtensionsShopifyReact

Modular AWS Infrastructure Platform

Challenge

Teams were recreating VPC, ECS, Lambda, CI/CD, and DNS wiring per project, which made reviews slow and environments drift.

Solution

Shared Terraform modules composed into stage/prod roots with Terraform Cloud branch applies.

  1. Extracted shared Terraform modules for networking, ECS services, Lambdas, pipelines, Route53, and security groups.
  2. Composed environment roots (stage/prod) from those modules instead of copy-pasted resource blocks.
  3. Connected Terraform Cloud so merges to stage/main applied the matching environment.
  4. Documented module inputs/outputs so new services could plug in without reinventing IAM and networking.

Trade-offs

  • Module abstraction cost upfront to stop per-project snowflake VPCs and IAM.

Result

  • Deployment scaffolding time ↓ about 75%
  • Environment drift reduced via shared modules
  • New services started from known-good footing

Infrastructure changes became reviewable PRs, and new services started from a known-good platform instead of a snowflake.

Architecture

System

Lessons learned

Why we chose this

  • Modules + Terraform Cloud over copy-paste roots: reviews stay on diffs that matter.
AWSTerraformTerraform CloudECSLambdaVPCALBCodePipeline

Multi-App Commerce Hosting on ECS

Challenge

Several Shopify apps needed production hosting, but spinning unique stacks per app would explode cost and operational load.

Solution

One AWS footing with a Terraform app map: shared RDS, per-app ECR/ECS/ALB/DNS/pipelines.

  1. Modeled apps as a Terraform map: each entry gets ECR, ECS service, ALB, Route53, and a CodePipeline/CodeBuild path.
  2. Shared one RDS instance and artifact buckets across apps while keeping deploy units independent.
  3. Standardized Docker buildspecs so imagedefinitions and container names followed a predictable naming scheme.
  4. Kept dev and prod roots in parity so promotion meant config and image tags, not redesign.

Trade-offs

  • Shared database for cost vs fully isolated DBs per app; mitigated with clear schema ownership.

Result

  • New Shopify app = Terraform entry + pipeline, not a new architecture project
  • Hosting cost and ops load stayed predictable as app count grew

Adding another Shopify app became a Terraform entry and pipeline, not a new architecture project.

TerraformECSECRALBRDSCodePipelineRoute53Docker

Catalog Rebrand Microservices

Challenge

A large catalog rebrand required importing product data, submitting orders, and fulfilling at volume, work that would overwhelm a single monolith job.

Solution

Import, submit, and fulfillment services with Terraform ECR/container footing and selective manual Lambdas where event-driven deploy fit better.

  1. Split the pipeline into import, submit, and fulfillment microservices with clear ownership of each stage.
  2. Used Terraform to provision ECR and container footing; required images present before apply so deploys did not hang on empty repos.
  3. Kept selected high-churn Lambdas (webhooks, bulk order processing, product handlers) outside Terraform apply where manual/event-driven deploy fit better.
  4. Connected Shopify Admin apps where operators needed visibility into the rebrand workflow.

Trade-offs

  • Split pipeline stages for scale vs operational simplicity of one job.

Result

  • Large catalog volume processed by stage without monolith timeouts
  • Clear boundary between automated infra and intentional manual Lambdas

Catalog and order volume could scale by stage, and infrastructure stayed explicit about what was automated versus intentionally manual.

TerraformECSECRLambdaDockerNode.jsShopify

Lightsail Multi-Service Platform

Challenge

The client needed a full commerce microservice suite without the cost and ops weight of a full VPC/ECS stack for every service.

Solution

Lightsail containers and database for a predictable cost profile across Shopify apps, auth, gateway, admin, and portal.

  1. Chose AWS Lightsail Container Services plus Lightsail Database for fixed pricing and simpler networking.
  2. Defined per-service containers (Shopify apps, delivery/ERP integrations, auth, API gateway, admin, portal) in Terraform.
  3. Sized power/bundles per service so quieter apps stayed on micro while hotter APIs could scale up.
  4. Exposed HTTPS endpoints per service while keeping database connectivity private to the Lightsail network.

Trade-offs

  • Chose Lightsail over full VPC/ECS for cost predictability, accepting fewer networking knobs.

Result

  • Monthly hosting cost became forecastable
  • Services stayed modular without ECS ops weight

The suite stayed modular and deployable with a cost profile the business could predict month to month.

TerraformAWS LightsailDockerNode.jsShopify

Domain Microservices + POS Suite

Challenge

A merchandise operation needed separate domains, users, locations, orders, business rules, plus POS, without freezing the whole platform for every change.

Solution

Gateway, users, locations, orders, and business services with a POS app and Terraform hosting.

  1. Split APIs into gateway, users, locations, orders, and business microservices with independent deploy units.
  2. Built a POS app on top of those services for in-store workflows.
  3. Provisioned AWS hosting with Terraform and Docker/CodeBuild pipelines per service.
  4. Used a Shopify Lambda companion where event hooks needed to bridge Admin/POS events into the domain APIs.

Trade-offs

  • More deploy units for independent domain velocity vs a single API package.

Result

  • Orders could ship without blocking auth or locations
  • POS sat on stable domain APIs instead of a frozen monolith

Teams could ship one domain (for example orders) without blocking auth or locations work.

Node.jsTypeScriptTerraformDockerShopify POSPrisma

Blue-Green Application Releases

Challenge

Production deploys were risky: a bad release could take the live Remix app down before anyone knew the new build was unhealthy.

Solution

Blue/green process slots with health checks before cutover and webhook-driven automation.

  1. Introduced blue and green process slots so the new build could start beside production.
  2. Required health checks on green before any traffic cutover.
  3. Automated the ritual with deploy scripts and webhook/GitHub Action triggers.
  4. Kept rollback as “return to the last known-good slot” instead of an emergency rebuild.

Trade-offs

  • Brief double-capacity during cutover in exchange for safer rollbacks.

Result

  • Deployment time risk ↓ with health-gated cutovers
  • Rollback became return-to-slot, not emergency rebuild
  • Failed releases stopped before customer traffic

Releases became boring, failures stopped at health check, and rollback was practiced, not improvised.

Architecture

Flow
Blue-Green DeployPM2Health ChecksGitHub ActionsRemixNode.js

Event-Driven Commerce Backends

Challenge

Order and catalog side effects (intake, dispatch, fulfillments, inventory sync, reports) needed to scale independently and fail without taking down the whole commerce stack.

Solution

Isolated Lambdas for intake, dispatch, fulfillments, sync, and reporting on EventBridge/SQS triggers.

  1. Modeled each concern as its own Lambda (or small service) with a single job.
  2. Used EventBridge schedules and queue triggers so work arrived as events, not tight coupling.
  3. Applied OOP-friendly service layers inside each function so handlers stayed thin.
  4. Deployed IAM, queues, and functions through shared Terraform modules for consistency.

Trade-offs

  • More functions to observe vs one worker that could cascade failures.

Result

  • One failing report job no longer blocked order intake
  • Side effects scaled independently

Side effects became isolatable: one failing report job no longer blocked order intake.

AWS LambdaEventBridgeSQSDynamoDBTypeScriptNode.js

Media Processing Service

Challenge

The team needed to watermark assets on demand from S3 without building a full media platform.

Solution

Small S3 + Sharp watermark API with health checks and env-driven bucket config.

  1. Built a Node/Express service with a health endpoint and a watermark API.
  2. Pulled source objects from S3, applied text or image watermarks with Sharp, and returned temporary outputs.
  3. Configured region/bucket defaults through environment variables for simple deployment.

Trade-offs

  • Focused watermark service over a full media platform.

Result

  • On-demand watermarking without a heavyweight media stack

Downstream apps could request watermarked assets through a small, focused API.

Node.jsExpressAWS S3Sharp

Commerce Migration Tooling

Challenge

Catalog migrations kept turning into one-off scripts that were hard to rerun safely in prod.

Solution

Dockerized migration templates with CodeBuild promotion paths for catalog moves.

  1. Created a reusable migration template with Docker packaging.
  2. Added CodeBuild specs for dev and prod so the same container path promoted cleanly.
  3. Structured the job so product/catalog transforms could be re-run with clearer inputs and logs.

Trade-offs

  • Template reuse over one-off laptop scripts.

Result

  • Migrations became a repeatable pipeline step
  • Prod runs stopped depending on a single engineer laptop

Migrations became a repeatable pipeline step instead of a laptop-only ritual.

DockerCodeBuildNode.jsShopify

Company CMS Website

Challenge

The company needed a content-editable marketing site without forcing engineers to ship every copy change.

Solution

ApostropheCMS with documented deploy and media workflows for a small marketing team.

  1. Implemented the site on ApostropheCMS with Node and MongoDB.
  2. Set up editor workflows for pages and media.
  3. Documented deployment caveats (favicon/social/media uploads) so launches did not miss manual asset steps.

Trade-offs

  • CMS editability over a fully static site so non-engineers could ship copy.

Result

  • Marketing updated content without engineering tickets for every change
  • Launch checklists caught favicon/social/media gaps

Marketing could update content in CMS while engineering kept deployment predictable.

ApostropheCMSNode.jsMongoDB

How I Build

Object-oriented craft and modular design in day-to-day engineering

Lead by teaching

I transfer judgment through pairing, reviews, and living docs so the team gets faster as it grows, not slower.

Modular by default

I structure code and infrastructure into reusable units, services, modules, and contracts, so new features plug in without rewriting the core.

Boundaries that hold

Handlers stay thin; repositories, mappers, and domain services own the rules. That keeps Lambdas, APIs, and apps testable and easy to reason about.

Document the why

ERDs, infrastructure diagrams, and SRS writing keep stakeholders aligned and give engineers a map before the first PR.

Skills & Technologies

Tools I use to design, build, and operate modern systems

Cloud & DevOps

AWSTerraformServerless ArchitectureECSLightsailLambdaSQSCI/CDDocker

Programming

Node.jsTypeScriptJavaScriptC#PHP

Frameworks

ReactReact NativeRemixNext.jsGraphQLPrismaUnity 2D/3D

CMS & eCommerce

Shopify PlusShopify FunctionsShopify POSWordPressJoomlaApostropheCMS

Leadership

AgileScrumTeam MentoringClient CommunicationArchitecture Docs

Experience

Scale and delivery across commerce platforms and engineering orgs

Director Of Software and Development

Sunrise Integration

Los Angeles, CA - Remote / Hybrid

Retail & apparel brands · Multi-region · Teams of 5-10

Mar 2021 - Present

Lead engineering for enterprise commerce and integration work: architecture, mentoring, and delivery across Shopify Admin/POS/Checkout, AWS, and Terraform. I run cross-functional teams of 5-10 through full SDLC, write SRS/ERDs/infrastructure docs, and keep releases predictable while teaching people to own the systems they ship.

  • Built specialty retail platforms end to end: POS capture apps, associate portals (Next.js + Lambda), Express webhook platforms, cron fleets (exports, pending cleanup, FTP, portal sync), and back-office order tools with Dockerized multi-environment deploys.
  • Shipped Shopify Admin, POS, and Checkout extensions plus Functions for money-path rules (validation, discounts, cart transforms), with domain logic kept server-side instead of UI-only.
  • Designed B2B order sync as SQS/Lambda pipelines with Zod validation, company/location/catalog enrichment, Shopify GraphQL create/reconcile, and idempotent replay paths.
  • Split larger platforms into modular services (gateway, users, locations, orders, inventory, tax, waste) and enforced 3-tier interiors so UI, domain rules, and persistence stop smearing together.
  • Standardized AWS footing with Terraform modules, ECR/container deploys, CodeBuild promotion, blue-green Remix releases, and event-driven workers (EventBridge/SQS/Lambda).
  • Mentored through weekly sharing, pairing, and review-as-teaching; repeatedly pulled delivery 1-2 weeks ahead by clearing ambiguity early with architecture docs.

Lead Engineer

Redko

Remote Contract

Cross-platform mobile · Contract lead

Nov 2020 - Feb 2021

Contract lead on cross-platform mobile product work: React Native delivery, AWS-backed auth/storage, and fast iteration with product owners under tight timelines.

  • Owned React Native feature delivery and performance work across iOS and Android, including platform-specific bug hunts and component refactors.
  • Integrated AWS Cognito, S3, and Amplify so auth, assets, and deploys stopped being one-off laptop setups.
  • Turned product requirements into shippable prototypes and production paths without waiting on a large platform team.
  • Left clearer ownership boundaries so mobile changes did not depend on tribal setup knowledge.

Software Engineering Manager

Melody Publishing

Kaohsiung, Taiwan

EdTech platforms · APAC · Engineering management

Aug 2016 - Nov 2020

Managed engineering for education-technology products: a centralized GraphQL/Mongo backend for internal apps, real-time classroom systems, and the websites that supported them. This is where leading by teaching became the default operating mode.

  • Designed and shipped a centralized Node.js + MongoDB + GraphQL/Mongoose backend that became the shared data platform for internal applications.
  • Led the Interactive Response System for English-language classrooms (Unity 2D/3D + WebSockets), raising measured student engagement by over 30%.
  • Managed engineers through planning, implementation, and release, translating educator goals into concrete technical requirements.
  • Built and maintained WordPress/Joomla and custom theme/plugin sites around the same product ecosystem.
  • Established mentoring and ownership habits that scaled delivery beyond one hero engineer.

Education

Academic background

Bachelor's degree · Information Technology

Colorado Technical University

2019 - 2023

Biology

Anoka-Ramsey Community College

2014 - 2015

Certifications

Credentials

AWS Certified Cloud Practitioner

Amazon Web Services (AWS)

Shopify Foundations Certification

Shopify

Want the fuller story?

Read more about how I work on the About page, or reach out directly.