A React Native/Expo application for secure digital voting using passport NFC verification and zero-knowledge proofs.
- Passport MRZ scanning via camera (TD1 ID cards, TD3 passports)
- NFC passport chip reading with BAC authentication
- Zero-knowledge identity verification via Rarimo protocol
- Multi-step voting flow with video guidance
- Bilingual support (French/English)
- Node.js 20+
- Expo CLI (
npm install -g expo-cli) - iOS: Xcode 15+, CocoaPods
- Android: Android Studio, NDK 26.1.10909125
# Install dependencies
npm install
# Generate native projects
npx expo prebuild
# Run on iOS
npx expo run:ios
# Run on Android
npx expo run:androidreferendum-citoyen/
├── app/ # Expo Router screens
├── components/ # React components
│ ├── voting-modal/ # Voting flow components
│ └── icons/ # SVG icons
├── contexts/ # React context providers
├── hooks/ # Custom React hooks
├── utils/ # Utility functions
├── constants/ # Theme and content constants
├── modules/ # Native modules
│ └── e-document/ # NFC passport reading module
├── locales/ # i18n translations
└── assets/ # Images, fonts, videos
# Start Expo development server
npm start
# Run linter
npm run lint
# Format code
npm run format
# Run tests
npm test- Integration Guide - Detailed setup for native modules
- Roadmap - Development roadmap and tasks
- Expo - React Native framework
- Expo Router - File-based routing
- react-native-vision-camera - Camera and OCR
- react-native-nfc-manager - NFC access
- @rarimo/rarime-rn-sdk - Zero-knowledge identity
See CONTRIBUTING.md for guidelines.
You can support with donations:
- XMR: 8AJcjG2wi9M98sAmCnwQp3FtQqeTNns1TM9qatAN149gguYNBorFDwjVgCZtGMCyNHAwM5kvD4sTw4NSr5JEMSEH69HFSYX
- BTC: bc1qvgu3emmlusemt8q9l8pueg70auny88pgvsg7fp