Snapshot
Corporate site for Bhawal Metal Industries - a manufacturing client. Interactive 3D product scenes via React Three Fiber, with a contact pipeline that goes straight to Nodemailer. Live at bhawalmetal.com.
Context
Client work via Feyntech.AI. The client makes industrial metal components. The previous site was a brochure PDF. The new one had to make the products feel tangible to a buyer who would never visit the factory.
Problem
Two constraints I had to design around:
- Industrial buyers want to see the part. Photos don't quite carry the geometry, and the catalogue is too varied to shoot every angle.
- The conversion event is a quote request, not a sale. The site exists to get the lead form filled out by the right person.
Approach
3D as the product page. Each product line gets a React Three Fiber scene - a rotatable model, ambient + key lighting, an HDRI for material reads. The user can spin it; the geometry sells itself.
Optimized model pipeline. Models go through a Draco-compressed glTF step before they hit the bundle. Without that, the first-paint cost would have killed the page on a B2B buyer's office machine.
Contact-as-conversion. The lead form is the only CTA. It posts straight to a Nodemailer pipeline that emails the sales team. No CRM in the middle for v1 - once the volume justifies it, the integration is a one-day swap.
Build for the buyer's browser. Industrial buyers run old Chrome on Windows machines. I tested on a 4-year-old laptop; the 3D scene had to stay above 30fps there before I shipped it.
Tech
- React 18 + Vite
- React Three Fiber + drei
- Tailwind for the marketing surface
- Express + Nodemailer for the contact pipeline
- Replit deployment, custom domain
What I learned
Three.js is a tool, not a brand statement. On a manufacturing client's site, the 3D scenes earn their weight because they answer a real buyer question ("what does this part look like at the angle I'd weld it from"). Drop them anywhere else and they're a portfolio flex. The product question is always: does this serve the conversion event.
