Inspiration
Students use AI to cheat, not learn. CodeMentor changes that. Instead of solving problems for you, it's an active observer that detects struggle and uses Socratic questioning to guide you to the answer yourself.
What it does
CodeMentor is a full-stack educational orchestrator designed to transform passive AI assistance into active Socratic tutoring. It combines a React-based frontend for a rich, interactive IDE experience with an Express backend that manages stateful AI interactions and real system access.
Key features include:
- Socratic Teaching Chat — Ask for help and get thoughtful questions, not copy-paste solutions
- Explain It Back — Validate your understanding using the Feynman technique
- Smart Nudge System — Proactive help when you're stuck, detecting idle time or repeated errors
- Personalized LeetCode-style Exercises — AI generates practice problems based on your weaknesses
- Integrated IDE — Monaco editor, real terminal, file system, and GitHub clone support
- Progress Dashboard — Track your strengths, weaknesses, and learning journey .
Accomplishments I'm proud of
I am proud of the personalized exercises and the fact that we also have test cases to test them against as well
I'm also proud of leveraging the full power of Gemini 3's Interactions API,stateful conversations, thinking levels, streaming responses, and multimodal input.
Gemini 3 Features Used
| Feature | How We Use It |
|---|---|
| Interactions API | Stateful multi-turn tutoring conversations that remember context |
previous_interaction_id |
Maintains conversation continuity across the entire learning session |
| Thinking Levels | high for complex debugging, low for quick chat responses |
| Thinking Summaries | Shows students the AI's reasoning process in real-time |
| Streaming Responses | Real-time SSE streaming for immediate feedback |
| Multimodal Input | Screenshot analysis for detecting code and errors from screen captures |
| Temperature Control | Adjusted per feature (0.7 for structured JSON, 1.0 for creative teaching) |
Third-Party Integrations
- ElevenLabs — Text-to-speech for voice hints
- Monaco Editor — VS Code's editor component (MIT License)
- XTerm.js — Terminal emulator (MIT License)
- pdf.js — PDF parsing for assignment uploads (Apache 2.0)
- React Markdown — Rendering chat responses
- Recharts — Data visualization for progress dashboard
Infrastructure
- React + Vite (frontend), Express.js + node-pty (backend), IndexedDB (storage)
┌─────────────────────────────────────────────────────────────────────────┐ │ CodeMentor Architecture │ └─────────────────────────────────────────────────────────────────────────┘
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │ React Frontend │ │ Express Backend │ │ AI Services │ ├──────────────────┤ ├──────────────────┤ ├──────────────────┤ │ • Monaco Editor │ │ • API Server │ │ • Gemini 3 │ │ • XTerm Terminal │ ──► │ • Shell Sessions │ ──► │ Interactions │ │ • Teaching Chat │ │ • Code Executor │ │ • ElevenLabs TTS │ │ • Dashboard │ │ │ │ │ └──────────────────┘ └──────────────────┘ └────────┬─────────┘ │ ◄── Streaming + Thinking ─────────┘
What we learned
- The Interactions API's
previous_interaction_idenables powerful tutoring experiences - Thinking levels (
highvslow) dramatically improve response quality - Good education is about asking the right questions, not having all the answers
What's next for CodeMentor
Authentication: For this hackathon demo, we prioritized ease of access and opted for a frictionless experience without user login. In a production release, we will implement full user authentication (OAuth) to securely store user progress and projects across devices. Also, with more users and feedback, I can actually learn what things to pinpoint and provide a better experience
If you have any questions about this project, please feel free to reach out to me via email farhannadim311@gmail.com
Built With
- elevenlabs
- express.js
- google-gemini-3
- indexeddb
- monaco-editor
- node.js
- pdf.js
- react
- typescript
- vite
- xterm.js
Log in or sign up for Devpost to join the conversation.