Skip to content
/ VoteX Public

An AI driven Stellar based Decentralized Voting Application which empowers communities to make decisions collectively with confidence.

Notifications You must be signed in to change notification settings

soorya-u/VoteX

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Logo

VoteX

An AI driven Stellar based Decentralized Voting Application which empowers communities to make decisions collectively with confidence.

View Demo · Report Bug

About The Project

This project is a secure, AI-driven, decentralized voting application built on the Stellar blockchain with Soroban smart contracts to ensure transparency and immutability. The system leverages Next.js for the frontend, a Python-based proxy server, and Redis as the database.

Key Features

  • Decentralized & Secure – Built on Stellar blockchain with Soroban smart contracts for transparent voting.
  • AI-Powered Authentication – Uses OCR for Aadhaar card recognition and face recognition models for enhanced security.
  • Fast & Scalable – A Python proxy server optimizes API calls, and Redis ensures quick data access.
  • User-Friendly Interface – A seamless Next.js frontend for an intuitive voting experience.

This system guarantees secure, verifiable, and tamper-proof elections with the power of AI and blockchain.

Built With

Client

Typescript Next Tailwind

Server

Python FastAPI

Database & Services

Redis Twilio

Web3

Rust Stellar Pinata

Architecture

architecture

Getting Started

This is a set of instructions on how to set up your project locally. To get a local copy up and running follow these simple example steps.

Prerequisites

These are the softwares required to run the project.

Local Prerequisites

Docker Prerequisites

Installation

Run Docker

  1. Clone the repository

    git clone https://github.com/soorya-u/votex.git
  2. Install Stellar CLI

  3. Start the Stellar Service

    docker compose up stellar --build
    
  4. Create a new Local Network

    stellar network add <network-name> --rpc-url <rpc-url> --network-passphrase <passphase>
    # for local network, rpc-url: `http://localhost:8000/soroban/rpc` and passphase: `"Standalone Network ; February 2017"`
    • To check the health of Stellar, run

      docker exec votex-stellar /opt/stellar/bin/health-check.sh
    • To check the running processes in Stellar, run

      docker exec votex-stellar supervisorctl status
    • If any of the process is not running, run

      docker exec votex-stellar supervisorctl start <process-name>[friendbot, postgresql, ...]
  5. Create a new Account using Stellar CLI

    stellar keys generate <your-username> --network <network-name> --fund
  6. Connect to Freighter Wallet by importing the account using the secret key

    stellar keys show <your-username>
  7. Navigate to web3 Directory

    cd web3
  8. Run the Deploy Command with Username and Network Options as Parameters to get the Deployed Contract Address

    .\scripts\deploy.ps1 -Source <your-username> -Network <your-network>
    ./scripts/deploy.sh SOURCE=<your-username> NETWORK=<your-network>
  9. Create .env at the root of the project and fill the required variables

    # root .env
    cp .env.example .env
  10. Navigate to Client

    cd client
  11. Create .env and fill the required variables

    cp .env.example .env.docker
  12. Navigate to Server

    cd server
  13. Create .env and fill the required variables

    cp .env.example .env.docker
  14. Run the Client and Server Docker Images

# Starts up redis as well
docker compose up client server --build

Run Locally

  1. Clone the repository

    git clone https://github.com/soorya-u/votex.git
  2. Install Stellar CLI

  3. Create a new Account using Stellar CLI

    stellar keys generate <name> --network testnet --fund
    
  4. Navigate to web3 Directory

    cd web3
  5. Run the Deploy Command with Username and Network Options as Parameters to get the Deployed Contract Address

    .\scripts\deploy.ps1 -Source <your-username> -Network testnet
    ./scripts/deploy.sh SOURCE=<your-username> NETWORK=testnet
  6. Connect to Freighter Wallet by importing the account using the secrets

    stellar keys show <your-username>
  7. Retrieve API Keys from Pinata and Twilio

  8. Navigate to Server

    cd server
  9. Create .env and fill the required variables

    cp .env.example .env
  10. Install all the required packages

    poetry install
  11. Run the FastAPI Server

    poetry run fastapi dev src
  12. Navigate to Client

    cd client
  13. Create .env and fill the required variables

    cp .env.example .env
  14. Install Dependencies

    bun install
  15. Run the Development Server

    bun dev

Roadmap

  • Rasa Chatbot Integration

See the open issues for a full list of proposed features (and known issues).

About

An AI driven Stellar based Decentralized Voting Application which empowers communities to make decisions collectively with confidence.

Topics

Resources

Stars

Watchers

Forks

Contributors 3

  •  
  •  
  •