Inspiration

As lead developer for The Skeleton Crew, an NFT collection that launched on Solana on Oct 1, we had a need for a utility that allowed us to work quickly between design and development to define how our collection looked and worked. The system worked quite well for us, and it felt against our ethos to not share it with the world.

We also recognize that there are many extremely talented artists who have yet to enter the blockchain space simply because they don't have the technical know-how to execute such a project. The Skeleton Crew has been working directly with independent artists to airdrop their work to our community and get them exposure. This feels like the next step to enabling those same artists to thrive on Solana.

Finally, we were inspired by Raj Gokal's tweets in the early days of our project, to think bigger, to keep shipping, and to lift up everyone in the space.

What it does

One of the best ways to get an idea of what the tool is capable of is to read our tweet thread here: https://twitter.com/skeletoncrewrip/status/1443582686698696704?s=20

The tool is web-based, built with usability in mind. To create an NFT collection with Treat Toolbox, you would:

  • Create a User Group (the team and each user's wallet address specified in metadata later for royalties)
  • Create a Project (ex. The Skeleton Crew)
  • Create a Drop for that Project (ex. Skeleton Crew: First Shift, 6666 NFTs, 10/1 @ 5PM)
  • Create a set of Traits for the NFTs (ex. Background, Skull, Eyes, Mouth, Headgear)
  • Create a set of possible values for those Traits and their rarities (ex. Background: Red 10%, Blue 30%, Green 60%)
  • Upload the layered artwork for those values (ex. BG_Red.png, BG_Blue.png)
  • Run off a set of composites that takes into account all of the above. You will end up with 6666 composite PNGs made up of each of the layers you uploaded, with appearance mirroring the rarity you specified.
  • If happy with the outcome, you can then export that composite group to a zip file that contains everything you need to mint with Metaplex's Candy Machine (ex. 0.png, 0.json, 1.png, 1.json... 6666.png, 6666.json).

Some of the more advanced features the tool is capable of include:

  • Duplicate Detection: making sure that two visually equivalent NFTs are not possible in the same collection
  • Art Conflict Resolution: sometimes its hard to create a collection from layered PNGs where there aren't at least a few traits that don't work well together. Normally you would have to do something janky or hack together some custom code. Treat Toolbox lets you say, directly in our UI console, "Sunglasses and Laser Eyes can never appear together in the same NFT").
  • Companion Artwork: sometimes it's necessary to split the same trait across two different layers in a composition. (Imagine horns where the right horn is close to you, but the left horn is behind a hat). Treat Toolbox allows for this.
  • "Composite Playground": a way for artists to combine traits in any way they like by hand within the system to see possible NFT outcomes.
  • Metadata-only Traits: Names, for ex., are unique for every NFT, and have no visual component. We created a special type of trait for this use case.

How we built it

The app is built with Next.js/React and TypeScript. On the backend, we are utilizing Firebase for the data and file storage. Firebase was chosen because of its easy to setup local emulators which provide everything needed for teams to get started using Treat Toolbox right away.

Challenges we ran into

Time was the largest factor :) I was building this as a solo developer, while also helping with the marketing, social, and technical aspects of our own launched collection in the run up to our mint date.

Another challenge was that everything was a moving target, including Metaplex Candy Machine, and the NFT ecosystem which really took off mid-development. When we started the project, there was little to no documentation about how Candy Machine worked, and it was easy to hit obscure errors with our generated JSON files that were difficult to debug.

Accomplishments that we're proud of

On the product side, one thing I'm proud of is the usability that we achieved with the tool. Generative art has a ton of variables, and it's easy to create a UI that is overly cumbersome.

I'm also happy that we went the extra mile on things like conflict resolution. After building the feature, we saw other NFT projects launch with issues in their final art that could have been resolved using our tool.

Making this open-source in the hopes that independent artists can find new sustainable revenue streams through NFTs is what makes us most proud though.

What we learned

The Solana ecosystem is incredibly welcoming, and there is a real need for a tool of this nature. We spoke with a number of NFT project leads who had cobbled together their own shell scripts to try to generate their art, and they all gave invaluable feedback. Jordan from Metaplex was reaching out to us with teams that were hoping to use the tool before we had a chance to open source it.

What's next for Treat Toolbox

Where we'd like to take this next:

  • Create a hosted service so that it's even easier for artists to take advantage of Treat Toolbox (no code or setup steps necessary on their part)
  • Build features to cover more use cases. For ex. not all collections come from layered art, some are generated through other means. We could provide web hooks that would allow someone to create art on the fly using their own processes (ex. something like Frakt or GAN/AI based art)
  • Implement Web3 features: let users connect a wallet, and mint an NFT from their collection directly.
  • Add features for performing airdrops - something we've been doing a lot of through the Skeleton Crew's #31daysofairdrops campaign.

Built With

+ 135 more
Share this project:

Updates