Share spontaneous moments, triggered by smart contracts! DeReal brings transparency into the life of everyone through their cameras. (P.S You get rewards too!)
DeReal is a decentralized social media platform that aims to bring transparency into users, and people while also incentivizing their good motives. It utilizes the curiosity of general humankind, while also giving them a peep into their favorite influencers' actual day! The way the app works is, once signed up you get notified of events. At any random moment in the day, an event would pop up prompting the user for a photo. After which they have approximately two minutes to click a picture and post it, aka, DeReal.
The app aims to solve the problem of transparency, and acceptance through it. On general social media, people see highlights of other influencers and don't realize how small of a part of their life it represents. They need to understand that it's normal to be without makeup, or spend time getting ready - just Being Real is what is needed!
A decentralized app, that brings the thrill of randomness into people's lives, while appraising their good wishes through incentives offered through brand promotions, and sponsors. It also enables gamification through streaks and NFTs.
Starting with the basics I went with Plain React along with a simple Tailwind library to define the UI components. For the wallet I went with Dynamic SDK, after going through their documentation and their near-perfect Account Abstraction SDK I was able to integrate the wallet successfully. A social media application has to be as smooth as possible, the users should even realize they're on a web3 app. The Dynamic-Biconomy combination helped to abstract out the details for interaction and we were even able to fund the user's activity! So the users get to enjoy DeReal for free!!
This tech fit perfectly well into the product just as I had hoped for. The random time events are calculated on-chain to prevent any bias towards anyone, and this was made using Pyth's solidity SDK. During the deployment they have an initial random time event organized, which then gets updated every time a 'Capture' event is triggered. This was really important since on-chain randomness ensures that the numbers are not altered and produced in a Trusted environment.
We cannot run cron jobs easily, and smart contracts cannot interact with the outer world without some help. To deploy a cron job that would check the smart contract, make sure the 'Capture' event is triggered by the contract, and then force the contract to create another truly random time with the help of Pyth's SDK. I used the deployed smart contracts address to ensure that ChainLink could keep polling it.