I asked Claude :
hey bro : here is my proposal for a mobile app for remote voting. Please give a comprehensive system architecture ( along with U / I and softwares ) for this > http://www.hemenparekh.in/2013/08/votesapp.html ... 18 Dec 2012
Claude replied :
Great proposal from Hemenparekh! The VotesApp idea is ahead of its time — Aadhaar-linked mobile voting with selfie verification. Let me build you a comprehensive system architecture for this.
V
Now let's look at the two critical user flows — registration and voting:
V
Now the mobile UI mockups — the actual screens a voter sees:
V
Here's the full comprehensive breakdown:
VotesApp — Complete System Architecture
Software Stack
Mobile (Android / iOS)
- React Native or Flutter (single codebase for both platforms)
- Available on: Google Play, App Store, GetJar, EC official site
- Pre-loaded on government devices (Aakash tablets, future schemes)
Backend Microservices
- Language: Go (for high concurrency — critical on election day spikes) + Python for AI/ML workloads
- Framework: gRPC internally, REST + GraphQL for clients
- Container orchestration: Kubernetes on NIC's MeghRaj sovereign cloud
Databases
- Voter registry: PostgreSQL with HA replication (never loses a row)
- Vote ledger: Permissioned blockchain (Hyperledger Fabric) — append-only, immutable, auditable
- Sessions / OTP: Redis Cluster
- Selfie hashes: Object store (S3-compatible) — faces never stored raw, only cryptographic hashes
Security
- End-to-end encryption: Ballots encrypted with ElGamal / homomorphic encryption so votes can be tallied without decrypting individual votes
- Zero-knowledge proofs: Voter can verify their vote was counted without revealing who they voted for
- Hardware Security Modules (HSM): All keys managed in HSM — tally keys split among EC officials (multi-party threshold)
- TLS 1.3 on all transport
AI / Face Match
- Selfie liveness detection (prevents photos of photos)
- Face matching against Aadhaar ABIS (Automated Biometric Identification System) via UIDAI API
- On-device preprocessing → cloud match (selfie never stored post-match)
Key Design Decisions aligned with Hemenparekh's proposal
| Proposal Feature | Implementation |
|---|---|
| Aadhaar-linked registration | UIDAI API with demographic + biometric verification |
| Mobile number binding | Telecom API + OTP; vote only castable from registered SIM |
| Underage prevention | Date of birth verified via Aadhaar — server-enforced, not just UI |
| Selfie match (2015 addition) | Liveness check + ABIS face match at both registration AND vote time |
| One vote only | Vote ledger checks voter ID before accepting — app hard-locked after |
| Physical booth exclusion | EC voter rolls updated in real-time; polling officer app cross-checks |
| Long-press candidate details | Candidate assets/criminal record pulled from EC affidavit API |
| NOTA option | Fully supported in ballot UI |
| Booth capture impossible | No physical location — attack surface is cryptographic, not physical |
Scale Planning (election day)
900M+ eligible voters; peak concurrency could hit 50M+ votes/hour. The architecture handles this via: horizontal pod autoscaling on Kubernetes, Redis caching for candidate lists, async vote processing via message queues (Kafka), and CDN edge nodes for static assets. Vote casting itself is sub-100ms — the blockchain write happens asynchronously after the voter gets their confirmation.
Click any node in the architecture diagram above to explore a specific component!
No comments:
Post a Comment