CampusGhost
Don't Trust Admins. Trust Math.
The problem CampusGhost solves
The Problem: "Trust Me Bro" Anonymity In traditional campus complaint systems (Google Forms, Email, or Web2 Portals), anonymity is a lie. The System Administrator always has "God Mode"—they can see IP addresses, email logs, and timestamps. This creates a culture of fear; students hesitate to report serious issues like ragging, harassment, or corruption because they fear retaliation from the administration. Furthermore, centralized databases allow authorities to simply "delete" complaints they don't like.
The Solution: Cryptographic Guarantees ZeroGrievance is a Decentralized Anonymous Organization (DAO) that replaces "trust" with math.
True Privacy: We use Semaphore Protocol (ZK-SNARKs) to allow students to prove they are members of the institution without revealing their specific identity. Even the developers cannot track who posted a message.
Uncensorable: Grievances are stored on the Ethereum Blockchain. Once a report is submitted, it is immutable. No Dean or Admin can delete it.
Community Governance: A built-in voting system allows the student body to upvote critical issues, prioritizing them based on consensus rather than administrative bias.
How It Works:
Identity Initialization: The user generates a local ZK-Identity (stored only in the browser).
Membership Proof: The user joins the "Student Group" on-chain.
Anonymous Signal: When posting a grievance (e.g., "Mess Food Quality"), the app generates a Zero-Knowledge Proof. The smart contract verifies the proof ("This user is a student") and accepts the message without ever knowing which student sent it.
Challenges I ran into
My Computer Was Haunted: I wasted hours trying to change the UI, but the old "T-Logo" kept showing up no matter what files I deleted. Turns out I had a "zombie" server process running in the background on port 3000 that wouldn't die. I had to perform a "nuclear reset" and force the app to a new port just to see my code updates.
The ZK Proof Nightmare: Getting the Zero-Knowledge proofs to verify on-chain was brutal. The error messages were generic ("Invalid Proof"), so I was flying blind. It turned out I had simply swapped two parameters (the Signal and the Group ID) in the function call. A tiny mistake that cost me 4 hours of debugging.
CSS vs. The World: I didn't want the app to look like a generic crypto template. I wanted a "Hacker Terminal" vibe. Fighting the pre-installed styles (like RainbowKit's headers) was harder than the backend logic. I eventually had to use "CSS Nuclear Options" (!important) to override everything and get that clean, dark-mode look.
Tracks Applied (1)
Open Track
Technologies used