ETHShala is a comprehensive, gamified learning platform designed to educate developers and enthusiasts on Ethereum Improvement Proposals (EIPs) and the core concepts shaping the Ethereum ecosystem.
The Ethereum ecosystem moves fast, and the protocol layer can be intimidating. ETHShala bridges this gap by normalizing the complex EIP lifecycle into structured, interactive learning modules. Users can:
- Learn: Master EIPs through curated lessons and modules.
- Earn: Gain XP and achievements for completing assignments and lessons.
- Engage: Join the Campus Ambassador Program (CAP) and refer friends to grow the community.
- Redeem: Spend earned XP in the Marketplace for exclusive rewards and NFTs.
- Framework: Next.js 15 (App Router, Server Components)
- Language: TypeScript
- Styling: Tailwind CSS 4
- Auth: Better Auth
- Web3: Wagmi, Viem, RainbowKit
- Icons: Lucide React
- Notifications: Sonner
/
├── apps/
│ ├── web/ # Next.js frontend
│ └── api/ # NestJS backend
├── packages/
│ └── database/ # Shared database utilities
└── prisma/ # Global Prisma schema & migrations
- Node.js: Latest LTS recommended
- pnpm:
pnpm add -g pnpm - PostgreSQL: A running instance (local or hosted)
- Clone the repository
- Install dependencies:
pnpm install
- Set up environment variables:
Copy
.env.examplein the root,apps/web, andapps/apito.envand fill in the required values.
# Push schema to DB
npx prisma db push
# Generate Prisma client
npx prisma generate
# Seed the database (Modules, Assignments, Rewards)
cd apps/api && npx prisma db seedRun all services in parallel:
pnpm devWe have recently completed an extensive system audit and refactor:
- Phase 1: Security - Hardcoded credentials removed, dynamic CORS implemented.
- Phase 2: Standardization - Atomic UI library built, strict typing enforced.
- Phase 3: LMS Logic - DB-backed lesson tracking and difficulty-weighted skill radar.
- Phase 4: Community - Standardized referral URL logic and polished empty states.
- Phase 5: Production Polish - SEO/OpenGraph optimization and global toast system.
We welcome contributions! Whether it's fixing a bug, adding a new EIP module, or improving the UI, feel free to open an issue or submit a PR.
- Fork the repo.
- Create your feature branch (
git checkout -b feature/AmazingFeature). - Commit your changes (
git commit -m 'Add AmazingFeature'). - Push to the branch (
git push origin feature/AmazingFeature). - Open a Pull Request.
This project is licensed under the UNLICENSED license.
Built with ❤️ for the Ethereum Community.