AlgoHints is an interactive platform designed to help developers master Data Structures and Algorithms (DSA) and Competitive Programming (CP) through a guided hint system rather than providing direct solutions.
-
Progressive Hint System: Get step-by-step guidance without spoilers
- Basic Idea: Simple framing of the problem
- Approach: General problem-solving paradigms
- Algorithm: Specific techniques and insights
- Pseudocode: High-level solution structure without implementation
-
Integrated Code Editor: Monaco-based editor with syntax highlighting
-
Judge0 API Integration: Run and test your solutions directly in the platform
-
OCR for Problem Input: Upload problem statements as images
-
Responsive Design: Works on desktop and mobile devices
/backend
├── node_modules # Node dependencies
├── src # Backend source code
├── uploads # Temporary storage for uploaded images
├── .env # Environment variables
├── eng.traineddata # OCR training data
├── index.js # Entry point
└── package.json # Project configuration
/frontend
├── node_modules # Node dependencies
├── public # Static assets
├── src
│ ├── component
│ │ ├── CodeEditor.jsx # Monaco editor component
│ │ ├── Home.jsx # Home page
│ │ └── App.jsx # Main application component
│ ├── index.css # Global styles
│ └── main.js # Frontend entry point
├── .env # Environment variables
├── package.json # Project configuration
└── vite.config.js # Vite configuration
- Node.js
- Express
- Google Generative AI (Gemini API)
- OCR for image processing
- React
- Monaco Editor
- Framer Motion for animations
- Tailwind CSS for styling
- Lucide React for icons
- React Syntax Highlighter
- Problem Input: Users can enter algorithm problems as text or upload images
- Generate Hints: The system analyzes the problem and creates progressive hints
- Step-by-Step Guidance: Users get increasingly detailed hints as needed
- Code Solution: Write and test solutions in the integrated code editor
AlgoHints provides a four-level hint system:
- Basic Idea Hint: Reframes the problem in intuitive terms without suggesting specific approaches
- Approach Hint: Suggests general problem-solving paradigms (DP, Greedy, DFS/BFS, etc.)
- Algorithm/Concept Hint: Recommends specific algorithms, data structures, or techniques
- Pseudocode Structure: Provides high-level pseudocode without direct implementation
- Node.js (v14+)
- npm or yarn
- Gemini API key
cd backend
npm install
# Create .env file with your API keys and configuration
# GEMINI_API_KEY=your_api_key_here
# PORT=3000
npm start
cd frontend
npm install
# Create .env file if needed
npm run dev
POST /ai/get-review
: Generate hints for a problem statementPOST /ai/ocr
: Process uploaded images to extract problem statements
- Students learning DSA concepts
- Developers preparing for technical interviews
- Competitive programmers looking to improve their skills
- Self-learners who prefer guided discovery over direct solutions
AlgoHints aims to bridge the gap between struggling alone and being given direct solutions. By providing progressive hints, it helps users:
- Develop their own problem-solving skills
- Understand the thought process behind algorithm design
- Practice implementing solutions independently
- Build confidence through guided discovery
- Judge0 API for code execution
- Monaco Editor for the code editing experience
- Google's Generative AI (Gemini) for hint generation