Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/aakash811/Student-Progress-Tracker/llms.txt

Use this file to discover all available pages before exploring further.

The SkillSync dashboard displays all enrolled students in a sortable, searchable table. Each row represents one student and shows their live Codeforces rating, rank, highest-ever rating, the last time their data was synced, and controls for editing, deleting, and toggling email reminders. All data is kept up to date through automated daily syncs and on-demand sync buttons.

Student data model

Every student record in MongoDB stores the following fields:
FieldTypeDescription
nameStringStudent’s full name (required)
emailStringUnique email address (required)
phoneNoStringPhone number (required)
codeforcesHandleStringCodeforces username used to fetch all CF data (required)
currRatingNumberCurrent Codeforces rating, updated on every sync
rankStringCurrent rank label from Codeforces (e.g. “Expert”)
maxRatingNumberHighest rating the student has ever reached
lastSyncedAtDateTimestamp of the most recent successful sync
lastActiveAtDateDate of the student’s last accepted submission
emailRemindersSentNumberCount of inactivity emails sent in the current inactive streak
emailRemindersDisabledBooleanWhen true, inactivity emails are suppressed for this student
contestDataArrayFull contest rating history fetched from Codeforces
submissionsArrayUp to 10,000 most recent submissions fetched from Codeforces

Adding a student

1

Open the Add Student dialog

Click the Add Student button in the top-right corner of the dashboard toolbar.
2

Fill in the form

Enter the student’s name, email address, phone number, and their Codeforces handle. All four fields are required.
3

Save

Click Save. SkillSync immediately syncs the student’s Codeforces data — rating, rank, max rating, full contest history, and up to 10,000 recent submissions — before returning the new record to the dashboard.

Editing a student

Click the Edit button in any student’s row to reopen the Add Student dialog pre-filled with that student’s current data. Update any field and save. If the Codeforces handle is changed, SkillSync automatically triggers a full re-sync against the new handle so the stored data stays consistent.

Deleting a student

Click the trash icon in the student’s row. A confirmation prompt appears before the record is permanently removed from the database. The action calls DELETE /api/students/:id.

Dashboard summary cards

Three summary cards appear above the table and update from the latest synced data:

Total Students

The total count of students currently enrolled in SkillSync.

Avg Rating

The mean of all students’ current Codeforces ratings. Students with rating 0 (unrated) are included in the average.

Top Rating

The highest current rating across all enrolled students.

Searching

The search box in the toolbar filters the table in real time. Matches are checked against the student’s name, Codeforces handle, and email (case-insensitive). The result count shown next to the search box reflects filtered vs. total students.

Sorting

Click any column header to sort by that field. Click again to toggle between ascending and descending order. Sortable columns are:
  • Student (name)
  • CF Handle (codeforcesHandle)
  • Current Rating (currRating) — default sort, descending
  • Max Rating (maxRating)
  • Last Synced (lastSyncedAt)

Codeforces rank color coding

Rating values and handle links are colored by rank to make skill levels scannable at a glance:
Rating rangeRankColor
Unrated / 0UnratedGray
< 1200NewbieGray
1200 – 1399PupilGreen
1400 – 1599SpecialistCyan
1600 – 1899ExpertBlue
1900 – 2099Candidate MasterPurple
2100 – 2299MasterOrange
2300 – 2399International MasterOrange
2400 – 2599GrandmasterRed
2600 – 2999International GrandmasterRed
≥ 3000Legendary GrandmasterRed

Email reminder toggle

Each student row includes a toggle switch in the Reminders column. When the switch is on (checked), inactivity emails are enabled for that student. Turning it off sets emailRemindersDisabled: true in the database, which prevents any future inactivity emails from being sent to that student. The toggle calls PUT /api/students/:id/toggle-reminder and updates the UI optimistically without a page reload.

Build docs developers (and LLMs) love