Evote

A voting application that leverages Hyperledger Fabric and the IBM Blockchain Platform to record and tally ballots.

Blockchain & Cloud ComputingJavaScriptApache-2.0

Abstract

Evote is an open-source Blockchain & Cloud Computing project. A voting application that leverages Hyperledger Fabric and the IBM Blockchain Platform to record and tally ballots. Service, and the operator installs and instantiates the smart contract on the network. It is built using JavaScript, Vue.js, Kubernetes. Key capabilities include: Hyperledger Fabric v1.4 is a platform for distributed ledger solutions, underpinned by a modular architecture that delivers high degrees of confidentiality, resiliency, flexibility, and scalability; Node.js is an open source, cross-platform JavaScript run-time environment that executes server-side JavaScript code; Vue.js 2.6.10 Vue.js is an open-source JavaScript framework for building user interfaces and single-page applications. The complete source code is publicly available on GitHub under the Apache License 2.0, making it a useful reference for students building a Blockchain & Cloud Computing mini project or final-year project.

1. Introduction

Service, and the operator installs and instantiates the smart contract on the network.

and query the world state to see current poll standings.

Have you ever wondered how exactly the votes in a presidential election counted? What if instead of having volunteers that are spending hours a day counting votes manually, we have an app that was backed by blockchain, recording each vote made by a voter, ensuring double-voting is not possible? That's what this code pattern explains how to do. We aim to build a web-app in which the voter can register with their drivers license, get a unique voterId which is used to login to the app, and cast the vote. The vote is tallied on the blockchain, and the web-app shows the current standings of the polls.

2. Objective

A voting application that leverages Hyperledger Fabric and the IBM Blockchain Platform to record and tally ballots.

This project demonstrates how JavaScript, Vue.js, Kubernetes can be applied to a real-world Blockchain & Cloud Computing problem.

3. Key Features / Modules

  • Hyperledger Fabric v1.4 is a platform for distributed ledger solutions, underpinned by a modular architecture that delivers high degrees of confidentiality, resiliency, flexibility, and scalability.
  • Node.js is an open source, cross-platform JavaScript run-time environment that executes server-side JavaScript code.
  • Vue.js 2.6.10 Vue.js is an open-source JavaScript framework for building user interfaces and single-page applications.

4. Technology Stack

JavaScriptVue.jsKubernetes
  • IBM Blockchain Platform Extension for VS Code is designed to assist users in developing, testing, and deploying smart contracts -- including connecting to Hyperledger Fabric environments.
  • Hyperledger Fabric v1.4 is a platform for distributed ledger solutions, underpinned by a modular architecture that delivers high degrees of confidentiality, resiliency, flexibility, and scalability.
  • Node.js is an open source, cross-platform JavaScript run-time environment that executes server-side JavaScript code.
  • Vue.js 2.6.10 Vue.js is an open-source JavaScript framework for building user interfaces and single-page applications.

5. System Requirements

General requirements for this technology stack — check the README for exact versions.

  • Node.js (LTS) and npm
  • A modern web browser
  • VS Code or any code editor
  • Git (to clone the repository)

6. Installation & Setup

git clone https://github.com/IBM/evote.git
cd evote
  1. Clone the Repo
  2. Create IBM Cloud services
  3. Build a network
  4. Deploy voterContract Smart Contract on the network
  5. Connect application to the network
  6. Run the application
  7. Install a smart contract
  8. Navigate to the Smart contracts tab in the left navigation and click Install smart contract +.
cd web-app/server
    npm install
node enrollAdmin.js
msg: Successfully enrolled admin user app-admin and imported it into the wallet
npm start

Full setup instructions are in the project README.

7. Future Enhancements

Suggested extensions you can add to make this your own project.

  • Add a CI/CD pipeline with GitHub Actions
  • Deploy to a public test network or cloud free tier
  • Add monitoring and cost alerts

8. Viva / Review Questions

Common questions examiners ask for projects in this domain.

  1. Why does this problem need a blockchain or cloud-native design?
  2. Explain the smart contract / infrastructure components and how they interact.
  3. How are gas costs or cloud costs kept under control?
  4. How is the system secured (keys, IAM, access control)?
  5. How would the solution scale to many more users?

9. Source Code & License

This project is developed by IBM and published on GitHub under the Apache License 2.0. Please follow the license terms and credit the original author when you use or modify this code.

Want to build this as your internship project?

Work on a Blockchain & Cloud Computing project like this with mentor guidance, weekly reviews and an internship certificate from Training Trains, Erode — online or offline.

Apply for Blockchain & Cloud Computing Internship