Inspiration
A few of my friends and I were hiking at Kickapoo Park when we came across a tree with a tiny door at its base. Intrigued, we opened it and found really cool trinkets inside. I got a funky frog standing on a pedestal and that was when I got introduced to Goecaching. This experience coupled with the opportunity to work on a project using Solana lead me to this idea.
What it does
I created an app that allows you to mint an NFT of any image and drops it at the place you are currently located. These NFTS last forever, waiting to be picked up If anyone else ever arrives at this location, they can collect the NFT that you dropped and build their collection. This app allows photographing enthusiasts, artists, or really anyone looking to leave their mark behind to leave collectible photos around the world for others to come enjoy, by walking down the road or climbing a rock face. This app can be used as a way to share experiences with others in a wholesome way while also working as a geographical memory map, tracking your own experiences and your own memories.
How we built it
I used Solana, Swift, JavaScript, and a Flask server that was hosted on AWS as an EC2 instance as my primary tools to create this app. Once one signs up for the app, the Flask server automatically generates a Solana wallet for you and gives you the public key. It immediately opens into the home page where Swift loads a map where all of the nearest pins within a 10 mile radius are all loaded. Then when the app recognizes your location is within 0.1 mile of a pin it allows you to access the image located at that pin which you can then mint for your own wallet. The other option is to create your own NFT at any location you choose to. All of this was done on the Flask server. This was done by storing metadata and off chain assets on Irys, storing NFT ids, ownership information, public keys with flask endpoints.
Challenges we ran into
Some of the issues that were difficult to deal with were transferring local code onto the EC2 instance. There were a bunch of dependency issues that took a long time to sort out. Another issue was uploading assets to Arweave. Even with successful transactions, Arweave never seemed to display the metadata or image. After hours of work I eventually made the switch to Iris gateway.
Accomplishments that we're proud of
I am proud of being able to create this entire ecosystem over 2 days. I have never worked with Solana blockchain and especially never dealt with NFTs. The ability of mint an NFT and effectively store it such that all of its information such as the NFT uuid, geographical location of its inception, name, description and the image may be loaded for any user who opens the app was a complicated task. Further more in a way too make the NFTs more desirable I came up with a unique way to define the rarity of each NFT created by using population density data across the world.
What we learned
I learned so much about NFTs and blockchain. I learned how to mint them, send them to other wallets, and how the blockchain is structured. I learned how to create Flask endpoints, and how to use threading when requests were timing out. I also learned a lot about creating a project with lots of different moving parts which was perhaps the most enjoyable for me.
What's next for NFTgo!
There are a lot of potential improvements that will be added. I want to combine all of the NFTs at the same location and allow the next user to come and scroll through all the options to be able to pick their favourite instead of the current system of dropping a new pin for each NFT created. Additionally I want a system of promoting certain creators to make rare items by a system of maximum creations minted. Another neccessity for the release of this app I need to change a lot of the user databases to deal with more traffic as well as stronger data encryption. Further down the line I hope to use SOL and other cryptocurrencies to be able to even sell certain versions of NFTs created on the app for example well known photographers can sell their original version of well liked NFTs or people can trade limited time offered NFTs. I am excited for the various prospects of NFTgo! in the future!
Built With
- flask
- javascript
- postman
- pyhon
- solana
- swift
Log in or sign up for Devpost to join the conversation.