Learn to code without getting the answers handed to you.
Socratic is a VS Code extension that helps you learn programming through the Socratic method β guiding you with questions and hints instead of giving you direct solutions.
Built for ConUHacks 2026 π
Traditional coding assistants give you the answer immediately. You copy-paste, it works, but did you actually learn anything?
Socratic acts as your personal coding mentor. Instead of solving your problems, it asks the right questions to help you solve them yourself β building real understanding and problem-solving skills.
- Automatic code analysis as you type
- Contextual popups with hints and suggestions
- Quick action buttons: Explain, Debug, Improve, Stuck
Pick your teaching style from a variety of AI personalities:
- Socrates β Classic questioning approach
- Gangsta β Street-smart coding wisdom
- Ninja β Stealthy problem-solving
- Army General β Disciplined, structured learning
- ASMR Girl β Gentle, calming guidance
Each teacher has unique:
- Voice (powered by ElevenLabs)
- Personality and teaching style
- Custom encouragement phrases
Visual radar chart showing your proficiency across skill categories:
- Track progress across Python fundamentals, data structures, OOP, and more
- Unlock skill packs from the marketplace
- Download sponsored skill paths (AWS, MongoDB, course-specific)
Text-to-Speech Encouragement
- Get voice feedback when you're doing well
- Teacher-specific voices via ElevenLabs
- Dynamic encouragement every 10 lines of code
Speech-to-Text Input
- Click the mic icon to speak your questions
- Powered by ElevenLabs STT API
Upload documents to give your AI teacher context about your project:
- Drag & drop files into the chat
- Supports:
.txt,.py,.js,.ts,.json,.md,.pdf, and more - Uses MongoDB Atlas Vector Search for semantic retrieval
- Teacher uses your files as reference material
Choose your level of assistance based on how much you want to learn vs. how much you need help:
| Level | Mode | Description |
|---|---|---|
| 1 | Slight Nudge | Minimal hints, maximum learning |
| 2 | General Direction | Conceptual guidance without spoilers |
| 3 | Detailed Guidance | Examples and explanations |
| 4 | Step-by-Step | Structured walkthrough |
| 5 | Full Hands-On | Complete solutions when you need them |
npm installCreate a .env file in the project root:
GEMINI_API_KEY=your_gemini_api_key
ELEVENLABS_API_KEY=your_elevenlabs_api_key
MONGODB_URI=your_mongodb_connection_stringGet your keys:
- Gemini: Google AI Studio
- ElevenLabs: elevenlabs.io β Profile β API Keys
- MongoDB: MongoDB Atlas β Connect β Get connection string
# Development
npm run watch # Start TypeScript compiler in watch mode
# Press F5 in VS Code to launch Extension Development Host
# Package for distribution
npm run package # Creates socratic-x.x.x.vsix- Open VS Code
- Press
Ctrl+Shift+Pβ "Extensions: Install from VSIX..." - Select the
.vsixfile from the project root - Reload VS Code
| Tab | Purpose |
|---|---|
| Profile | View stats, skill radar, edit avatar/banner |
| Work | Chat with your AI teacher, set focus, manage files |
| Teachers | Browse and select teachers, test voices, edit settings |
| Settings | Configure triggers, response style, keyboard shortcuts |
| Technology | Usage |
|---|---|
| TypeScript | Extension logic |
| VS Code Webview API | Sidebar UI |
| Google Gemini | AI-powered guidance & RAG embeddings |
| ElevenLabs | Text-to-speech & speech-to-text |
| MongoDB Atlas | User data, skill tracking, vector search |
| Shortcut | Action |
|---|---|
Ctrl+Shift+S |
Toggle real-time analysis |
Ctrl+Alt+S |
Scan full file |
Socratic/
βββ src/
β βββ extension.ts # Entry point
β βββ views/
β β βββ SocraticSidebarProvider.ts
β β βββ MarketplacePanel.ts
β β βββ SkillAtlasPanel.ts
β β βββ templates/ # HTML templates for tabs
β β βββ components/ # Popup components
β βββ services/
β β βββ DataService.ts # Hybrid MongoDB/local data
β β βββ GeminiService.ts # AI chat
β β βββ ElevenLabsService.ts # Voice TTS/STT
β β βββ RAGService.ts # Vector search
β β βββ ...
β βββ db/ # MongoDB operations
β βββ types/ # TypeScript interfaces
βββ data/
β βββ config.json
β βββ teachers/ # Teacher JSON profiles
β βββ users/ # User profiles
βββ docs/
β βββ index.html # Landing page website
βββ package.json
Socratic uses MongoDB Atlas for:
- User Profiles β Cloud-synced stats, progress, preferences
- Skill Atlas Data β Proficiency tracking with nested updates
- Marketplace Teachers β Shareable teacher configurations
- RAG Vector Storage β Document chunks with embeddings for semantic search
- Nested atomic updates with
$setdot notation $incfor stat increments- Flexible schema for different skill packs
- Atlas Vector Search with
$vectorSearchaggregation
- TTS API β Generate teacher voice audio
- STT API β Transcribe student voice input
- Multiple Voices β Each teacher can have a unique voice
- Chat Completions β Socratic dialogue generation
- Embedding API β Vector embeddings for RAG (
text-embedding-004) - Batch Processing β Efficient embedding of large documents
- Check console for errors (
Help > Toggle Developer Tools) - Verify
.envfile has valid API keys - Try without MongoDB (it gracefully falls back to local data)
- Ensure
ELEVENLABS_API_KEYis set - Check that the teacher has a valid voice ID
- Look for errors in the Developer Console
- Ensure
GEMINI_API_KEYis set - Check file size (max 10MB)
- MongoDB must be connected for vector storage
Built with β€οΈ at ConUHacks 2026
"I cannot teach anybody anything. I can only make them think." β Socrates




