Back to project

Case Study

ExpressPrint3D

Design, custom development, price calculation and online payment, for a 3D printing workshop that wrote every quote by hand.

DesignCustom developmentNext.jsPrice calculationStripe payments3D preview
Industry
3D printing workshop
Stack
Next.js 16 · TypeScript · React 19 · three.js
Year
Contents

The workshop

ExpressPrint3D is a 3D printing workshop in Paris, in the 15th arrondissement. It prints prototypes, functional parts and small runs in PLA, PETG and ABS, for individuals and businesses alike.

The problem

Every order started with a quote written by hand. The customer sent their file, the workshop worked out the price part by part, and the customer waited for that quote before paying. Between sending the file and paying, everything depended on someone being available to reply.

So the workshop needed a site that does that calculation on its own, at any hour, and takes the payment without the workshop stepping in. With one constraint the whole project held to: a price on screen is a price charged. A pricing mistake cannot be fixed with a new quote; the workshop pays for it.

The project in one minute, as I presented it on LinkedIn (in French).

What the customer sees

They drop in their STL file. The part appears in 3D, with its dimensions and volume. They choose the material, the colour and the number of copies, and the price updates with every choice. They pay by card, pick delivery or collection at the workshop, and that's it.

expressprint3d.com/commande
Order page of the ExpressPrint3D site: the summary and the 16 € total on the left, the part in 3D with the material and colour choices on the right
The order page: the part in 3D, the material, the colour, and a price that follows every choice

The file does not leave the customer's computer before the order. Everything is read in their browser, and the file is only sent at the moment of payment.

A price fitted to the workshop's machines

The price of a print depends mostly on two things: the material laid down and the time spent on the machine. The site measures the first directly in the file. The second cannot be read there: it depends on the machine, the material and the shape of the part.

To estimate it, I simulated printing 40 test parts in the software that prepares the prints, on both of the workshop's printer models and in every material: 228 simulations in all. The time calculation is fitted to those results. Before that fitting, the first estimate was 2 to 3 times too short, and up to 5 times on small parts.

One rule that held for the whole project

The machine handles the routine, people handle the exceptions. The site prices on its own everything it can price with certainty, and hands the rest to the workshop.

A payment that only trusts Stripe

The price shown in the browser is for display, nothing more. Before every payment, the server fetches the file, reads it again and redoes the calculation. That price, and only that one, goes to Stripe. A visitor who tampered with the page to pay less would still pay the right price.

An order is only confirmed when Stripe confirms the payment to the site, directly, server to server. The customer landing on the thank-you page does not count: they can close the tab or lose their connection before getting there. And if Stripe sends the same confirmation twice, the workshop receives a single order.

The workshop then gets an email with the order and the file, ready to print.

What the machine does not price

Some parts should never get an automatic price: an unreadable file, a part too large for every machine, or a part under 2 mm, which is almost always a file saved in the wrong unit. For those, the site shows no price. It offers a custom quote, and the request goes to the workshop.

The same goes for what cannot be sold in one click: resin, modelling a part from a sketch, large runs. The customer describes their project, attaches a file if they have one, and the workshop replies with a quote.

expressprint3d.com/devis-sur-mesure
Custom quote page of the ExpressPrint3D site: the three steps on the left, and on the right the form with six types of request
The custom quote: six cases the site does not price on its own, each described in the customer's words
ElementTechnical choice
SiteNext.js 16 and TypeScript, hosted on Vercel
File reading and 3D previewthree.js, in the customer's browser, without sending the file
Price calculationThe same code in the browser and on the server, amounts computed in cents
PaymentStripe Checkout, order confirmed by Stripe's own confirmation
FilesUploaded straight to storage, up to 50 MB per file
EmailsResend, sent from the workshop's domain

Live in nine days

The project was signed on 24 September, and the site was live on 3 October. Payments, the domain and email sending were connected on a video call with the workshop, on its own accounts: Stripe, hosting and the sending address are in its name.

The same work, for your business

You sell a service whose price can be calculated, and every request still goes through a quote written by hand. I can build the site that does that calculation for you and takes the payment. Write to me. ExpressPrint3D's is live: expressprint3d.com.

READY TO GET STARTED?

Let's discuss your project and turn your vision into a tailor-made digital experience.