This project utilizes Streamr to allow users to create decentralized data streams to allow them to play games of chess with other players. Other users can also subscribe to the same stream to spectate the games live. We've also created NFTs that will act as chess pieces which users can use in their games against other users, these NFTs will be purchasable but users can also upload and mint their own pieces, which they can sell, trade and collect.
We utilize Streamr to create the decentralized data streams that users create, subscribe and publish when they're playing their games to send and receive moves. Streamr also knows the times that the moves are played and the player's clocks are updated accordingly, which means they are synchronized on both sides. The front end is built with React using the Ant Design UI library, and it is hosted on IPFS in addition to Skynet, and of the latter, we utilize their resolver skylinks to connect to an ENS domain. The chessboard is built using the React Chessground framework, and any chess logic such as move legality is verified using the Chess.js library. When any game is concluded, the results are published to Web3.Storage for future access. On the NFT side of things, we mint our NFTs to Polygon through NFTPort, but before that happens, we upload NFT images and metadata to NFT.Storage. When an NFT is minted, it is stored in a Moralis database so that we can keep track of it for building the store component.