The Blazor app that came first (and why we left it)
Before there was a Go rewrite, there was a working product. NFTMixer (.NET) is the original generative-NFT builder — C#/.NET 6, Blazor Server, a multi-project Dockerized solution — and it is worth keeping in the story precisely because the rewrite only makes sense against it.
What it got right
It nailed the domain model: layered art flows through sources → assets → variants → a node graph, then generates PNGs plus metadata. That pipeline was sound enough that the rewrite kept it wholesale. The product worked; people used it.
Where it fell short
The interesting engineering lesson is in the defects, catalogued honestly rather than swept aside:
- "Authentication" that didn't authenticate — the server trusted whatever wallet the browser named.
- An unauthenticated database-dump endpoint.
- A live API key committed to the repository.
- Sessions that never expired, held in an in-memory map with an empty cleanup method.
None of those are exotic; they're the ordinary erosion that accumulates in a
shipping app. Naming them is what turned "rewrite for the language" into "rewrite
for correctness." The successor, nftmixer-go, exists to keep the model and
drop the debt.