Build Decentralized Voting System Using Python Blockchain | FastAPI + React Web3 Project | Part 1

AI Prompt for Building the Blockchain Voting System

In this tutorial, we build a complete decentralized voting system using a custom blockchain built entirely in Python. The system simulates a real Web3 architecture including smart contracts, P2P networking, and blockchain validation. You can copy the prompt below and use it in any AI coding tool to generate the full project automatically.


You are a senior blockchain architect and full-stack engineer.

Your task is to build a complete advanced decentralized voting system using a custom blockchain built in Python.

CORE REQUIREMENTS

1. Do NOT use any paid API
2. Do NOT use any third-party AI service
3. Do NOT use GPU libraries
4. Build the blockchain manually in Python
5. The entire system must run locally
6. Follow clean architecture and modular design


TECH STACK

Frontend
React.js
TailwindCSS
Chart.js

Backend
Python FastAPI

Blockchain Layer
Custom blockchain in Python

Database
PostgreSQL

Authentication
JWT authentication

Storage
Local IPFS-like storage simulation

Networking
P2P nodes using WebSockets


PROJECT STRUCTURE

project-root/

backend/
frontend/
blockchain/
p2p-node/
storage/


BLOCKCHAIN FEATURES

Implement classes:

Block
Blockchain
Transaction
SmartContract

Block must include:

index
timestamp
transactions
previous_hash
hash
nonce
merkle_root

Blockchain must support:

genesis block
proof of work
block validation
chain verification
transaction pool
block mining


TRANSACTION STRUCTURE

Each vote is a transaction.

Fields:

transaction_id
voter_hash
candidate_id
timestamp
signature


SMART CONTRACT SIMULATION

Functions:

register_voter()
add_candidate()
start_election()
stop_election()
cast_vote()
validate_vote()
count_votes()


IPFS STORAGE SIMULATION

Features:

file hashing
content addressing
file retrieval via hash
distributed storage simulation

Store:

vote records
election metadata
audit logs


P2P NETWORK

Each node must:

sync blockchain
broadcast transactions
broadcast blocks
validate incoming blocks

Use WebSockets


BACKEND FEATURES

Voter Registration
Authentication
Election Management
Vote Casting
Blockchain Verification
Blockchain Explorer API
Election Analytics


DATABASE TABLES

users
candidates
elections
transactions
nodes


API ENDPOINTS

POST /api/register
POST /api/login
GET /api/candidates
POST /api/vote
GET /api/results
GET /api/blockchain
GET /api/block/:id
POST /api/start-election
POST /api/stop-election


FRONTEND PAGES

Home
Registration
Login
Voting Page
Admin Dashboard
Blockchain Explorer
Results Page
Analytics Dashboard


BLOCKCHAIN EXPLORER

Display:

Block Index
Timestamp
Transaction Count
Merkle Root
Block Hash
Previous Hash


ANALYTICS DASHBOARD

Show:

Total Votes
Votes per Candidate
Voting Timeline
Participation Rate


SECURITY

SHA256 hashing
Digital signatures
JWT authentication
Prevent double voting
Blockchain validation


TESTING

Include:

unit tests
blockchain tests
API tests
integration tests


DELIVERABLE

Provide:

complete backend code
complete blockchain code
complete React frontend
database schema
API documentation
setup instructions


RUN PROJECT

Backend:
uvicorn main:app --reload

Frontend:
npm install
npm run dev


EXPLANATION REQUIRED

1. How decentralized voting works
2. How blockchain ensures vote integrity
3. How nodes synchronize data
4. How votes are tamper-proof