INSPIRATION Most digital voting tools force a trade-off: either they are easy to use but centralized and hard to trust, or they are fully on-chain but exclude people without wallets or gas fees. I wanted something practical for real groups, schools, student unions, clubs, DAOs, and communities where organizers can run transparent elections without forcing every participant into crypto complexity. That inspired Devotify, a hybrid voting platform where only the creator pays gas, voters can participate with or without a wallet, and final results remain publicly verifiable on the blockchain.
WHAT IT DOES Devotify lets organizers create elections and choose how people participate:
Open mode: Anyone with a wallet can register and vote ID mode: Voters register using an identity key provided by the organizer Credential mode: Voters skip registration and vote with an ID and password added to the Database by the creator of the election
KEY CAPABILITIES Creators deposit DVY tokens and launch elections Voters can use a wallet or non-wallet flow Votes are recorded and tallied with on-chain transparency Results can be revealed and independently verified against an on-chain hash A faucet lets creators claim test DVY tokens on Sepolia
HOW I BUILT IT I built Devotify as a full-stack decentralized application:
-Smart contracts (Solidity) for election creation, registration, voting, result revelation, DVY token, and a faucet. -Backend (FastAPI / Python) for wallet-optional flows, credential authentication, metadata, and indexing -Frontend (React and TypeScript) with Wagmi and RainbowKit for wallet connection and election UX -Deployment on Railway (backend) and Vercel (frontend), with contracts on Ethereum Sepolia
The system is hybrid by design: critical integrity lives on-chain, while usability features live off-chain.
CHALLANGES I RAN INTO
Supporting both wallet and non-wallet voters without breaking trust assumptions Handling production deployment issues: environment variables, CORS, SPA routing, and API base URLs Removing Windows-only packages from requirements.txt for Linux deployment on Railway Fixing RainbowKit crashes caused by a missing WalletConnect project ID Keeping the MVP focused while still supporting multiple participation modes
ACCOMPLISHMENTS THAT I'M PROUD OF
A working end-to-end prototype, not just a concept Wallet-optional voting while preserving on-chain verifiability Flexible creator-controlled participation modes Live deployment of frontend, backend, and smart contracts A practical design aimed at real organizations, not only crypto-native users
WHAT I'VE LEARNED
-Decentralization is most useful when paired with accessibility. -Hybrid architecture can deliver both transparency and usability. -Production issues teach more than local demos. -Clear product decisions (like participation modes) matter as much as technical ones. -Shipping a usable MVP requires constant trade-offs between scope and polish.
WHATS NEXT FOR DEVOTIFY -Deploy to a low-cost L2 for real usage beyond testnet -Improve identity and anti-Sybil options -Add stronger privacy features for sensitive elections -Build better admin tools for organizers -Explore partnerships with schools, student groups, and community organizations.
Built With
- bcrypt
- erc-20
- ethereum
- fastapi
- hardhat
- javascript
- openzeppelin
- python
- python-dotenv
- railway
- rainbowkit
- react
- router
- sepolia
- solidity
- sqlite
- typescript
- uvicorn
- vercel
- viem
- vite
- wagmi
- walletconnect
- web3.py
Log in or sign up for Devpost to join the conversation.