https://github.com/edycutjong/whivote
🗳️ Private DAO voting via MagicBlock. Encrypted votes. Dramatic reveal ceremony.
https://github.com/edycutjong/whivote
dao frontier hackathon magicblock nextjs privacy solana voting
Last synced: 1 day ago
JSON representation
🗳️ Private DAO voting via MagicBlock. Encrypted votes. Dramatic reveal ceremony.
- Host: GitHub
- URL: https://github.com/edycutjong/whivote
- Owner: edycutjong
- License: mit
- Created: 2026-05-10T12:44:02.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2026-05-11T03:08:14.000Z (about 1 month ago)
- Last Synced: 2026-05-11T05:15:31.651Z (about 1 month ago)
- Topics: dao, frontier, hackathon, magicblock, nextjs, privacy, solana, voting
- Language: TypeScript
- Homepage: https://whivote.edycu.dev
- Size: 4.31 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Agents: AGENTS.md
Awesome Lists containing this project
README
Whivote 🚀
Private DAO voting via MagicBlock. Encrypted votes. Dramatic reveal ceremony.
[](https://whivote.edycu.dev)
[](https://whivote.edycu.dev/pitch)
[](https://youtu.be/kfEU7V50ePY)
[](https://superteam.fun/earn/listing/privacy-track-colosseum-hackathon-powered-by-magicblock-st-my-and-sns)





[](https://github.com/edycutjong/whivote/actions/workflows/ci.yml)
---
## 📸 See it in Action
*(Demo GIF and UI screenshots can be found in the `docs/assets` directory)*
[**▶️ Watch the Demo Video**](https://youtu.be/kfEU7V50ePY)
## 💡 The Problem & Solution
Private DAO voting via MagicBlock. Encrypted votes. Dramatic reveal ceremony.
**Whivote** solves this by providing:
Private DAO voting via MagicBlock. Encrypted votes. Dramatic reveal ceremony.
**Key Features:**
- ⚡ **High Performance:** Seamless integration and optimized workflows.
- 🔒 **Secure by Design:** Verifiable on-chain actions and robust data protection.
- 🎨 **Intuitive UX:** Beautiful, user-centric interface built for scale.
## 🏗️ Architecture & Tech Stack
### Tech Stack
| Component | Technology | Description |
|-----------|------------|-------------|
| **Frontend** | Next.js 16, React 19 | App Router, SSR, Server Components |
| **Styling** | Tailwind CSS v4 | High-performance responsive UI |
| **Language** | TypeScript | Strict type safety across the stack |
| **Integration**| MagicBlock API | Ephemeral rollups and state management |
| **Testing** | Vitest | Comprehensive unit and component testing |
For a detailed breakdown of our system architecture and data flow, please refer to the [Architecture Document](docs/ARCHITECTURE.md).
## 🧩 How We Use MagicBlock
**Whivote** fundamentally relies on MagicBlock to function:
1. **MagicBlock API:** We use MagicBlock for private DAO voting, processing encrypted votes, and enabling a dramatic reveal ceremony on-chain.
## 🏆 Sponsor Tracks Targeted
* **Sponsor Integration**: MagicBlock
## 🚀 Run it Locally (For Judges)
1. **Clone the repo:** `git clone https://github.com/edycutjong/whivote.git`
2. **Install dependencies:** `npm install`
3. **Set up environment variables:**
```bash
cp .env.example .env.local
```
*Note: Set your `NEXT_PUBLIC_RPC_URL` and `MAGICBLOCK_API_KEY` in the `.env.local` file. The MagicBlock key is an authorization token for Private Ephemeral Rollups, obtained by requesting a challenge from `/v1/spl/challenge`, signing it with your wallet, and calling `/v1/spl/login`.*
4. **Run the app:** `npm run dev`
---
## 📄 License
This project is licensed under the [MIT License](LICENSE).