Web3 Student Lab is an open-source educational platform that helps students learn blockchain, smart contracts, open-source collaboration, and hackathon project development in one place.
The platform provides interactive tools, coding environments, and guided learning paths designed for beginners and university students.
- New contributors with environment issues can start here: docs/FAQ.md
- Blockchain Learning Simulator: Visually learn how blockchains work (create transactions, mine blocks, view hashes, and see how blocks connect).
- Smart Contract Playground: Write, run, and test smart contracts directly in your browser. Focuses on Soroban contracts written in Rust.
- Web3 Learning Roadmap: A guided path spanning programming fundamentals, cryptography, blockchain architecture, smart contracts, and full Web3 applications.
- Hackathon Project Idea Generator: Overcome coder's block by generating ideas based on technology and sector preferences.
- Open Source Contribution Trainer: Get hands-on with Git, simulated GitHub issues, and PR exercises to confidently contribute to open source.
Frontend
- React / Next.js
- Tailwind CSS
- Monaco Editor
Backend
- Node.js / Express
- PostgreSQL
Blockchain Integration
- Stellar SDK
- Soroban Smart Contracts
timeline
title Web3 Student Lab - Development Timeline
Phase 1: Discovery : Architecture Planning : Concept Validation : UI/UX Wireframing
Phase 2: Development : Core Modules Build : Smart Contract Playground : Backend Integration
Phase 3: Deployment : MVP Launch : Beta Testing : University Outreach
Objective: Define the core platform architecture, validate learning mechanisms, and design the initial curriculum.
- Milestones:
- Initial repository setup and architecture planning
- Define Soroban/Stellar learning roadmap
- UI/UX wireframes for the Blockchain Simulator
Objective: Build out the core modules, integrate blockchain functionalities, and develop the interactive playground.
- Milestones:
- Implement Next.js + Tailwind frontend
- Integrate Monaco Editor for Smart Contract Playground
- Set up PostgreSQL and Node.js backend infrastructure
Objective: Launch the MVP, onboard the first cohort of students, and gather metrics for future iterations.
- Milestones:
- Deploy backend and database to cloud infrastructure
- Host the frontend application
- Open the platform for beta testing
web3-student-lab/
βββ contracts/ # Platform smart contracts (e.g., on-chain certificates)
βββ frontend/ # Next.js/React frontend application
β βββ simulator/ # Visual blockchain tools
β βββ playground/ # In-browser smart contract editor
β βββ roadmap/ # Learning progress tracking and paths
β βββ ideas/ # Hackathon project generator UI
βββ backend/ # Node.js backend application
β βββ blockchain/ # Interaction with Stellar/Soroban
β βββ contracts/ # Compilation and execution engine for student code
β βββ learning/ # Curriculum and progress APIs
β βββ generator/ # Prompt/AI layer for hackathon ideas
βββ docs/ # Documentation and learning materials
This repository is a monorepo with three main parts:
frontend/for the Next.js applicationbackend/for the Express + Prisma APIcontracts/for Soroban smart contracts written in Rust
You can work on the web app with Node.js alone, but you will need Rust and the Soroban CLI to build or test the smart contracts.
Install these tools before starting:
- Node.js: version 20 LTS or newer
- npm: included with Node.js
- Rust: stable toolchain installed with
rustup - Soroban CLI: for building, testing, and deploying contracts
- PostgreSQL 15+ or Docker Compose: for the backend database
Download Node.js from the official website:
Verify your installation:
node --version
npm --versionInstall Rust with rustup:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shRestart your terminal, then verify:
rustc --version
cargo --versionAdd the WebAssembly target required for Soroban contracts:
rustup target add wasm32-unknown-unknownInstall the Soroban CLI with Cargo:
cargo install --locked soroban-cliVerify the installation:
soroban --versionFor a beginner-friendly Soroban walkthrough, see SOROBAN_GUIDE.md.
git clone https://github.com/StellarDevHub/Web3-Student-Lab.git
cd Web3-Student-LabInstall all JavaScript dependencies from the project root:
npm run install-allIf you prefer to install packages manually:
cd backend && npm install
cd ../frontend && npm install
cd ..Create the backend environment file at backend/.env:
DATABASE_URL="postgresql://postgres:postgres@localhost:5432/web3-student-lab?schema=public"
PORT=8080
NODE_ENV=development
JWT_SECRET=change-this-in-developmentCreate the frontend environment file at frontend/.env.local:
NEXT_PUBLIC_API_URL=http://localhost:8080/api
NEXT_PUBLIC_SOROBAN_RPC_URL=https://soroban-testnet.stellar.org
NEXT_PUBLIC_CERTIFICATE_CONTRACT_ID=Choose one of the following options.
From the project root:
docker compose up -d dbThis starts PostgreSQL on localhost:5432.
Create a database named web3-student-lab, then make sure your DATABASE_URL in
backend/.env matches your local PostgreSQL username and password.
From the backend/ directory:
npx prisma generate
npx prisma migrate deployIf you want seed data and the project requires it:
npx prisma db seedRun the backend:
cd backend
npm run devIn a second terminal, run the frontend:
cd frontend
npm run devOr run both from the project root:
npm run dev-allYou can then access:
- Frontend:
http://localhost:3000 - Backend API:
http://localhost:8080 - Health check:
http://localhost:8080/health
From the contracts/ directory, run:
cargo test
cargo build --target wasm32-unknown-unknown --releaseThis will validate the Rust contracts and produce a WASM build for deployment.
Use these commands to confirm your setup is working:
node --version
rustc --version
soroban --version
cd backend && npm test
cd ../contracts && cargo testThe easiest way to set up the local development environment (backend and database) is using Docker Compose.
- Clone the repository and navigate to the root directory.
- Run the following command:
docker compose up --build
- The backend will be available at
http://localhost:8080. - The PostgreSQL database will be accessible at
localhost:5432.
- Stop the environment:
docker compose down - View logs:
docker compose logs -f - Restart a specific service:
docker compose restart backend
We love our contributors! This project is being built for students, by students and open-source enthusiasts.
Important: Please add an ETA (no more than 2 days) when expressing interest in an issue to help us keep development moving quickly.
To start contributing:
- Read our Contribution Guidelines.
- Review our Security Best Practices.
- Read the CI/CD Pipeline Guide.
- Check out our existing Issues or look for the
good first issuelabel. - Fork the repository and submit a Pull Request!
This project is licensed under the MIT License - see the LICENSE file for details.