Skip to content

bsoc-bitbyte/YDO_26

Repository files navigation

You Deserve One 💘

A secure, on-device encrypted matchmaking platform built exclusively for IIITDMJ

Next.js Supabase Ethers.js JavaScript


Project Overview

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."


Features

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.

Cryptographic Workflow - 'The Heart of YDO'

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
Loading

Tech Stack

  • Frontend:
    • Next.js

  • Backend:
    • Supabase

  • Authentication:
    • Supabase Auth

  • Cryptography:
    • ethers.js and crypto-js

Contributions

We welcome contributions through the BSoC Contributor Guidelines!
Development tasks are strictly divided into three core domains:

  1. Frontend
  2. Infrastructure and Database
  3. Core logic and Cryptography

Please see our CONTRIBUTING.md for getting started.


Acknowledgement

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.

Maintainers & Mentors:

  • Arunit

  • Sampath


~ with 💖 by Team YDO.

About

A IIITDMJ exclusive matchmaking platform for the big 26!

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors