Adoptable dog NFT marketplace to raise funds for shelters and rescues.
Every year over three millions dogs are surrendered to animals shelters. Approximately 10% of those dogs are ultimately euthanized. Doggos' goal is to raise awareness of available rescue dogs while also raising funds for the shelters that house them.
By "Adopting" (minting an NFT) of a dog, a portion of the purchase price goes directly to the shelter's crypto wallet. Another portion is put into a "gaming" pool where adopters will get some of their funds back based on the length of time the animal is in the shelter (Phase 2). A small percentage is added to a developer wallet to cover costs of hosting and future development.
There are three main parts to Doggos:
Functions: Backend, serverless functions to query the Petfinder.com API to retrieve shelter dogs.
Doggos UI: A React app that displays and handles the adoption (minting) of Dog NFTs.
Smart Contract: A Solidity smart contract that allows for the purchase , minting, and transfer of an NFT and distributes the tokens received.
Tableland: I am using Tableland tables to store data for the project
Tableland was helpful for me to create the Token metadata, and for storing a list of animals and their adopted/minted status. When a dog is minted, or is adopted from the shelter, this data will change. That is why I selected using Tableland vs static metadata files. A future phase of this project will "gamify" dog adoptions and metadata will change based on how long an animal has been in a shelter.
I used OpenZeppelin contracts for the ERC721 Smart Contract, RainbowKit and wagmi libraries for the UI, Tableland Javascript SDK for data access, and Chakra UI for design elements.