Case Study

East Coast Tinning

Full-stack internal operations platform for a Rhode Island copper cookware restoration business. Built to replace manual spreadsheet workflows.

Role Sole Developer
Stack Vue 3 · Azure · Python
Type Internal Ops Platform
Industry Craft Restoration

01 — The Problem

A craft business running on spreadsheets

East Coast Tinning restores the tin lining inside antique copper cookware — one of the few businesses in the country still doing it. Behind the craft was room for operational improvement: every order, shipment, and customer interaction tracked in spreadsheets. As volume grew, so did the confusion. A new system would help information retrieval and training new employees.

The owner needed something purpose-built — not a generic CRM. That meant understanding the workflow before touching the code.

02 — The Process

Learning the workflow before designing the system

The first step wasn't architecture — it was listening. I mapped the lifecycle of a piece: intake, restoration, packaging, shipment, and invoicing. Consignment pieces follow a different path than standard repairs.

I designed the requirements specification — a 15-table normalized SQL schema covering orders, customers, shipments, payments, and photo attachments in cloud storage.

Development was iterative. After each module shipped, I walked the owner through it in the actual app with real data. He showed me any wrong assumptions I made and had new ideas for features that would help his work.

03 — The Platform

What we built

The final platform covers the full operational surface of the business — from the moment a piece arrives to the moment a check goes out. Eight interconnected modules, all talking to the same data layer.

Order Management

Full lifecycle tracking for standard repair orders — intake, status progression, notes, pricing, and payment status in one view.

Consignment Tracking

Separate workflow for consignment pieces with lot management, piece-level status, and a payout dashboard with automated commission calculations.

Customer Dashboard

Per-customer view with full order history, open balances, consignment activity, and a record of every piece they've ever sent in.

Photo Documentation

Before/after photo uploads stored in Azure Blob Storage, attached at the piece level and accessible throughout the order lifecycle.

UPS WorldShip Integration

SFTP sync that imports shipment data from UPS WorldShip daily — eliminating manual entry for every package that leaves the shop.

QuickBooks Export

CSV export formatted for QuickBooks Desktop import, keeping their accounting workflow intact without requiring a live integration.

Label Printing

In-app label generation for outgoing packages, pre-populated with customer and order data to reduce manual entry at packing time.

Email Notifications

Automated transactional emails triggered by order status changes — keeping customers informed without requiring manual follow-up.

Consignment payout dashboard — live commission calculation

04 — Technical Stack

How it's built

Decisions optimized for a solo developer maintaining the system long-term: managed services, minimal operational overhead.

Frontend Vue 3 (Composition API) · Tailwind CSS · Vite
Backend Azure Functions (Python) · REST API · serverless runtime
Database Azure SQL · 15-table normalized schema · pyodbc
Storage Azure Blob Storage · per-order photo containers
Integrations UPS WorldShip via SFTP · QuickBooks Desktop CSV export
Notifications Azure Communication Services · transactional email
Hosting Azure Static Web Apps (frontend) · Azure Functions (API)

05 — Adapting Mid-Project

The consignment system wasn't in the original scope

Halfway through, the owner mentioned a growing portion of their work was consignment — customers leaving pieces to sell, not restore. It had been tracked in a separate spreadsheet and wasn't in scope.

I built the consignment module as a parallel track inside the existing architecture using the same customer records, photo system, and status logic, but with its own lot structure and a payout dashboard that calculates what's owed to each consignor after commission. Adding it mid-project was the right call.

06 — Outcome

From spreadsheets to a system that works

The platform replaced the spreadsheets entirely. Orders, customers, shipments, accounting exports, and consignment payouts all run through one system — consistent data, less manual entry, a clear audit trail.

The UPS WorldShip SFTP sync eliminated a daily manual import. The QuickBooks CSV export preserved their existing accounting workflow. The consignment payout dashboard turned a calculation that used to take an afternoon into a single screen.

← All work