Case study · 2026
An artist site and made-to-order print shop, taken from empty folder to live storefront in three weeks.
Queen Nwaneri is a painter working in Queensland, Australia. Her work had no home online: no way for a visitor to see the collection in one place, and no way to buy anything without a conversation first.
The brief was a site that treats the paintings as the subject rather than the decoration, and that can sell prints on its own, without handing a share of every sale to a marketplace, and without leaving the artist dependent on me to run it.
Selling art prints means selling something that does not exist yet. Every order is printed to size on one of nine materials, and the printer's cost changes with both. A fixed price list would either lose money on large works or overcharge on small ones, and a hand-maintained table would drift out of date the moment the printer revised a rate.
Build a site that shows the collection properly, sells made-to-order prints at a correct margin on every size and material, takes real payments, and can be maintained by the artist afterwards, without a platform subscription or a developer on retainer.
The work ran as one continuous loop rather than four phases with gates. Thirty-five releases went out across three weeks, each one deployed and reviewed against the real thing on a real screen. Two of those releases removed a feature: the shop came out when the artist wanted the focus back on the paintings, then returned in a quieter form once the browsing experience held its own. Shipping in small pieces is what made that reversible.
There was no team to hand things to. The value of that is not speed. It is that the person choosing how the print configurator should feel is the same person who has to make the pricing arithmetic behind it come out right, so neither side can quietly make the other one impossible.
Set what the site had to do: show the work with dignity, sell prints without a storefront platform, and stay editable by the artist afterwards.
Designed the browsing model, the print configurator, and the theme system, then built them: the same person holding the decision and the consequence.
Derived print pricing from the printer's real quote sheets so every size and material prices correctly without a hand-maintained table.
Payments, contact and newsletter as serverless functions, then a written maintenance guide so the site outlives my involvement.
The hero is a single work at full bleed with a translucent card over it, so the first thing a visitor meets is paint, not chrome. The wordmark is set as text rather than a logo image so it stays crisp and readable at any size.
Work is grouped into the artist's own series (Unstructured Thoughts, Portrait Studies, The Outsider), each with its own note, rather than flattened into an undifferentiated gallery. Filters for Available and Archive keep sold work visible as a body of work instead of deleting it.
Deep olive is the default ground, with light and dark variants that keep contrast on both. The olive was retuned across several passes against the actual artwork rather than picked once from a palette.
Print buyers do not know what 310gsm cotton rag is. Materials carry plain-English descriptions, size is a dropdown priced in place, and the border allowance for framing is stated up front, so the decision is informed before the cart, not after.
Originals grouped by series, each with the artist's own note. Sold work stays visible under Archive.
Every available work can be ordered as a print: eight sizes across nine materials, priced per work.
The obvious build is a price table: every artwork, every size, every material, typed in by hand. Eleven works across eight sizes and nine materials is roughly eight hundred numbers, and every one of them is wrong the day the printer changes a rate.
So I worked the other way round. Reading the printer's quote sheets, their cost for eight of the nine media turned out to be exactly a rate multiplied by the bordered area. Checked against more than 150 of their own quoted figures, the worst error was 0.02%. That means any artwork, including one added next year, at any proportion, prices correctly from a rate per material, with no table to maintain.
The ninth material broke the rule. Gallery Floating Acrylic carries a fixed mounting component, so its cost is not area-linear. That one uses quoted costs held per artwork shape, and if a new artwork has a proportion nobody has quoted, the site simply does not offer acrylic for it rather than inventing a number.
What the buyer sees: size and material chosen in place, priced live, with the framing border and shipping stated before the cart.
0.02%
Worst error when the derived model was checked against 150+ of the printer's own quoted figures
8 of 9
Materials that price from a single rate; the ninth is handled explicitly as an exception
0
Prices to maintain by hand when a new artwork is added to the collection
The same thinking carries into fulfilment. Each order records the printer's exact media specification, “Platine Semi-Gloss Cotton Rag 310gsm”, rather than the friendly name shown to the buyer, so an order can be placed with the printer without anyone having to interpret it.
The architecture is deliberately, almost stubbornly simple: one HTML file holding the styles, the data and the whole app, with no build step. That was a choice about who maintains this after I leave. An artist can open one file, change a price or add a painting, and push, with no toolchain to install and nothing to compile. The constraint that usually costs you flexibility is the one that makes handover real.
Payments, the contact form and the newsletter run as serverless functions. Each one degrades honestly rather than breaking: if a payment key is absent the checkout returns a clear error instead of crashing, the contact form falls back to the visitor's own mail client, and the PayPal button simply stays hidden. A site the owner cannot break by mis-typing a setting is worth more than one that assumes everything is configured.
Thirty-four of the thirty-five releases here were paired with AI. On its own that number says very little. The same tool produces a maintainable product or an expensive mess depending entirely on who is directing it, and what separated the two here was knowing what good looked like before asking for anything.
A decade of shipping products is what tells you which problems to hand over and which to keep. I gave AI the work it is genuinely stronger at: deriving a cost model from a printer's quote sheet, then testing that model against more than 150 of their own figures. I kept the work that depends on knowing this client and her buyers. That the collection should be grouped into her own series rather than flattened into a grid. That a print buyer needs 310gsm cotton rag explained in plain English before being asked to pay for it. That the whole site should stay in a single file, because the person maintaining it after me is a painter, not an engineer.
Using it responsibly turned out to be unglamorous: I verified. The pricing model was not accepted because it looked convincing, it was accepted because it reproduced the printer's own quoted figures to within 0.02%. Where something could not be verified, it did not ship. Gallery Floating Acrylic broke the pattern, so it is priced from real quotes and withheld entirely for any artwork shape nobody has quoted. Deciding that a system should refuse rather than guess is a product judgement, and it is exactly the kind no tool will make on your behalf.
Every final call was mine. AI is fast, fluent and confident, and it has no stake in whether this artist sells a print next month. Experience is what lets you tell a genuinely good answer from a merely plausible one, and it is the reason a client's idea reached the internet as something she owns and can run herself, rather than something impressive that quietly depends on the person who built it.
The site is live and selling. The collection reads as a body of work rather than a grid; prints are orderable in eight sizes across nine materials at a correct margin on every combination; and payments, enquiries and the studio letter all run without a platform taking a cut.
It shipped with a written maintenance guide covering how to add an artwork, how pricing is derived, which settings live where, and what happens when one is missing. That document is the part I am most confident about: the measure of this project is not that it launched, but that it does not need me.