Inspiration

I was inspired by several artist friends who are making and selling fine art NFTs. We were discussing fun ways to promote / showcase their NFTs in an app right about the same time this contest came up, so naturally I thought I'd give it a go.

What it does

This uses the OpenSea API to discover artists and art. Once collections are retrieved from the API, the art is downloaded, cut up into puzzle pieces, and cached in firebase cloud storage, with the image meta data being stored in firebase firestore database.

Additionally, because we have copyright restrictions, I am only showing images that I created and I own, and this gave me an opportunity to try out firebase remote config, which works nicely in this case to hand-pick the list of collections that are available in the app, as well as the order in which they appear.

I've also added analytics and crashlytics for good measure. It isn't recording much of anything interesting yet, but the pieces are in place for me to expand upon.

Hosting is done by firebase, with DNS and email being handled by DreamHost.

How I built it

I used the provided flutter app as a starting point, and I followed along with felangel's flutter_todo and flutter_firestore_todo examples. I also started to make my own api package for OpenSea , and then I saw that someone had built one already, which I'm currently using.

link to copypasteearth's OpenSea package for Dart

Then, there is the image processing, which does a good job of maintaining the aspect ratio correctly in each individual piece, including odd sizes that won't divide evenly into the number of puzzle pieces requested. I've posted an example flutter app that is just the "squaresplitter" on github which should allow people to grab a working version that includes conversion from the imglib.Image to the Flutter widget Image.

link to my squaresplitter utility snippet

Challenges I ran into

Many! Not least of which is getting approval from Apple store. Still hoping this latest revision gets the thumbs up. Doing the App Tracking Transparency and removing anything "commercial" were specific challenges that came up and caused many rejections.

Accomplishments that I'm proud of

I'm super happy just to say I learned a bit of Dart and can build something functional.

What I learned

I learned a ton about Flutter and Dart. I'm definitely liking the Bloc way of building apps with states and events. I also got to start learning Adobe Rush, so thank you for that! A bit of fun trying to make a video was a good challenge for me, and I enjoyed it.

What's next for NFT Puzzle Fun

Well, I hope people grab it an use it for their art projects. OpenSea is certainly encouraging folks to use their API to build stuff, and there is so much each individual artist could do with their own personal app to showcase their work. It would be fun to do something with animation/video NFTs or audio NFTs too.

Built With

+ 3 more
Share this project:

Updates