A minimal, production-ready, and lightweight monitoring service designed to notify you instantly on Telegram whenever new projects are added to the GirlScript Summer of Code (GSSoC) website.
- GitHub Actions Scheduler: Triggered every 5 minutes (via
cron) or manually (viaworkflow_dispatch). - State Tracking: Reads
state.jsonto check what projects were seen in previous runs. - Resilient Polling: Queries the GSSoC projects API endpoint with dynamic property mapping and up to 3 retries.
- Change Detection: Identifies ONLY newly added projects, ignoring deleted, renamed, or reordered items to prevent duplicate alerts.
- Telegram Alert: Sends a single combined alert containing the newly added project details if additions are detected.
- State Sync: Saves the union of old and new projects back to
state.jsonand pushes the commit directly to the repository (using the standard GitHub Action Bot).
- Open Telegram and search for @BotFather.
- Create a new bot with
/newbotand copy your bot API token (looks like123456789:ABCdefGh...). - Search for @userinfobot or start a chat with your bot and visit
https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdatesto get your Telegram user/chat ID (chat.idin JSON).
In your GitHub repository settings, navigate to Settings > Secrets and variables > Actions and add the following repository secrets:
GSSOC_API: The GSSoC projects API endpoint.TG_BOT: Your Telegram Bot API token.TG_CHAT: Your Telegram chat/channel/group ID.
- Install dependencies:
npm install
- Create a copy of
.env.examplenamed.envand fill in your variables:GSSOC_API=https://api.example.com/projects TG_BOT=your_telegram_bot_token TG_CHAT=your_telegram_chat_id
- Run the monitor script:
npm start
When new projects are found, you will receive a notification in this format:
🚨 New GSSoC Projects Added
• <project_name>
• <project_name>
Repository:
<repo_url>
Total Projects: <count>
- Exponential Backoff Retries: Retries up to 3 times before declaring failure.
- Graceful Exit: Exits with code
0on temporary GSSoC API outages so your GitHub workflow actions remain green, while logging all issues clearly. - Union-Based De-duplication: Tracks project names inside
state.jsonto prevent spamming notifications on restarts or transient API glitches.