Skip to content

Vote-Chain is a Blockchain based voting application built using React, Node.js, GraphQL on the ResilientDB Blockchain Fabric.

License

Notifications You must be signed in to change notification settings

ItsBaiShiXi/VoteChain

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VoteChain

Overview

Welcome to the "VoteChain" – a pioneering platform utilizing ResilientDB and GraphQL, a cutting-edge blockchain technology, to revolutionize the landscape of electronic voting systems. Our primary focus is to ensure a secure and transparent voting process while emphasizing the significance of each voter's singular vote. VoteChain is designed to guarantee the permanence of votes, enabling every participant to cast a single vote per election. Our system strictly prohibits multiple votes, ensuring the integrity and fairness of the electoral process. One of the standout features of VoteChain is its user-friendly interface and the provision of a dedicated admin panel. Within the admin panel, a comprehensive display of all elections and their respective candidates' votes is showcased. These statistics are presented dynamically through visually intuitive representations such as bar graphs, pie charts, and polar area charts. At VoteChain, we are committed to fostering a trustworthy environment where the sanctity of each vote is upheld. Our utilization of ResilientDB technology ensures the highest standards of security, transparency, and reliability in electronic voting, empowering individuals to participate in the democratic process with confidence.

Features

  1. Secure and Transparent Election
  2. Single Voting Instance
  3. Immutable Votes
  4. User Friendly Interface
  5. NEW! User Authentication with ResVault
  6. NEW! Customizable Voting
  7. NEW! Participate in Discussion Panels
  8. NEW! View Poll Results & Personal Vote History

Architecture Diagram

Architecture Diagram

Tech Stack

  1. ResilientDB - A cutting-edge blockchain technology chosen for its robustness and immutability, providing secure, transparent, and tamper-resistant data storage essential for our electronic voting system.
  2. GraphQL - Utilised for efficient and versatile data querying, offering a streamlined interface to access blockchain based information. Implemented Fetch Transaction, Post Transaction and Send Request APIs using GraphQL.
  3. React.js - It was utilized for building composable and interactive user interface within the VoteChain platform, facilitating the creation of modular components and seamless UI interactions.
  4. Material UI - A responsive UI design library complementing React.js, ensured a consistent and visually appealing layout across various devices and screen sizes.
  5. Node.js - It forms the foundational infrastructure for the VoteChain back end, managing server-side logic and acting as an intermediary between the user interface and ResilientDB blockchain
  6. ResVault - VoteChain now uses ResVault for user authentication. Users will log in with their ResVault Wallet, and poll submissions will be linked to their account for enhanced protection and accountability.
  7. MongoDB - The Custom Poll Creation and Discussion Panel features utilize MongoDB to securely store transaction-related data such as Poll Topics, Vote Options, and Messages. This data is organized into three collections: Poll, Vote, and Message Data, ensuring efficient management and retrieval of information.

Screenshots

  1. Home Screen
Landing page Screenshot 2023-12-09 at 4 36 16 PM
  1. Login Page
Screenshot 2024-12-08 171743
  1. Authenticate with ResVault
Screenshot 2024-12-08 172213
  1. Create Polls Screen
Screenshot 2023-12-09 at 4 40 37 PM
  1. Vote Polls Screen
Screenshot 2023-12-09 at 4 40 37 PM
  1. Vote Screen
Screenshot 2023-12-09 at 4 40 37 PM
  1. Result Screen
Screenshot 2023-12-09 at 4 40 37 PM
  1. User History Screen
Screenshot 2023-12-09 at 4 41 32 PM
  1. Discussion Screen
Screenshot 2024-12-08 212205

Preparation

Please follow the procedures below and ensure that every step is successful.

Install resvault chrome extension

Google Chrome is installable on macOS, Linux, and Windows platforms. Please refer to the official Google installation guide based on your platform.

  1. Clone the ResVault repo to get started:
    git clone https://github.com/ResilientApp/ResVault.git
    cd ResVault
    
  2. Create the build folder in repo
    npm install
    npm run build
    
  3. Load the extension in chrome
    • Open chrome://extensions/ in Google Chrome, toggle Developer mode on
    • Click on Load unpacked
    • Select the build folder you just created
    • You should see the ResVault extension in chrome

Node.js is required

  1. Node.js - Download and install Node.js from https://nodejs.org/ based on your platform.
  2. npm (Node Package Manager) - npm is included with Node.js. Run the following commands to ensure your installation is successful.
    node --version
    npm --version
    

Steps to run the system

  1. Clone this Git repository to your local machine
    git clone https://github.com/ItsBaiShiXi/VoteChain.git
    cd VoteChain
    
  2. Install required dependencies
    npm install
    
  3. Once the dependencies are installed successfully
    • Open a terminal, run following command
      npm run start-backend
      
    • Open another terminal, run following command
      npm start
      
      This will launch the application, and you can access it in your web browser
  4. Connect the ResVault chrome extension, then you can anonymously login to votechain through it ResVault screen
    Enjoy your voting!

For more information

Refer to the Blog - https://xiuyuanqi799.wixsite.com/expanded-votechain

About

Vote-Chain is a Blockchain based voting application built using React, Node.js, GraphQL on the ResilientDB Blockchain Fabric.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • CSS 64.3%
  • SCSS 20.3%
  • JavaScript 15.0%
  • HTML 0.4%