A polished, browser-based coding environment for high-school introductory robotics courses.
No installation. No admin passwords. No server required. Just open index.html in any browser.
| Feature | Details |
|---|---|
| ๐งฉ Visual Blockly Editor | Drag-and-drop blocks with simplified, student-friendly Dobot commands |
| ๐ Python Editor | Full-featured Monaco editor (VS Code engine) with syntax highlighting |
| โก Event Sheet | "When [Event] โ Do [Action]" visual programming like Construct/GDevelop |
| ๐ค Robot Simulator | On-screen animated robot arm to visualize programs before running |
| ๐ GitHub Classroom | Auto-pull assignments, save & push code โ all via GitHub API |
| ๐ฉโ๐ซ Teacher Dashboard | View all student repos, track progress, open any student's code |
| ๐ฎ VEX Upload | Drag & drop VEX blocks or Python files directly to GitHub repos |
| ๐ง AI Robot Blocks | Color detection, object detection, face detection, line-following |
Option A (Recommended): Double-click index.html to open it in your browser.
Option B: Open any browser and go to File โ Open File โ index.html.
๐ก No download, no installation, no admin password needed!
- Go to github.com/settings/tokens/new
- Give it a name like "Robotics Class"
- Check
repoandread:orgscopes - Click Generate token and copy the token (starts with
ghp_)
- Paste your token into the login screen
- Select Student or Teacher role
- Click Connect & Enter ๐
The editor has three coding modes โ switch between them with the tabs at the top:
- Drag blocks from the left panel into the workspace
- Categories: Movement, Gripper, Speed, Actions, AI Features, VEX Robot, Control, Numbers
- Click Generate Python to convert your blocks to Python code
- Full Python editor powered by Monaco (VS Code engine)
- Syntax highlighting, autocomplete, and line numbers
- Press Ctrl+S to save directly to GitHub
- Click Add Event to choose what triggers your code (button press, timer, AI detectionโฆ)
- Click Add Action to choose what the robot does
- Click Generate Python to see the equivalent Python code
| Robot | Blocks | Python | AI Features |
|---|---|---|---|
| Dobot Magician | โ | โ | โ |
| Dobot AI Starter | โ | โ | โ Color, Object, Face, Line |
| Dobot Magician + AI Kit | โ | โ | โ Full AI suite |
| VEX IQ / V5 | โ | โ | โ |
Instead of complex coordinate commands, students use plain-English blocks:
| Block | What it does |
|---|---|
Move Forward 50 mm |
Move the arm toward you |
Move Up 20 mm |
Raise the arm |
Grab (Suction ON) |
Pick up an object using suction |
Release |
Let go of the object |
Set Speed: Slow |
Make movements slow and safe |
Wait 1 seconds |
Pause before the next step |
AI: Detect Color |
Use the camera to see what color an object is |
- View assignments on the Dashboard โ all your GitHub repos appear automatically
- Open a repo โ browse files โ open and edit code
- Save with Ctrl+S โ your code is pushed to GitHub instantly
- No git commands needed โ everything is automatic
- Switch to Teacher role when logging in
- Go to Student Progress to select your classroom (GitHub Organization)
- See all student repos, last-updated time, and open any repo to review code
- Click View Code on any student to open their repo in the editor
- Go to VEX Upload in the sidebar
- Enter the target repository (
username/repo-name) - Drag & drop your VEX file (
.vex,.v5python,.py) - Click Upload to GitHub โ done!
Supported VEX file types: .vex, .v5python, .py, .txt, .xml
The visual editor generates Python code you can run on a real Dobot in two ways:
The Local Bridge lets you click a button in the web IDE and have code execute on the robot immediately โ no terminal required.
pip install -r requirements-bridge.txt
# or manually:
pip install flask flask-socketio pydobot pyserialpython bridge.pyYou should see:
====================================================
Robotics Classroom โ Local Bridge
Listening on http://127.0.0.1:5000
Press Ctrl+C to stop
====================================================
- Open the IDE and navigate to the Editor view.
- Click ๐ Connect to Bridge in the toolbar.
- The button turns green when connected.
- Write or generate your Python code.
- Click ๐ค Run on Robot โ output streams live into the Robot Terminal panel.
โน Stop: Click the Stop button in the terminal header to terminate the program at any time.
The bridge connects via ws://127.0.0.1:5000 even when the IDE is served from an HTTPS host like GitHub Pages. Modern browsers permit this because 127.0.0.1 is treated as a secure context:
- Chrome 94+ / Edge: Allowed. The bridge also sends
Access-Control-Allow-Private-Network: trueto satisfy Chrome's Private Network Access preflight. - Firefox: Allowed โ no special action needed.
- Safari: May block. Enable Develop โ Disable Cross-Origin Restrictions in Safari's menu bar, or open the IDE locally over HTTP.
Save your .py file from the editor and run it:
pip install pydobot
python my_program.pyIf no robot is connected, the wrapper runs in simulation mode and prints every command โ great for testing at home!
- Windows 10/11 (Dobot USB driver)
- Python 3.8+
pip install pydobot pyserial- Dobot Magician USB cable connected
robotics-github-classroom-program/
โโโ index.html โ Open this in your browser!
โโโ bridge.py โ Local Python bridge server (run to control real robot)
โโโ requirements-bridge.txt โ Python deps for bridge.py
โโโ css/
โ โโโ styles.css โ All styling
โโโ js/
โ โโโ app.js โ Main application controller
โ โโโ bridge.js โ Local bridge WebSocket client
โ โโโ github-api.js โ GitHub API integration
โ โโโ blockly-setup.js โ Blockly + Dobot custom blocks
โ โโโ event-sheet.js โ Event sheet coding interface
โ โโโ robot-simulator.js โ On-screen robot simulator
โโโ dobot_wrapper/
โ โโโ __init__.py โ Python package entry point
โ โโโ robot.py โ DobotRobot class (simplified API)
โโโ examples/
โโโ 01_basic_movements.py
โโโ 02_pick_and_place_loop.py
โโโ 03_ai_color_sorting.py
โโโ 04_vex_basic_drive.py
- Your GitHub token is stored only in your browser's localStorage โ never sent to any server
- All GitHub API calls go directly from your browser to
api.github.com - The local bridge never receives GitHub tokens โ it only receives Python code for execution
- The bridge binds to
127.0.0.1only โ not accessible from outside your computer - No data is collected or stored anywhere else
| Problem | Solution |
|---|---|
| Blockly doesn't load | Check internet connection (needed to load Blockly from CDN) |
| "Login Failed" | Check your GitHub token has repo scope |
| Can't see assignments | Make sure you're a member of the GitHub Classroom organization |
| Monaco editor not loading | Check internet connection; a fallback text editor will be used instead |
| File not saving | Make sure your token has repo (write) permission |
| "Bridge Not Found" | Make sure python bridge.py is running on your computer |
| Bridge connects but robot doesn't move | Check the COM port in Settings matches your robot's actual port |
| Bridge works on Chrome but not Safari | Enable Develop โ Disable Cross-Origin Restrictions in Safari |
See the examples/ folder:
- 01_basic_movements.py โ Introduction to robot movements
- 02_pick_and_place_loop.py โ Using loops to move multiple objects
- 03_ai_color_sorting.py โ AI-powered color detection and sorting
- 04_vex_basic_drive.py โ VEX V5 driving in a square
- Create a GitHub Organization for your class (e.g.,
mr-smith-robotics-2025) - Go to classroom.github.com and create a classroom
- Create assignments โ each student gets their own repo automatically
- Students use this app to log in, see their repos, and code right away
- Teachers can monitor all student repos from the Student Progress dashboard
Built for introductory robotics โ simple enough for day one, powerful enough for advanced projects.