CodeProgress is a full-stack web application for tracking and managing student progress in competitive programming, with tight integration to Codeforces. It provides a clean UI, powerful analytics, and tools for educators or teams to monitor coding performance.
π Notion Doc: Project Overview & Docs
- Student Management: Add, edit, delete, and view student records.
- Codeforces Sync: Automatically fetch and update each student's contest and problem-solving history.
- Analytics: Visualize rating progression, contest history, and problem-solving activity.
- CSV Export: Export filtered student data as a CSV file.
- Responsive UI: Built with Tailwind CSS for a modern experience.
- Auto reminders for inactive students
- Manual trigger and tracking
- Toggle reminders per student
- Gmail SMTP-based system
| Layer | Technology |
|---|---|
| Frontend | React, TypeScript, Tailwind CSS |
| Backend | Node.js, Express, MongoDB, Mongoose |
| External APIs | Codeforces API |
- Node.js v16+
- MongoDB (local or Atlas)
- npm or yarn
- Gmail account for email service
# Clone the repo
git clone https://github.com/your-username/codeprogress.git
cd codeprogress
# Install dependencies
cd backend && npm install
cd ../project && npm install
# Create .env file in /backend
MONGODB_URI=<your_mongodb_uri>
MONGO_URI=mongodb://localhost:27017/codeprogress
PORT=3001
[email protected]
EMAIL_PASS=your-app-password
# Start servers
cd backend && npm run dev
cd ../project && npm run devGET /studentsβ Fetch all studentsGET /students/:idβ Fetch student by IDPOST /studentsβ Create a new studentPUT /students/:idβ Update student detailsDELETE /students/:idβ Delete a student
POST /students/:id/sync-codeforcesβ Sync student's Codeforces data
GET /reminders/studentsβ Get all students with reminder settingsGET /reminders/stats/:studentIdβ Get reminder stats for a studentPATCH /reminders/toggle/:studentIdβ Enable/disable reminders for a studentPOST /reminders/reset-count/:studentIdβ Reset reminder count for a studentPOST /reminders/check-nowβ Manually trigger reminder checkGET /reminders/email-configβ Check email configuration status
GET /settings/cron/currentβ Get current cron schedulePOST /settings/cron/setβ Update cron schedule
- π Student Dashboard with ratings and handles
- π Detailed activity graphs
- π Sync and Reminder control tabs
- App Name: Change
CodeProgresswherever referenced in UI - Theme: Customize via
tailwind.config.ts - Email Template: Located in
backend/services/emailService.js - Cron Logic: Controlled via
backend/cron.js
- Detects inactivity after latest Codeforces sync
- Sends motivational reminder email with Codeforces links
- Enforces 24-hour cooldown between reminders
- Tracks number of reminders sent and last reminder date
- Navigate to the Students tab β Click Add Student
- Fill in all required fields including Codeforces handle
- Use the Email Reminders tab to:
- Toggle reminders per student
- View status and count
- Manually trigger reminders
- Reset reminder stats
- β Green β Active (recent submissions)
- π΄ Red β Inactive (7+ days)
- βͺ Gray β Reminders disabled
- Email Not Sending: Check
EMAIL_USERandEMAIL_PASSin.env - Authentication Errors: Use Gmail App Password instead of account password
- Gmail Blocking: Adjust Gmail security settings
- Codeforces API Errors: Retry later or check API status
- Network Issues: Ensure proper internet connectivity
βββ backend/
β βββ models/ # Mongoose schemas
β βββ routes/ # REST API routes
β βββ services/ # Core logic and utilities
β βββ server.js # Main backend server entry
βββ project/
β βββ src/
β β βββ components/ # React components
β β βββ types/ # TypeScript interfaces/types
β β βββ utils/ # Helpers and utilities
βββ README.md