An intelligent web application that analyzes Codeforces user performance and provides personalized problem recommendations to improve weak areas and enhance competitive programming skills.
- 🔍 Smart User Analysis: Fetches and analyzes user data from Codeforces API
- 📊 Performance Insights: Analyzes past submissions and identifies weak topics
- 🧠 ML-Powered Recommendations: Uses machine learning to recommend optimal problems
- ⚡ Fast & Lightweight: Browser-based with local storage, no database required
- 🌐 Modern Web Stack: React frontend + FastAPI backend
- 📱 Responsive Design: Works seamlessly on desktop and mobile devices
- Frontend: Deployed on Vercel
- Backend: Deployed on Render
- Demo: Live Application
- React with Vite
- React Router for navigation
- Axios for API calls
- Recharts for data visualization
- CSS3 for styling
- FastAPI for REST API
- Scikit-learn for ML models
- Pandas for data processing
ml-project/
├── backend/
│ ├── api.py # FastAPI endpoints
│ ├── main.py # Core logic for data processing
│ ├── model.py # ML model implementation
│ ├── requirements.txt # Python dependencies
│ └── runtime.txt # Python version
├── frontend/
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── pages/ # Page components
│ │ ├── Services/ # API service layer
│ │ ├── context/ # React context providers
│ │ └── assets/ # Static assets
│ ├── package.json # Node.js dependencies
│ └── vite.config.js # Vite configuration
└── README.md
- Python 3.8+
- Node.js 16+
- Codeforces account
- Navigate to backend directory:
cd backend
- Create virtual environment:
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
- Install dependencies:
pip install -r requirements.txt
- Run the server:
python -m uvicorn api:app --reload
The backend will be available at http://localhost:8000
- Navigate to frontend directory:
cd frontend
- Install dependencies:
npm install
- Start development server:
npm run dev
The frontend will be available at http://localhost:5173
Method | Endpoint | Description |
---|---|---|
POST | /recommend |
Get personalized problem recommendations |
GET | /api/rating-accuracy |
Get accuracy statistics by rating |
GET | /syncproblems |
Get user's solved problems |
curl -X POST "http://localhost:8000/recommend" \
-H "Content-Type: application/json" \
-d '{"handle": "tourist"}'
- Data Collection: Fetches user submissions from Codeforces API
- Feature Extraction: Processes submission data to extract features
- Model Training: Trains ML model on user performance patterns
- Problem Filtering: Identifies unsolved problems within skill range
- Recommendation: Ranks problems based on improvement potential
- Submission history analysis
- Rating progression tracking
- Weak topic identification
- Performance metrics calculation
- Personalized difficulty levels
- Topic-based recommendations
- Skill gap targeting
- Progress tracking
- Rating accuracy charts
- Topic performance graphs
- Progress over time
- Problem difficulty distribution
# Backend tests
cd backend
python -m pytest
# Frontend tests
cd frontend
npm test
# Backend linting
cd backend
flake8 .
# Frontend linting
cd frontend
npm run lint
cd frontend
npm run build
vercel --prod
# Push to GitHub and connect to Render
# Set environment variables in Render dashboard
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.