Skip to content
@AnonVote

AnonVote

Welcome to AnonVote

AnonVote Banner

Private decision infrastructure for organizations

Separates voter identity from ballots at every layer β€” cryptographically, not by policy.

Documentation β€’ Getting Started β€’ GitHub Issues β€’ Discord


πŸ” What is AnonVote?

AnonVote is a privacy-preserving voting platform where:

  • No voter is linked to their ballot – Cryptographically enforced, not by policy
  • Results are blockchain-verified – Anchor to Stellar for independent verification
  • No accounts required – Voters only need a link and their identifier
  • Multiple voting schemes – Standard, weighted, ranked-choice, delegated voting
  • Fully open source – MIT licensed, self-hostable

✨ Core Features

πŸ›‘οΈ Privacy-First

  • Voter identifiers hashed before storage
  • Tokens cryptographically unlinked from votes
  • Votes encrypted with AES-256-GCM
  • No voter PII on-chain

⛓️ Blockchain Anchored

  • Immutable audit trail on Stellar
  • Smart contract verification via Soroban
  • Independent result verification
  • No need to trust AnonVote's servers

🎯 Flexible Voting

  • Standard – One vote per token
  • Weighted – Tokens with vote weight > 1
  • Ranked-Choice – Preference ranking
  • Delegated – Vote delegation chains

πŸš€ Developer Friendly

  • TypeScript throughout
  • REST API with clear contracts
  • Shared crypto library (@anonvote/crypto)
  • Extensively documented codebase

πŸ—οΈ Architecture at a Glance

AnonVote Core (Turborepo Monorepo)
β”‚
β”œβ”€ apps/
β”‚  β”œβ”€β”€ frontend/            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  β”‚  (React + Vite)  ───────  http://localhost:5173
β”‚  β”‚                        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚  β”‚
β”‚  └── backend/             β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚     (Express + Node)───────  http://localhost:3001
β”‚                           β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚
β”œβ”€ packages/
β”‚  β”œβ”€β”€ crypto/              @anonvote/crypto
β”‚  β”‚  └─ TypeScript crypto primitives & utilities
β”‚  β”‚
β”‚  └── contracts/           Soroban + Service Layer
β”‚     β”œβ”€β”€ anonvote/         Rust WASM contracts
β”‚     └── service/          TypeScript integration
β”‚
β”œβ”€ docs/                    Whitepaper, specs, guides
β”‚
└─ turbo.json + pnpm-workspace.yaml
   └─ Orchestrates builds, tests, dev servers

         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
         β”‚   Stellar Blockchain (Testnet/Mainnet)
         β”‚   β€’ Audit trail (manageData ops)
         β”‚   β€’ Soroban smart contract calls
         β”‚   β€’ Independent verification
         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                        β–²
                        β”‚
         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
         β–Ό                             β–Ό
    PostgreSQL                   Stellar SDK
    (Ballots, votes,             (Contract
     tokens, results)             interaction)

πŸš€ Getting Started

Quick Start (5 minutes)

# Clone the monorepo
git clone https://github.com/AnonVote/core.git
cd core

# Install all dependencies (pnpm workspaces)
pnpm install

# Build all packages
pnpm run build

# Run development servers (all apps in parallel via Turbo)
pnpm run dev

# Visit http://localhost:5173 (frontend)
# API running at http://localhost:3001

Requirements

  • Node.js 20+
  • pnpm 9+
  • PostgreSQL 14+
  • (Optional) Rust + Soroban CLI for smart contract development

Documentation

πŸ“– See core/README.md for full setup instructions


πŸ“¦ Repository

We maintain a single unified Turborepo monorepo:

Component Location Tech
Backend API apps/backend/ Express, Node.js, TypeScript, Prisma
Frontend apps/frontend/ React 18, Vite, TailwindCSS, TypeScript
Cryptographic Library packages/crypto/ TypeScript, Node.js/Web crypto
Smart Contracts packages/contracts/ Rust (Soroban), TypeScript service layer
Documentation docs/ Whitepaper, specs, API reference, diagrams

All code lives in one repository: github.com/AnonVote/core


πŸ” How Voting Works

1️⃣ Ballot Creation

Admin creates a ballot with options, deadline, and eligibility list

2️⃣ Token Issuance

  • Voter enters identifier (email, employee ID, etc.)
  • System verifies eligibility
  • One-time random token generated
  • Token sent via email; original never stored in DB

3️⃣ Vote Casting

  • Voter uses token to submit vote choice
  • Vote encrypted with AES-256-GCM
  • Encrypted payload stored; vote content never visible
  • Event recorded on Stellar

4️⃣ Tallying & Results

  • Admin closes ballot at deadline
  • System decrypts votes and counts them
  • Result published to PostgreSQL + Stellar + Soroban
  • Consistency verified: tokens_issued == votes_cast

5️⃣ Public Verification

Anyone can verify the result by checking the Stellar transaction ID or querying the Soroban contract


πŸ”’ Privacy & Security

Privacy Model

Voter Identifier β†’ SHA-256 hash β†’ stored only as hash
                                    ↓
                    Generate cryptographic token
                                    ↓
Token β†’ SHA-256 hash β†’ stored only as hash
        (original token β†’ given to voter, discarded)
                                    ↓
Vote Option β†’ AES-256-GCM encrypt β†’ stored encrypted
              (decrypted only at tally)

Result: No link between voter identity, token, and ballot choice exists anywhere.

Security Features

βœ… JWT authentication for organizations
βœ… Rate limiting on token requests
βœ… Duplicate attempt tracking (audit events only)
βœ… Vote consistency verification
βœ… M-of-N governance for critical operations
βœ… 48-hour timelock on smart contract upgrades
βœ… Immutable audit trail on Stellar


πŸ’‘ Use Cases

  • Corporate governance – Board elections, shareholder votes
  • Academic institutions – Student government, faculty voting
  • Nonprofits – Member voting, annual elections
  • DAOs – Decentralized autonomous organizations
  • Public polls – Surveys with privacy guarantees
  • Team decisions – Agile retrospectives, sprint planning

πŸ› οΈ Tech Stack

Frontend

  • React 18, Vite, TypeScript
  • Tailwind CSS, Radix UI
  • Axios for HTTP

Backend

  • Express.js 4.18, Node.js 20+
  • TypeScript
  • Prisma ORM, PostgreSQL
  • JWT authentication
  • stellar-sdk v12

Cryptographic Library

  • TypeScript, Node.js/Web crypto
  • AES-256-GCM encryption
  • SHA-256 hashing
  • CSPRNG token generation

Smart Contracts

  • Rust, Soroban SDK
  • WebAssembly (wasm32-unknown-unknown)
  • Stellar blockchain integration
  • TypeScript service layer for contract calls

Build & Orchestration

  • Turborepo – Task orchestration with caching
  • pnpm – Monorepo package manager
  • Vite – Lightning-fast frontend build

🀝 Contributing

We'd love your help! Areas for contribution:

  • Frontend – React components, UX/UI improvements
  • Backend – API enhancements, performance optimization
  • Smart Contracts – Rust/Soroban contract work
  • Crypto – @anonvote/crypto library enhancements
  • Documentation – Guides, tutorials, specs
  • Testing – Unit tests, integration tests, property-based tests
  • Security – Audits, vulnerability reports

See CONTRIBUTING.md for detailed guidelines.


πŸ” Security

AnonVote is designed for transparency and auditability:

  • Open source – All code publicly available
  • No black boxes – Every component auditable
  • Formal privacy model – Published whitepaper
  • Blockchain verified – Independent verification possible

Report a Vulnerability

Please email security@anonvote.app (do not post publicly)


πŸ“š Documentation


πŸ“Š Project Status

Component Status Notes
Backend API βœ… Production Ready Fully tested, deployed
Frontend βœ… Production Ready Responsive, accessible
Stellar Integration βœ… Active manageData audit trail
Soroban Contract βœ… Ready Written, awaiting deployment
Testnet Deployment βœ… Available Public testnet instance
Mainnet Deployment πŸ”„ In Progress Pending security review

❓ FAQ

Q: Do voters need an account?
A: No. Voters only need the ballot link and their identifier (email, employee ID, etc.).

Q: Is my vote really private?
A: Yes. Cryptographically. Your identifier β†’ hashed. Token β†’ hashed. Vote β†’ encrypted. No joins exist.

Q: Can the admin see how I voted?
A: No. Votes are encrypted. Admins see only aggregate results.

Q: How do I verify the results?
A: Check the Stellar transaction ID on Stellar Expert. Query the Soroban contract. Independent verification is the whole point.

Q: Can I self-host AnonVote?
A: Yes! It's open source. See DEPLOYMENT.md.

Q: Is it free?
A: Yes, open source MIT licensed. Only costs are Stellar testnet (free) or mainnet (tiny XLM fees).


🌟 Built on Stellar

AnonVote uses the Stellar blockchain for:

  • ⛓️ Immutable audit trails
  • πŸ” Decentralized verification
  • πŸ’° Low-cost transactions
  • πŸš€ High throughput
  • 🌐 Global network

Learn more about Stellar


πŸ“ž Contact & Community


πŸ“„ License

AnonVote is MIT licensed – free to use, modify, and distribute.

View License


Made with ❀️ by the AnonVote community

Privacy is a right, not a policy.

⭐ Star us on GitHub | πŸš€ Deploy Now | πŸ“– Read Docs

Popular repositories Loading

  1. core core Public

    AnonVote is a privacy-preserving voting and decision infrastructure for organizations on the Stellar blockchain. It enables institutions, schools, companies, and professional communities to conduct…

    TypeScript 4 23

  2. .github .github Public

    AnonVote organization profile

Repositories

Showing 2 of 2 repositories
  • core Public

    AnonVote is a privacy-preserving voting and decision infrastructure for organizations on the Stellar blockchain. It enables institutions, schools, companies, and professional communities to conduct secure anonymous voting while guaranteeing: one person votes once, votes remain private, results remain verifiable, and records remain tamper-proof.

    TypeScript 4 23 8 1 Updated Sep 9, 2026
  • .github Public

    AnonVote organization profile

    AnonVote/.github's past year of commit activity
    0 0 0 0 Updated Sep 6, 2026

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…