You Deserve One (YDO) bridges the gap of unspoken campus connections by offering a completely safe, anonymous matchmaking platform for students.
What makes YDO different from a simple form is its Anonymity Guarantee: "The database, the developers, and the server infrastructure will never have the mathematical ability to see who a user liked or who matched with whom. Matches are calculated via cryptographic collision."
YDO is crafted around these core operational pillars:
- Campus Exclusive Authentication:
Restricted solely to institutional credentials, login with 'iiitdmj.ac.in' only. - Multiple Selections:
Users can submit up to 3 choices without anyone else knowing. - Synchronized Reveal:
The magic happens simultaneously on February 14th at 00:00 mutual selections instantly reveal a match. - No secrets revealed:
Unmatched tokens remain as a one way SHA256 hash in database to guarantee continuous data privacy.
graph LR
subgraph KEYS ["Step 1 — Key Generation"]
A[User Signup] --> B[12-word Mnemonic\ngenerated locally]
B --> C[Keypair Derived\nvia ethers.js]
C --> D[(Public Key\nusers table)]
C --> E[Private Key\non device only]
end
subgraph HASH ["Step 2 — Zero-Knowledge Submission"]
F[User A\nlikes User B] --> G[ECDH:\nPrivate Key A +\nPublic Key B]
G --> H[Shared Secret\non device]
H --> I[SHA-256\nHash]
I --> J[(Hash only\nlikes table)]
end
subgraph VAULT ["Step 3 — The Vault"]
K[Plaintext choices\n2024001, 2024045] --> L[AES cipher\nfrom mnemonic]
L --> M[(Ciphertext\nencrypted_vault)]
end
subgraph REVEAL ["Step 4 — Collision and Reveal"]
N{Midnight:\nServer scan} --> O[Publish hashes\nwith count = 2]
O --> P[Client runs\nlocal ECDH math]
P --> Q{Hash match\nfound?}
Q -->|Yes| R[Match Revealed]
Q -->|No| S[No match]
end
KEYS --> HASH
HASH --> VAULT
VAULT --> REVEAL
- Frontend:
- Next.js
- Next.js
- Backend:
- Supabase
- Supabase
- Authentication:
- Supabase Auth
- Supabase Auth
- Cryptography:
- ethers.js and crypto-js
We welcome contributions through the BSoC Contributor Guidelines!
Development tasks are strictly divided into three core domains:
- Frontend
- Infrastructure and Database
- Core logic and Cryptography
Please see our CONTRIBUTING.md for getting started.
We extend our sincere gratitude to:
- All contributors who are dedicating their time and effort for shaping YDO.
- The broader open-source community for providing invaluable tools, libraries, and inspiration.
- Our beloved TPC ❤️ - The Programming Club, IIITDMJ.
~ with 💖 by Team YDO.