An interactive Web3 educational portal for Ethereum workshops, built for the Road to DevCon India campaign.
๐ Documentation โข ๐ช DevCon 8 โข ๐ง GRYD โข ๐ @TeamGRYD
Road to DevCon 8: Workshops Edition is a full-stack Web3 educational platform designed to onboard engineering students into the Ethereum ecosystem. Built by GRYD as part of the Road to DevCon India campaign, this portal powers in-person workshops leading up to DevCon 8 in Mumbai (November 3-6, 2026).
The workshop covers Ethereum's core principles through the CROPS framework:
| Letter | Principle | Description |
|---|---|---|
| C | Censorship Resistance | No entity can block valid transactions |
| R | Resistance to Capture | No small group can gain control |
| O | Open Source | All code is transparent and verifiable |
| P | Privacy | Users control what they share |
| S | Security | Code handles real value safely |
5 slide decks that can be presented directly from the portal, covering blockchain fundamentals through to DevCon 8 participation.
Server-side quiz engine with 400+ questions (100+ per topic). Each student gets 10 random questions with a 30-second hard timer. Features:
- Server-side grading โ correct answers never reach the browser
- Admin-signed scores โ prevents manual transaction forging
- One attempt only โ enforced on-chain per wallet per quiz
- Unique X usernames โ one registration per identity
- On-chain scoring โ scores stored on Sepolia testnet
Two hands-on, guided tutorials where participants deploy real smart contracts:
- Message Board โ A censorship-resistant, open-source message board
- Private Voting โ A commit-reveal voting contract with security best practices
Multi-event leaderboard powered by QuizScores.sol smart contracts on Sepolia. Each event (e.g., university workshop) gets its own contract and leaderboard, switchable via a dropdown. Each event links to its Luma page. Events are configured in src/config/events.js โ no env var changes needed.
MetaMask wallet connection with on-chain registration (name + X username permanently linked to wallet) and quiz score submission on Sepolia testnet.
| Layer | Technology |
|---|---|
| Frontend | Vanilla JavaScript, HTML, CSS |
| Build Tool | Vite |
| Blockchain | Ethers.js v6 |
| Smart Contract | Solidity ^0.8.19 |
| Network | Ethereum Sepolia Testnet |
| Serverless API | Vercel Functions |
| Documentation | Docusaurus 3 |
# Clone the repository
git clone https://github.com/TeamGRYD/Road2DevCon.git
cd Road2DevCon
# Install frontend dependencies
npm install
# Install API dependencies
cd api && npm install && cd ..
# Copy environment config
cp .env.example .env
# Start with Vercel (includes serverless API)
npx vercel devClient-side (in .env file):
VITE_CONTRACT_ADDRESS=<deployed-QuizScores-contract-address>
VITE_RPC_URL=https://ethereum-sepolia-rpc.publicnode.comServer-side (in Vercel Dashboard โ Settings โ Environment Variables):
| Variable | Description |
|---|---|
ADMIN_PRIVATE_KEY |
Admin wallet private key (signs quiz scores) |
ADMIN_ADDRESS |
Admin wallet address |
JWT_SECRET |
Random 32+ character string for session tokens |
RPC_URL |
Sepolia RPC URL (default: https://ethereum-sepolia-rpc.publicnode.com) |
โ ๏ธ Security Note: Server-side variables must NOT have theVITE_prefix. Never store private keys in.envfiles that are committed to version control.
Note: The portal works for presentations and quests without a deployed contract. The contract + API are only needed for quiz scoring and the leaderboard.
Road2DevCon/
โโโ index.html # Entry point (nav, footer, meta)
โโโ style.css # Global styles and DevCon theme
โโโ package.json # Frontend dependencies (Vite, Ethers.js)
โโโ vercel.json # Vercel routing configuration
โโโ .env.example # Environment template
โ
โโโ contracts/
โ โโโ QuizScores.sol # On-chain quiz scores (anti-cheat)
โ
โโโ api/ # Vercel Serverless Functions
โ โโโ package.json # API dependencies (ethers, jsonwebtoken)
โ โโโ lib/
โ โ โโโ jwt.js # JWT session management
โ โ โโโ questions.js # 400+ questions with correct answers
โ โโโ quiz/
โ โโโ start.js # Serve random questions (no answers)
โ โโโ answer.js # Grade answers server-side
โ โโโ complete.js # Sign score with admin key
โ
โโโ src/
โ โโโ main.js # Page rendering and routing
โ โโโ router.js # Hash-based SPA router
โ โโโ slides.js # Presentation slide engine
โ โโโ quiz.js # Quiz engine (server-backed, 30s timer)
โ โโโ leaderboard.js # Multi-event on-chain leaderboard
โ โโโ wallet.js # MetaMask wallet + registration
โ โโโ abi.js # QuizScores contract ABI
โ โโโ config/
โ โ โโโ events.js # Event definitions (name + contract address)
โ โโโ data/
โ โโโ presentations.js # 5 presentation content sets
โ โโโ quizQuestions.js # Quiz metadata (NO correct answers)
โ โโโ workshopQuests.js # Quest step-by-step guides
โ
โโโ public/
โ โโโ images/ # Logos, hero images, icons
โ
โโโ docs/ # Docusaurus documentation site
โ โโโ docusaurus.config.js
โ โโโ docs/ # Markdown documentation
โ โโโ static/ # Documentation assets
โ
โโโ .github/
โโโ workflows/
โโโ deploy-docs.yml # GitHub Pages deployment
The QuizScores.sol contract stores participant quiz scores on-chain with anti-cheat protections:
- Separate registration โ name + X username permanently linked to wallet
- Admin-signed scores โ ECDSA signature verification prevents score forging
- One attempt per quiz โ
hasAttemptedmapping enforces single attempts - Unique X usernames โ case-insensitive uniqueness check
- Nonce replay protection โ prevents signature replay attacks
- Batch reads โ efficient leaderboard queries with pagination
- Open remix.ethereum.org
- Create
QuizScores.soland paste the contract code - Compile with Solidity 0.8.19+
- Deploy via "Injected Provider - MetaMask" (Sepolia network)
- Pass your admin wallet address as the constructor argument
- Copy the contract address to your
.envfile
See the Smart Contract Documentation for full API reference.
Comprehensive documentation is available at:
Includes:
- Portal overview and setup guide
- Full presentation content with further reading
- Step-by-step quest walkthroughs
- Smart contract API reference
- Anti-cheat quiz system architecture
- Curated learning resources
cd docs
npm install
npm startnpm run buildThe production build is output to dist/. Deploy to Vercel for full functionality (frontend + serverless API).
Contributions are welcome! Areas where you can help:
- Documentation: Fix typos, improve explanations
- Translations: Help translate content for Indian languages
- New Quests: Design additional hands-on tutorials
- Quiz Questions: Add more high-quality questions to the pool
- UI/UX: Improve the portal's design and accessibility
- Bug Reports: Open an issue if you find something broken
This project is open source under the Apache License 2.0.
Built for DevCon 8 Mumbai ๐ฎ๐ณ with ๐ by GRYD
- DevCon โ Ethereum Foundation's flagship conference
- Ethereum Foundation โ Supporting the Ethereum ecosystem
- Road to DevCon โ Community-led events leading to DevCon
