← Back to Projects
Finished Web

Notion Study Reminder

A Node.js service that reads a Notion study-scheduler page and its deadline database, classifies tasks in Beirut time, and emails morning/evening digests plus a midday urgent-only reminder via Gmail, scheduled through GitHub Actions.

Technologies used

Node.js Notion API Gmail API GitHub Actions

Problem

My study plan lived in Notion, but Notion doesn't push a consolidated view of what's due — unchecked tasks and approaching deadlines only mattered if I remembered to open the page.

Solution

The service pulls unchecked checklist items from the scheduler page and active deadlines from the inline database, then sends three kinds of email on a Beirut-time schedule: a 07:00 morning digest, a 13:00 urgent-only reminder, and a 20:00 evening digest, through either Gmail SMTP or the Gmail API. An hourly GitHub Actions cron fires the runs and the code itself decides the correct mode, so daylight-saving changes never break the schedule.

What I Learned

Cron doesn't know about timezones — running hourly and resolving 'what should happen now' in code was far more robust than encoding Beirut hours into the cron expression.

More Web projects

Dros dashboard with study setup, Leitner queue, and practice controlsDros import workbench with CSV prompt, upload area, and validation preview

Web

React TypeScript Vite

Dros

A local-first React app for building and drilling multiple-choice question banks.