Rebuy

Senior Software Engineer · May 2024–present

One of two engineers who started Rebuy.app, Rebuy's greenfield commerce platform. Primary engineer across every surface: merchant dashboard, customer checkout, the Fastify API, Payouts, and the tooling layer underneath.

Next.js 16React 19TypeScriptFastifyKyselyPostgreSQLTailwindStripeShopifyKubernetesGCP

Payouts

End-to-end financial feature I built at Rebuy.app. Spans the admin console, the merchant store UI, and the Stripe integration for actual money movement — plus a full financial safety layer: idempotency keys so retries don't double-pay, reconciliation against Stripe's own ledger to catch drift, exactly-once guarantees, pre-transfer guards that block a payout when invariants don't hold, and an append-only audit log of every action.

Designed for cross-company use on the wider Rebuy platform.

Carl CLI

Carl is the unified development CLI I authored for rebuy.app. It started as individual scripts I didn't want to lose and grew into the tool every engineer on the platform uses every day. `carl dev` orchestrates roughly 18 containers across 5 Docker Compose stacks — each service (bod-api, bod-shopify-connector, bod-accounts) has its own dedicated Postgres instance and migrator, plus workers, a Cloudflare Tunnel, a Caddy reverse proxy, a Stripe listener, a data seeder, and a test runner — plus three bare-metal Node dev servers and live kubectl contexts pointing at staging and prod.

One command. Onboarding a new engineer is three commands: `git clone`, `carl init`, `carl dev`. Init handles Homebrew, direnv, 1Password CLI, version-manager detection, all five repo clones, and shell configuration. Beyond local dev, Carl owns vulnerability scanning, Helm-based GKE deploys, cluster access, integration and E2E test runners, and an OpenAPI validation pipeline. Ten command categories, ~25 scripts.

@rebuy/tributary

Tributary is an OpenAPI/GraphQL → TypeScript code generator I authored. It takes a spec and produces the entire consumer-side call stack — typed fetchers, Zod schemas, React Query hooks, and a Next.js-aware proxy that lets the same typed function run on either side of the server/client boundary without manual `use server`/`use client` plumbing.

One change to the API, one command, and three separate client repos receive a fully-typed, runtime-validated update. It's the reason our four services don't drift. Private npm package on GCP Artifact Registry.

Shopify-embeddable widget system

Rebuy.app shipped the same customer checkout in two places: first-party on Rebuy.app, and embedded inside merchants' own Shopify storefronts. I authored the embeddable side — a React/Vite app that installs into merchant themes via Liquid and interacts with the API as if it were hosted on Rebuy's own domain.

Same-origin proxy eliminates CORS; Shopify passthrough auth flows through bod-shopify-connector. Updates ship as semver-versioned artifacts to a Google Cloud Storage bucket — merchants pin the version they want in their theme config and update on their own schedule.

@rebuy/ice-age — schema visualizer

I inherited ice-age, Rebuy's Kysely-based migration framework, and became a maintainer. I've added transaction guards, isolation-level support, Pino logging, and improved error handling.

The piece I'm most proud of: an interactive schema visualizer authored end to end — a Preact client bundled with esbuild, invoked via `ice-age visualize`. It renders a pan/zoom diagram of the full DB schema with domain grouping, FK relationship mapping, drift detection, and multi-config federation so schemas from multiple services appear as tabs in one tool.