HLVote: Mobile E-Voting Platform Development by Muh. KhaerulHLVote: Mobile E-Voting Platform Development by Muh. Khaerul

HLVote: Mobile E-Voting Platform Development

Muh. Khaerul

Muh. Khaerul

HLVote — Hyperledger Fabric Mobile E-Voting Platform

HLVote is a mobile e-voting application built with React Native + Expo and powered by a Hyperledger Fabric backend. The project demonstrates a secure voting flow where users can enroll their identity, view available elections, select a candidate, submit a vote, and verify the transaction record through the ledger.
The frontend repository uses Expo with React Native, TypeScript, navigation, secure storage, local authentication, and mobile UI libraries. The backend includes Hyperledger Fabric chaincode, Fabric CA integration, and a TypeScript REST API layer using Express and Fabric SDK packages.

What I Built

I developed an end-to-end e-voting platform that connects a mobile voting experience with a permissioned ledger backend. The app supports identity enrollment, election browsing, candidate selection, vote confirmation, transaction submission, and transaction history inspection.
On the backend, the smart contract handles election creation, candidate creation, ballot generation, vote casting, election queries, and asset reads. The vote-casting logic validates whether the ballot, candidate, and election exist, checks whether the ballot has already been used, verifies election timing, then writes the final vote state to the ledger.

Key Features

Identity enrollment for voters using Fabric certificate-based identity.
Mobile election dashboard showing active elections, candidates, and vote totals.
Candidate selection flow with confirmation before submitting a vote.
Hyperledger Fabric transaction submission for vote recording.
Ledger-backed transaction history for transparency and auditability.
Vote status confirmation with transaction ID display.
Secure mobile storage and authentication support using Expo secure/local authentication packages.

Tech Stack

Frontend: React Native, Expo, TypeScript, React Navigation, NativeWind, Expo Secure Store, Expo Local Authentication Backend: Hyperledger Fabric, Fabric Chaincode, TypeScript, Express.js, Fabric Network SDK, Fabric CA Client Ledger: Hyperledger Fabric chaincode, QSCC transaction lookup, X.509 identity wallet, transaction validation flow

My Role

I worked across the mobile frontend, backend API, and Hyperledger Fabric integration. This included building the React Native app screens, connecting the app to the REST API, implementing the Fabric identity flow, developing chaincode functions for election and ballot logic, and exposing ledger operations through a TypeScript API.

Project Outcome

The result is a working mobile-first e-voting prototype that shows how a permissioned ledger can improve voting transparency, traceability, and auditability. Instead of storing votes in a traditional database only, the system records vote-related actions through Hyperledger Fabric transactions, allowing each vote submission to produce a verifiable transaction ID.

HLVote — Mobile E-Voting Platform with Permissioned Ledger

HLVote is a mobile-first e-voting prototype built to explore how secure digital voting can work using a permissioned blockchain backend.
The goal was to create a voting flow where users can enroll their identity, view available elections, choose a candidate, submit a vote, and receive a verifiable transaction record after the vote is written to the ledger.
Instead of treating voting as a normal database update, HLVote records vote-related activity through Hyperledger Fabric transactions, giving each submitted vote a traceable transaction ID for transparency and auditability.

The Problem

Digital voting systems need more than a clean user interface. They also need identity validation, vote integrity, duplicate-vote prevention, transparent records, and a way to verify that submitted votes were actually recorded.
For this prototype, I focused on answering one question:
How can a mobile voting experience be connected to a backend ledger system without making the voting process feel complicated for users?

What I Built

I developed an end-to-end prototype covering both the mobile app and backend system.
The mobile app allows voters to:
Enroll their identity
View active elections
Browse candidates
Confirm their vote before submission
Submit the vote to the backend
View vote status and transaction history
The backend handles:
Voter identity enrollment
Election and candidate data
Ballot generation
Vote validation
Duplicate-vote prevention
Hyperledger Fabric transaction submission
Ledger transaction lookup

My Role

I worked across the full system, including mobile development, backend API development, and Hyperledger Fabric integration.
My responsibilities included:
Building the React Native + Expo mobile screens
Connecting the app to a TypeScript/Express backend API
Creating the Fabric identity flow
Implementing chaincode logic for elections, candidates, ballots, and vote casting
Exposing ledger operations through REST endpoints
Handling transaction confirmation and history lookup

How the Voting Flow Works

A voter first enrolls their identity through the app. Once enrolled, they can view available elections and select a candidate.
Before the vote is submitted, the app shows a confirmation step to reduce mistakes. After confirmation, the backend validates the ballot, checks election timing, prevents duplicate voting, and submits the vote transaction to Hyperledger Fabric.
Once the transaction is recorded, the app displays a transaction ID so the vote action can be inspected later through the ledger-backed history flow.

Key Features

Mobile voting app built with React Native and Expo
Certificate-based voter identity enrollment
Election and candidate browsing
Vote confirmation flow
Ballot validation and duplicate-vote prevention
Hyperledger Fabric transaction submission
Ledger-backed transaction history
Transaction ID display after vote submission
Secure mobile storage and local authentication support

Tech Stack

Mobile: React Native, Expo, TypeScript, React Navigation, NativeWind, Expo Secure Store, Expo Local Authentication
Backend: TypeScript, Express.js, Hyperledger Fabric SDK, Fabric CA Client
Ledger: Hyperledger Fabric chaincode, X.509 identity wallet, QSCC transaction lookup, transaction validation flow

Outcome

The result is a working mobile e-voting prototype that demonstrates how a permissioned ledger can support a more transparent and auditable voting process.
This project shows my ability to connect a mobile user experience with complex backend infrastructure, identity systems, and blockchain transaction flows while keeping the app simple for end users.
Like this project

Posted May 21, 2026

HLVote is a mobile e-voting application built with React Native + Expo and powered by a Hyperledger Fabric backend.