SkillSync monitors each student’s Codeforces activity and automatically sends a reminder email when a student has not solved any problem in seven or more days. The system is designed to send exactly one email per continuous inactive streak, avoiding repeated notifications while still giving inactive students a timely nudge to return to practice.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.
How inactivity is detected
During every sync run, SkillSync deriveslastActiveAt from the student’s submission history by finding the most recent submission where verdict === "OK" and converting its Unix timestamp to a date. Inactivity is then measured as:
lastActiveAt is null and inactiveDays is treated as Infinity, which immediately satisfies the inactivity threshold.
Email trigger conditions
An inactivity email is sent only when all three of the following conditions are true at the time of the sync:| Condition | Field checked | Threshold |
|---|---|---|
| Student is inactive | lastActiveAt | inactiveDays >= 7 |
| No email sent yet this streak | emailRemindersSent | === 0 |
| Reminders not disabled | emailRemindersDisabled | === false |
sendInactivityEmail() is called and emailRemindersSent is incremented to 1. Because subsequent sync runs will find emailRemindersSent === 1, no further emails are sent during the same inactive streak.
Email reset on activity
When a sync run detects thatinactiveDays < 7 for a student whose emailRemindersSent is greater than 0, the counter is reset to 0:
Email content
Inactivity emails are sent from the SkillSync Bot sender address with the following structure:| Property | Value |
|---|---|
| Subject | We Miss You on Codeforces! |
| From | "SkillSync Bot" <EMAIL_USER> |
| To | The student’s email address stored in MongoDB |
Hey {name}! We noticed you haven’t solved any problems on Codeforces in the past week. Even one problem a day keeps the rust away! Jump back in and keep that rating climbing.Both plain-text and HTML versions of the body are sent so the message renders correctly in all mail clients.
SkillSync uses Brevo SMTP (
smtp-relay.brevo.com, port 587) to deliver emails. You must set the BREVO_USER and BREVO_PASS environment variables in your deployment for email delivery to work. The transporter verifies the connection on server startup and logs an error if the credentials are invalid.Disabling reminders per student
You can disable inactivity emails for an individual student without deleting their record:- Dashboard toggle: the Reminders column in the student table contains a toggle switch. Turning it off calls
PUT /api/students/:id/toggle-reminderand setsemailRemindersDisabled: truein MongoDB. The switch state updates instantly in the UI. - API: send a
PUTrequest directly:
emailRemindersDisabled to false to re-enable reminders for the student.
Inactivity log
To audit which students have received inactivity emails, call:emailRemindersSent reflects how many emails were sent during the current inactive streak (0 or 1). lastActiveAt is null if the student has never submitted an accepted solution.