Skip to content

A MERN stack app that tracks students' Codeforces progress using their handles. Includes daily sync via cron jobs and automated email alerts to inactive users. Deployed with Vercel, Render, and MongoDB Atlas.

Notifications You must be signed in to change notification settings

aakash811/Student-Progress-Tracker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

23 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Student Progress Management System πŸ“Š

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.


πŸš€ Features

  • 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.

πŸ› οΈ Tech Stack

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

πŸ“ Folder Structure

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

πŸ“· Demo Preview

  • Walkthrough Video: Watch the demo
  • Students Table: Student Table
  • Sample Student Dashboard: Student Dashboard
  • Contest Rating Chart: Student Graph

βš™οΈ Setup Instructions

Prerequisites

  • Node.js v18+
  • MongoDB (local or cloud)
  • Git

1. Clone the repository

git clone https://github.com/yourusername/student-progress-tracker.git
cd student-progress-tracker

2. Setup the Backend

cd backend

Create 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_password

⚠️ Note: Never commit .env files to version control.

Install backend dependencies:

npm install

Start the backend server:

npx nodemon index.js

1. Setup the Frontend

cd ../frontend

Install frontend dependencies:

npm install

Start the frontend development server:

npm run dev

Now open your browser at http://localhost:5173 to view the app.

About

A MERN stack app that tracks students' Codeforces progress using their handles. Includes daily sync via cron jobs and automated email alerts to inactive users. Deployed with Vercel, Render, and MongoDB Atlas.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published