"Trust comes from code, not authority."
Every record is immutable, verifiable, and transparent โ secured by Algorand's Pure Proof-of-Stake.
๐ฌ Watch Demo Video โ
Campus systems like voting, attendance, feedback, and certification suffer from:
| Problem | Traditional System | Strotas Solution |
|---|---|---|
| ๐ด Trust deficit | "Trust the admin" | Trust the code โ results are on-chain |
| ๐ด Data tampering | Editable databases | Immutable blockchain records |
| ๐ด Proxy attendance | Buddy signs for you | Wallet = Identity, cryptographic proof |
| ๐ด Fake certificates | Easy to forge PDFs | SHA-256 hash verification on Algorand |
| ๐ด No transparency | Closed-door counting | Anyone can audit via Pera Explorer |
- 1 Wallet = 1 Vote โ enforced by a PyTeal smart contract
- On-chain vote tallying with live results
- Multi-election support (create unlimited polls)
- Smart contract prevents double-voting, close-out resets, and admin manipulation
- View on Pera Explorer โ
- Mark attendance with a blockchain transaction โ zero proxy possible
- SHA-256 hashed session data stored permanently on Algorand
- Each record linked to a verifiable transaction ID
- Auto-generated session IDs with timestamps
- Upload any certificate (PDF/PNG/JPG) โ generates SHA-256 hash
- Hash is permanently stored on Algorand as cryptographic proof
- Verify mode: Re-upload any certificate to check authenticity instantly
- If even 1 pixel changes, the hash won't match โ tamper-proof
- Secure Sharing: Create temporary, view-only links with customizable expiration (5s to 7 days). Viewers cannot copy or print.
- No wallet needed โ generates a temporary Algorand keypair in-browser
- Perfect for hackathon demos and presentations
- Fund via Algorand TestNet Faucet
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ STROTAS FRONTEND โ
โ Next.js 16 + React 19 + Tailwind โ
โ โ
โ โโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ โ
โ โ Voting โ โ Attendance โ โ Certificates โ โ
โ โ Module โ โ Module โ โ Module โ โ
โ โโโโโโฌโโโโโโ โโโโโโโโฌโโโโโโโโ โโโโโโโโโฌโโโโโโโโ โ
โ โ โ โ โ
โ โโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ โโโโโโโโโโผโโโโโโโโโโ โ
โ โ WalletContext โ โ
โ โ (Pera / Guest) โ โ
โ โโโโโโโโโโฌโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โ algosdk (sign + submit)
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ALGORAND TESTNET (Layer 1) โ
โ โ
โ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Smart Contract โ โ Transaction Note Storage โ โ
โ โ (PyTeal AVM8) โ โ (Attendance & Cert Hashes)โ โ
โ โ โ โ โ โ
โ โ Global State: โ โ 0-ALGO self-transfers โ โ
โ โ โข is_open โ โ with JSON note payloads โ โ
โ โ โข option_0 โ โ โ โ
โ โ โข option_1 โ โ { type: "ATTENDANCE", โ โ
โ โ โข creator โ โ hash: "a3f8c1..." } โ โ
โ โ โ โ โ โ
โ โ Local State: โ โ { type: "CERTIFICATE", โ โ
โ โ โข has_voted โ โ hash: "b7d2e4..." } โ โ
โ โ โข choice โ โ โ โ
โ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ ~3.8s finality โข ~0.001 ALGO/tx โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Zero backend. Zero database. 100% on-chain.
| Layer | Technology | Purpose |
|---|---|---|
| Frontend | Next.js 16 + React 19 | App Router, SSR, routing |
| Styling | Tailwind CSS 4 + Framer Motion | Premium UI with animations |
| 3D | Spline + Three.js | Interactive 3D hero visualization |
| UI Components | Radix UI + Lucide Icons | Accessible, consistent components |
| Blockchain | Algorand TestNet (AVM v8) | Immutable record storage |
| Smart Contracts | PyTeal (Python) | Voting contract logic |
| Wallet | Pera Wallet SDK | Secure transaction signing |
| SDK | algosdk v2.7 | Algorand interaction layer |
STROTAS/
โ
โโโ ๐ README.md โ You are here
โ
โโโ ๐ contracts/ โ โญ SMART CONTRACT CODE
โ โโโ voting.py โ PyTeal voting contract (core logic)
โ โโโ deploy_voting.py โ Deployment script for Algorand TestNet
โ โโโ generate_wallet.py โ Deployer wallet generation utility
โ โโโ requirements.txt โ Python dependencies (pyteal, algosdk)
โ
โโโ ๐ src/
โ โโโ app/
โ โ โโโ page.tsx โ โญ Homepage with 3D Spline scene
โ โ โโโ layout.tsx โ Root layout with WalletProvider
โ โ โโโ vote/page.tsx โ โญ Voting module (smart contract UI)
โ โ โโโ attendance/page.tsx โ โญ Attendance module (hash storage)
โ โ โโโ certificate/page.tsx โ โญ Certificate module (verify + store)
โ โ โโโ certificate/share/[data]/page.tsx โ โญ Secure Sharing (view-only link)
โ โ
โ โโโ context/
โ โ โโโ WalletContext.tsx โ โญ Pera Wallet + Guest Mode provider
โ โ
โ โโโ lib/
โ โ โโโ algorand.ts โ โญ All Algorand SDK interactions
โ โ
โ โโโ components/ui/ โ Reusable UI components (Button, Card, etc.)
โ
โโโ ๐ docs/
โ โโโ MVP_FLOW.md โ System flow documentation
โ โโโ HACKATHON_STRUCTURE.md โ Project structure reference
โ
โโโ .env.local โ Environment config (App IDs, Algod endpoint)
โโโ package.json โ Dependencies and scripts
| Priority | File | What It Demonstrates |
|---|---|---|
| ๐ฅ | contracts/voting.py |
PyTeal smart contract โ 1 wallet = 1 vote, on-chain state |
| ๐ฅ | src/lib/algorand.ts |
All blockchain interactions (vote, attend, certify) |
| ๐ฅ | src/app/vote/page.tsx |
Full voting flow: opt-in โ vote โ live results |
| ๐ฅ | src/context/WalletContext.tsx |
Pera Wallet integration + Guest Mode for demos |
| ๐ฅ | src/app/attendance/page.tsx |
Hash-based attendance proof on Algorand |
| ๐ฅ | src/app/certificate/page.tsx |
SHA-256 certificate verification system |
| ๏ฟฝ | src/app/certificate/share/.../page.tsx |
Secure view-only link sharing system |
| ๏ฟฝ๐ฅ | src/app/page.tsx |
Premium UI with 3D visualization |
| ๐ฅ | contracts/deploy_voting.py |
Automated contract deployment pipeline |
git clone https://github.com/your-username/strotas.git
cd strotas
npm installcp .env.example .env.local# .env.local
NEXT_PUBLIC_ALGOD_SERVER=https://testnet-api.algonode.cloud
NEXT_PUBLIC_ALGOD_PORT=443
NEXT_PUBLIC_ALGOD_TOKEN=
NEXT_PUBLIC_VOTING_APP_ID=755380217 # Pre-deployed on TestNetnpm run dev
# โ Opens at http://localhost:3000cd contracts
pip install -r requirements.txt
python generate_wallet.py # Generate deployer wallet
# Fund it at https://bank.testnet.algorand.network/
set DEPLOYER_MNEMONIC="your 25 word mnemonic"
python deploy_voting.py # Deploy โ get new App IDStep 1: Open app โ Show premium 3D landing page
โ
Step 2: Connect Pera Wallet (or use Guest Mode)
โ
Step 3: ๐ณ๏ธ VOTING โ Opt-in โ Cast vote โ See live results
โ Show transaction on Pera Explorer
โ
Step 4: ๐ ATTENDANCE โ Generate Session โ Mark Present
โ Show hash stored on-chain
โ
Step 5: ๐ CERTIFICATE โ Upload PDF โ Store hash
โ Share Link (5s expiry) โ Show auto-expiry & anti-copy
โ Switch to Verify mode โ Re-upload โ โ
Match!
โ Modify file โ Re-upload โ โ No match! (tamper detected)
โ
Step 6: Show Pera Explorer โ All transactions are public & auditable
๐ก Tip: Use "Change Election" to switch to a fresh App ID if you need to vote again with the same wallet.
| Criteria | How We Excel |
|---|---|
| Innovation | Zero-database architecture โ no backend, no SQL, pure blockchain |
| Technical Depth | Custom PyTeal smart contract with local + global state management |
| Completeness | 3 fully functional modules: Voting + Attendance + Certificates |
| UX Quality | Premium dark UI with 3D Spline scene, Framer Motion animations |
| Algorand Usage | Smart Contracts (ABI calls) + Transaction Notes (hash storage) โ dual approach |
| Trust Model | Every action is verifiable on Pera Explorer โ zero admin control |
| Demo-Ready | Guest Mode generates instant wallets โ no setup needed for judges |
| Scalability | Multi-election support, session-based attendance, unlimited certificates |
- โ 1 wallet = 1 vote โ Smart contract rejects duplicates
- โ
No admin override โ Contract rejects
UpdateApplicationandDeleteApplication - โ
No vote reset โ
ClearStateis rejected to prevent gaming - โ Public auditability โ Every transaction visible on Pera Explorer
- โ Cryptographic proofs โ SHA-256 hashes ensure certificate integrity
| Resource | URL |
|---|---|
| ๐ Live App | http://localhost:3000 (run locally) |
| ๐ Voting Contract | App ID 755380217 on Pera Explorer |
| ๐ฐ TestNet Faucet | bank.testnet.algorand.network |
| ๐ฑ Pera Wallet | Download |
Team Strotas โ Hackspiration'26
Trust is a protocol, not a promise.

