What We Buy
Ferrous and non-ferrous lists, from copper #1 and insulated wire to cars, appliances, rebar and structural steel, with an Unacceptable Items page so nobody hauls what the yard can't take.
Ferrous · Non-Ferrous · Unacceptable Items
Website + quote backend · by WIIWID
Hub Scrap Metals, LLC has bought ferrous and non-ferrous metal since 2008, with full-service yards in Winchester, VA and Hagerstown, MD. WIIWID built hub-scrap.com to answer what every customer asks before they haul: what do you buy, where are you, when are you open, and how do I reach a buyer.
The site
Contact
Real screenshots of hub-scrap.com, captured from the site's own code.
01For customers
The questions a yard answers on the phone all day, answered on the site: what you buy, where you are, when you're open, what you can't take, and how to get a number.

Also on the site: an About page, a customer testimonials section, and a slim utility bar with the yard's phone and email that tucks away as you scroll.
02From the form to the yard
The form posts to one route handler. It checks the details, drops the spam, then emails the yard and saves the request, both at the same time. Every request is also logged on the server, so the form worked on day one with nothing configured.
Name and email required; phone, nearest yard, material or service, and details optional.
POST /api/quoteEvery field trimmed and length-capped. A bad email comes back as a plain message, not a crash.
QuoteSchema.safeParse(body)A hidden field humans never see. A bot that fills it gets a fake “ok” and nothing else happens.
company: z.string().max(0)Each request goes straight to the yard's inbox through Resend.
emailQuote(record)The same request is stored in a Supabase table, so nothing depends on an inbox.
saveQuote(record)The customer sees a confirmation and can send another. Need an answer now? Call the yard.
{ ok: true }Email and storage switch on with environment variables, so the yard adds them whenever it's ready. The site also carries a leads panel: each request with a status, from new to contacted, quoted, won or lost, plus internal notes.
03Since 2008
Hub Scrap Metals started in 2008 and has grown into the largest scrap metal processor in Northern Virginia. Each yard is a self-contained recycling operation with modern material handlers and certified scales, processing raw scrap into mill-ready material.

Winchester, VA
Headquarters & Shredder
207 Ebert Rd
Winchester, VA 22603
Hagerstown, MD
Scrap Yard
625 North Prospect St
Hagerstown, MD 21740
Does not accept vehicles or non-ferrous metals.

Rail-served
The Winchester yard has direct access to the Winchester & Western Railroad, with interchange connections to both CSX and Norfolk Southern, so retired railcars can roll in for dismantling. Rail service, modern material handlers and certified scales mean the yards move volume fast.
The site's own numbers, as it reads today
04The build
A brand system pulled from the wordmark: charcoal steel for the structure, the red of the “hub” for anything that needs attention, and condensed Oswald caps for everything that needs to shout.
The palette
The type
Industrial details
One file runs the business content
Names, phones, addresses, hours, services and material lists live in lib/site.ts. Change it in one place and it updates everywhere, from the header to the structured data.
export const site = {
name: "Hub Scrap Metals",
legalName: "Hub Scrap Metals, LLC",
email: "info@hub-scrap.com",
established: 2008,
} as const;
export const locations: Location[] = [
{ id: "winchester", role: "Headquarters & Shredder",
phone: "(540) 667-6000", hours: "Mon-Fri 8:00am - 5:00pm · Sat 8:00am - 12:00pm", … },
{ id: "hagerstown", role: "Scrap Yard",
phone: "(301) 790-0046", hours: "Mon-Fri 8:00am - 4:00pm", … },
];
export const ferrousMaterials = ["Prepared & Unprepared Steel", "Cast Iron", …];
export const nonFerrousMaterials = ["Copper #1 & #2", "Insulated Copper Wire", …];Under the hood
Next.js 14 with the App Router, TypeScript and Tailwind CSS, deployed on Vercel with zero configuration. Zod validates the quote form, Resend delivers it, Supabase keeps it. The form works with nothing set up, and each integration switches on with its environment variables.

hub-scrap.com has what they buy, where they are, and the number to call for today's rates.