AZ
All writing
1 min read

The Blazor app that came first (and why we left it)

dotnetblazorcsharpretrospective
Part of the projectNFTMixer (.NET)The original generative-NFT builder — C# / .NET 6, Blazor Server — and the predecessor that motivated the Go rewrite.View project

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.

Back to the projectNFTMixer (.NET)See the full case study and related write-ups.View project