Search projects, hackathons, sponsors and tech

    ← All projects

    Nugget

    Private Period Tracker | Be rewarded for anon participation in decentralised science

    Demo

    About

    Video with subtitles for those hard of hearing or non-native english speakers here: https://www.veed.io/view/947cca44-19f4-496c-a5c3-eee37642c23b?source=editor&panel=share Another period cycle tracker, how boring, there's a million of them. But actually they are all terrible (I've tested ALOT! And most sell your data without you even knowing about which is at best annoying and at worst can actually be life threatening. I never opt in yet somehow my ads just know when I'm ovulating, when i'm pms-ing, which make me even more mad and sad, but at least crying for a reason. Women have only been legally mandated to be included in clinical research testing since 1993! That's younger than Taylor Swift, she was 4 when we officially started trying to understand womens bodies. Complex bodies that create life but we still barely know anything about, so there is a lot of catching up to do! De-sci gives us a unique opportunity now to open source womens data, whilst still protecting women and their data and that is what I set out to build here. The premise of this app to be a privacy preserving period tracker that pays women for their data anonymously and can opensource research on women. Web3(decentralisation) is a good fit, but also I wanted this to be for everyone, and did not want the user to ever have to see transaction, a gas fee, or a seed phrase, except maybe when they choose to cash out. Decentralisation is one of the most important parts of this app. Merkle trees and a smart-contract escrow let a contributor's data be used and paid for without that payment ever being traceable back to them. I wanted to take all the good about crypto but abstract it out. So making the UI extremely simple and easy whilst the backend does all the heavy lifting. A user puts in their period cycle information and can choose to either leave it at that, or to allow their data to contribute to research. You must have logged 2 or more cycles to contribute but then you can create a wallet at a push of a button and start waiting for the rewards to come in. Meanwhile a lot is happening on the backend. That period data gets encrypted and sits on supabase in a batch with other contributers data until a buyer requests a report. At that moment, when the buyer buys the report to show all the aggregated period data, it triggers a sequence designed so that the user who submitted their period data can get paid without their identity ever being linked to their data The buyer pays into the contract, the contract triggers the CRE to fetch the encrypted data from supabase, CRE fetches the current encrypted pool from supabase CRE decrypts and aggregates it. CRE identifies the eligible contributors for the relevant payout window. CRE creates a Merkle root for those wallets. That root is attached to the buyer’s unique purchase escrow batch. Each eligible contributor can claim once from that purchase. The buyer gets their data. Contributors get paid. Nobody in between ever sees both halves of that equation at once

    How it's made

    Tech stack: Started with a blank Next.js typescript project and built out from there, using onRender to host and supabase to store the encrypted data (as its way to expensive to store all that onchain). The solidity contract was deployed on Remix. On the frontend, contributors log cycle data locally and can choose to contribute only an encrypted summary to the shared pool. The buyer side report purchases are funded on Sepolia. Privy embedded wallets, which lets the app handle wallet creation and transaction signing without requiring a traditional crypto-native onboarding flow are used for the full financial flow. Chainlink has a lot to do. The core privacy boundary is implemented in Chainlink CRE: the buyer report runs as a confidential workflow inside a TEE, where it retrieves an enclave-only secret, decrypts the encrypted contribution batch, validates records, enforces k-anonymity thresholds, computes only public aggregate statistics, and derives the eligible reward wallet set plus a Merkle root for payout claims. That Merkle root is then settled into the escrow flow so contributors can claim rewards onchain with a wallet address and proof, while the raw period data never needs to leave the confidential execution path. Privy wallets remove the wallet friction from the flow. I wanted to abstract the crypto/web3 completely out, the backend tech can speak for itself it what its allowing people to do with it. For the contributor who gives their data, I wanted that they wouldnt even know it was crypto until they were ready to offramp, however as I couldnt find out if Privy support gas sponsorship payments on testnet I couldnt put that in the demo, however if ever live that is what we would do, with the cost being covered by the buyer money from the pool. Contract address: 0xf0344b5768BB2796D32E16523EF2d47D11F71a68