A full-stack MERN application to track and analyze students' competitive programming progress on Codeforces, with daily sync, inactivity detection, rating statistics, submission heatmaps, and personalized dashboards.
- Student CRUD: Add, edit, delete, and view students.
- Codeforces Sync: Automatically fetch Codeforces profile, contest, and submission data daily using a cron job.
- Manual Sync: Option to manually trigger sync from the UI.
- Submission Heatmap: Visualize submission activity over time.
- Contest History: Chart rating changes and contest performance.
- Rating Buckets: Distribution of solved problems by difficulty.
- Dark/Light Mode: Toggle UI theme.
- Inactivity Detection: Send reminder emails to inactive users.
- Responsive UI: Built with TailwindCSS, Shadcn/UI, and Recharts.
- Editable Cron Settings: Easily configure sync time and frequency.
Frontend:
- React + Vite
- TailwindCSS + Shadcn/UI
- Recharts (for charts)
- Axios
Backend:
- Node.js + Express
- MongoDB + Mongoose
- Node-cron (for scheduled tasks)
- Nodemailer (for email alerts)
- Codeforces Public API
root/
βββ frontend/ # React UI
β βββ src/
β β βββ components/ # UI components
β β βββ pages/ # Pages and routing
β
βββ backend/
β βββ controllers/ # API logic
β βββ routes/ # Express routes
β βββ services/ # Codeforces API service
β βββ cron/ # Codeforces sync cron job
β βββ models/ # MongoDB data models
- Node.js v18+
- MongoDB (local or cloud)
- Git
git clone https://github.com/yourusername/student-progress-tracker.git
cd student-progress-trackercd backendCreate a .env file inside the backend/ directory with the following variables:
PORT=5000
MONGODB_URI=your_mongodb_connection_string
CODEFORCES_API_BASE=https://codeforces.com/api
EMAIL_USER=your_email@example.com
EMAIL_PASS=your_email_passwordInstall backend dependencies:
npm installStart the backend server:
npx nodemon index.jscd ../frontendInstall frontend dependencies:
npm installStart the frontend development server:
npm run devNow open your browser at http://localhost:5173 to view the app.