This project presents a secure, decentralized mobile voting application designed for presidential and legislative elections. Leveraging NFC (Near Field Communication) for voter authentication and blockchain technology for ensuring vote integrity, the system enhances electoral transparency, security, and accessibility. Developed as part of a master's thesis at Badji Mokhtar University - Annaba, Algeria, the application streamlines the voting process while addressing challenges like voter fraud, low turnout, and logistical inefficiencies.
- NFC Authentication: Securely authenticate voters using Algeria's National Biometric Electronic Identity Card (CNIBE).
- Facial Recognition: Verify voter identity via real-time facial recognition to prevent impersonation.
- Blockchain Integration: Immutably record votes on a blockchain (Ethereum-based) using smart contracts.
- Multi-Factor Security: Private key validation and encrypted transactions.
- Real-Time Results: Transparent, tamper-proof results accessible post-election.
- User-Friendly Interface: Built with Flutter for cross-platform compatibility.
- Mobile App:
- Flutter & Dart for UI/UX.
- Android SDK & NFC Reader for CNIBE scanning.
- Backend:
- Firebase for authentication and data storage.
- Blockchain:
- Solidity for smart contracts.
- Truffle Framework & Ganache for local blockchain deployment and testing.
- Tools:
- Android Studio for development.
- Git for version control.
- Clone the Repository:
- git clone https://github.com/abdennour-GUESSOUM/INTAKHIBDZ
- cd INTAKHIBDZ
- Install Dependencies:
- flutter pub get
- Set Up Firebase:
- Create a Firebase project and update google-services.json (Android)
- Deploy Smart Contracts:
- truffle migrate --network ganache
- Run the App:
- flutter run
- Launch the App: Open the app follow instructions on the onboarding screens.
- NFC Authentication:
- Enter the Machine Readable Zone (MRZ) code from your CNIBE.
- Place the CNIBE card against the phone to start the scannig process via NFC.
- Facial Recognition: Capture a live photo for real time identity verification.
- Private Key Validation: Enter the unique private key provided.
- Vote:
- Select a candidate/party.
- Cast and confirm your choice with a secure PIN.
- View Results: Access real-time results post-election via the blockchain explorer once elections closed.
- Badji Mokhtar University - academic support.
- Flutter, Firebase, and Truffle communities for open-source tools.
Note: This project is still in development.