Skip to content

About

CipherBallot is a modern web application that enables secure data aggregation and analysis using Secure Multi-Party Computation (SMPC). Built with React and Python Flask, it allows multiple parties to perform computations on their combined data while keeping individual inputs private.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Latest commit

 

History

37 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CipherBallot using SMPC for Privacy-Preserving Data Platform

SMPC React Flask Python

CipherBallot using SMPC for Privacy-Preserving Data Platform is a comprehensive solution for secure multi-party computation (SMPC) to aggregate and analyze data without compromising privacy. The application combines a modern React frontend with a powerful Python Flask backend to provide an intuitive and effective SMPC service.

Overview

CipherBallot using SMPC for Privacy-Preserving Data Platform helps organizations securely aggregate and analyze data from multiple parties without revealing individual data points. The platform uses secure multi-party computation techniques to ensure data privacy.

Project Architecture

smpc-privacy-preserving-data/
├── frontend/        # React frontend application
│   ├── public/
│   ├── src/
│   ├── .env
│   └── package.json
│
├── backend/         # Flask backend API
│   ├── app/
│   │   ├── smpc.py  # Main SMPC logic
│   ├── run.py  # Server file
│   ├── .env
│   └── requirements.txt
│
└── README.md        # This file

Key Features

SMPC Capabilities

  • Secure Aggregation: Aggregate data using secure multi-party computation
  • Privacy-Preserving: Ensure data privacy during computation
  • Flexible Data Types: Support for various data types and aggregation methods

User Experience

  • Intuitive Interface: Clean, responsive design works across devices
  • Real-time Feedback: Toast notifications provide operation status
  • Animated UI: Smooth transitions make interaction pleasant
  • Performance Optimizations: Concurrent processing for faster results

Technologies Used

Frontend (Client)

  • React 18.2.0
  • Framer Motion (animations)
  • React Icons
  • TailwindCSS

Backend (Server)

  • Python 3.9+
  • Flask web framework
  • MPyC (Multiparty Computation in Python)
  • Thread pool for concurrent processing

Installation & Setup

Prerequisites

  • Node.js (v16+)
  • Python (v3.9+)
  • npm or yarn
  • pip

Clone the Repository

git clone https://github.com/yourusername/smpc-privacy-preserving-data.git
cd smpc-privacy-preserving-data

Backend Setup

# Navigate to backend directory
cd backend

# Create and activate a virtual environment
python -m venv venv
source venv/bin/activate   # On Windows, use `venv\Scripts\activate`

# Install dependencies
pip install -r requirements.txt

# Run the server
python run.py   # Runs on http://localhost:8000 by default

Frontend Setup

# Navigate to frontend directory
cd frontend

# Install dependencies
npm install

# Start development server
npm run dev   # Access at http://localhost:5173 by default

API Documentation

Aggregate Votes Endpoint

POST /aggregate_votes

Request Format

{
  "votes": ["Option1", "Option2", "Option1", "Option3"]
}

Response Format

Success:

{
  "results": {
    "Option1": 2,
    "Option2": 1,
    "Option3": 1
  }
}

Error:

{
  "error": "Description of the error that occurred"
}

Usage Examples

Example 1: Aggregate Votes

Input:

{
  "votes": ["Option1", "Option2", "Option1", "Option3"]
}

Output:

{
  "results": {
    "Option1": 2,
    "Option2": 1,
    "Option3": 1
  }
}

© 2025 SMPC Privacy-Preserving Data Platform. All rights reserved.

About

CipherBallot is a modern web application that enables secure data aggregation and analysis using Secure Multi-Party Computation (SMPC). Built with React and Python Flask, it allows multiple parties to perform computations on their combined data while keeping individual inputs private.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages