Skip to content
← Portfolio

Team Gearflow

Supplier ordering and inventory over a 44-entity Prisma domain, plus a framework migration.

Project
Web application
Date
Stack
Remix, TypeScript, Prisma, SQLite, Fly.io
Team Gearflow

At a glance

  • Role: Contract senior full-stack engineer, April 2023–February 2024.
  • Stack: React, Remix, TypeScript, Prisma, SQLite, LiteFS and Fly.io.
  • Outcome: Built supplier ordering and inventory and migrated routes to Remix v2; 368 of 1,081 main-branch commits from April to November 2023.
Team Gear Flow dashboard showing order, shipment, and time-to-ship metrics alongside a First Orders Shipped list, populated with synthetic demo data
Team Gear Flow store Designs tab showing decoration design cards tagged with DTG/DT print methods and placements like left-hip and left-chest
Team Gear Flow Production to Shipping view showing a grid of numbered shipping bins for order fulfillment
Team Gear Flow Organizations admin screen showing org settings, default revenue share, and sales rep assignments

Key features

Multi-app monorepo

Two Remix apps, the internal Flow production tool and a customer-facing rep portal, divide the work across the order lifecycle. They share conventions and tooling in one monorepo instead of duplicating the setup across separate repositories.

Supplier ordering and inventory

I built the supplier side of the order lifecycle. That starts in the schema: the relations that tie a supplier to its products and each product to its variants, the link from a supplier order to the product items on it, and the order status model. On top of that sit the supplier order creation and connection flow, the supplier picker UI, and the seed data the team develops against. I was the second-largest contributor to this area after the founder, with 18 of its 26 commits across roughly 28 of the 75 files it touched.

Remix v2 migration

Remix v2 changed the loader and action conventions every route depends on. I worked through dozens of routes across accounting, production, orders, and suppliers, correcting the TypeScript typing and moving each route onto the new conventions, so the monorepo ended up on one current set of route conventions rather than a mix of two.

Distributed SQLite

LiteFS replicates SQLite across Fly.io instances (primary region dfw, Dallas Fort Worth), giving the app distributed read access without the operational overhead of a traditional clustered database.

Architecture

Frontend and app layer: Two Remix applications written in TypeScript: the internal Flow app and a customer-facing rep portal.

Supplier ordering layer: Supplier, product, and variant relations, supplier orders and their product items, and an order status model, all modelled inside the shared Prisma schema and driven from the Remix apps.

Data layer: Prisma models a 44-entity domain in SQLite, replicated with LiteFS.

Infrastructure: The monorepo deploys to Fly.io. LiteFS distributes SQLite across regions, with dfw (Dallas Fort Worth) as the primary region.

Hiring for a senior full-stack role?