Skip to content

πŸš€ Track and analyze your Competitive Programming journey with this web app! Get insights into your Codeforces performance, rating trends πŸ“ˆ, problem-solving habits 🧠, and more β€” all in one sleek dashboard πŸ’». Perfect for staying consistent and leveling up your CP game! πŸ’ͺπŸ”₯

Notifications You must be signed in to change notification settings

godaralokesh29/CodeProgress-CF-Analytics-Tool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

24 Commits
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

CodeProgress

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


✨ Features

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

πŸ“¬ Email Reminder System

  • Auto reminders for inactive students
  • Manual trigger and tracking
  • Toggle reminders per student
  • Gmail SMTP-based system

πŸš€ Tech Stack

Layer Technology
Frontend React, TypeScript, Tailwind CSS
Backend Node.js, Express, MongoDB, Mongoose
External APIs Codeforces API

⚑ Getting Started

πŸ”Ί Prerequisites

  • Node.js v16+
  • MongoDB (local or Atlas)
  • npm or yarn
  • Gmail account for email service

πŸ”§ Installation

# 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 dev

πŸ” Backend API Overview

πŸ“š Student Endpoints

  • GET /students – Fetch all students
  • GET /students/:id – Fetch student by ID
  • POST /students – Create a new student
  • PUT /students/:id – Update student details
  • DELETE /students/:id – Delete a student

🌐 Codeforces Sync

  • POST /students/:id/sync-codeforces – Sync student's Codeforces data

πŸ“¬ Reminder System

  • GET /reminders/students – Get all students with reminder settings
  • GET /reminders/stats/:studentId – Get reminder stats for a student
  • PATCH /reminders/toggle/:studentId – Enable/disable reminders for a student
  • POST /reminders/reset-count/:studentId – Reset reminder count for a student
  • POST /reminders/check-now – Manually trigger reminder check
  • GET /reminders/email-config – Check email configuration status

⏱️ Cron Management

  • GET /settings/cron/current – Get current cron schedule
  • POST /settings/cron/set – Update cron schedule

πŸ“Έ Screenshots

  • πŸ“Š Student Dashboard with ratings and handles
  • πŸ“ˆ Detailed activity graphs
  • πŸ”„ Sync and Reminder control tabs

βš™ Customization

  • App Name: Change CodeProgress wherever referenced in UI
  • Theme: Customize via tailwind.config.ts
  • Email Template: Located in backend/services/emailService.js
  • Cron Logic: Controlled via backend/cron.js

πŸ“Š Email Reminder Workflow

  1. Detects inactivity after latest Codeforces sync
  2. Sends motivational reminder email with Codeforces links
  3. Enforces 24-hour cooldown between reminders
  4. Tracks number of reminders sent and last reminder date

πŸ§ͺ Usage Tips

βž• Add Students

  • Navigate to the Students tab β†’ Click Add Student
  • Fill in all required fields including Codeforces handle

πŸ“© Manage Reminders

  • Use the Email Reminders tab to:
    • Toggle reminders per student
    • View status and count
    • Manually trigger reminders
    • Reset reminder stats

πŸ“Š Monitor Activity

  • βœ… Green – Active (recent submissions)
  • πŸ”΄ Red – Inactive (7+ days)
  • βšͺ Gray – Reminders disabled

πŸ›  Troubleshooting

  • Email Not Sending: Check EMAIL_USER and EMAIL_PASS in .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

πŸ“ Project Structure

β”œβ”€β”€ 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

About

πŸš€ Track and analyze your Competitive Programming journey with this web app! Get insights into your Codeforces performance, rating trends πŸ“ˆ, problem-solving habits 🧠, and more β€” all in one sleek dashboard πŸ’». Perfect for staying consistent and leveling up your CP game! πŸ’ͺπŸ”₯

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published