{"id":20295033,"url":"https://github.com/nfriend/snow-day-notifier","last_synced_at":"2026-05-06T00:07:00.219Z","repository":{"id":147527056,"uuid":"222190115","full_name":"nfriend/snow-day-notifier","owner":"nfriend","description":"A small Lambda function that scrapes PEI's public schools website and sends alerts (through IFTTT) if school is delayed or closed.","archived":false,"fork":false,"pushed_at":"2020-11-25T07:33:22.000Z","size":437,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-04T05:31:46.546Z","etag":null,"topics":["aws","cron","gitlab","ifttt","lambda","scraping","serverless","typescript"],"latest_commit_sha":null,"homepage":"https://gitlab.com/nfriend/snow-day-notifier","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nfriend.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-11-17T03:10:15.000Z","updated_at":"2020-11-25T07:33:22.000Z","dependencies_parsed_at":null,"dependency_job_id":"76f6c24a-18d6-41d5-8984-58a513c80c8f","html_url":"https://github.com/nfriend/snow-day-notifier","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/nfriend/snow-day-notifier","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nfriend%2Fsnow-day-notifier","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nfriend%2Fsnow-day-notifier/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nfriend%2Fsnow-day-notifier/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nfriend%2Fsnow-day-notifier/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nfriend","download_url":"https://codeload.github.com/nfriend/snow-day-notifier/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nfriend%2Fsnow-day-notifier/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32672688,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-05T11:29:49.557Z","status":"ssl_error","status_checked_at":"2026-05-05T11:29:48.587Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","cron","gitlab","ifttt","lambda","scraping","serverless","typescript"],"created_at":"2024-11-14T15:32:47.776Z","updated_at":"2026-05-06T00:07:00.199Z","avatar_url":"https://github.com/nfriend.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Snow Day Notifier\n\n\u003ca href=\"https://gitlab.com/nfriend/snow-day-notifier/pipelines\" target=\"_blank\"\u003e\u003cimg src=\"https://gitlab.com/nfriend/snow-day-notifier/badges/master/pipeline.svg\" alt=\"GitLab build status\"\u003e\u003c/a\u003e\n\nA small [Lambda](https://aws.amazon.com/lambda/) function that scrapes [PEI's public schools website](https://edu.princeedwardisland.ca/psb/)\nand sends alerts (through [IFTTT](https://ifttt.com/)) if school is delayed or closed.\n\n\u003cimg src=\"img/snow.png\" alt=\"A snowflake logo\" width=\"250\"/\u003e\n\nDeployment of the Lambda function is managed by [GitLab CI/CD](https://docs.gitlab.com/ee/ci/) and the [Serverless framework](https://serverless.com/).\n(See this project's [`.gitlab-ci.yml`](./.gitlab-ci.yml) and [`serverless.yml`](./serverless.yml).)\nThis function is scheduled to run every 5 minutes.\n\nWhen the Lambda function identifies a potential closure, it sends a mobile notification that looks like this:\n\n![A notification from IFTTT](img/ifttt-notification-example.jpg)\n\nClicking the notification redirects the user to the [PEI public schools website](https://edu.princeedwardisland.ca/psb/) to view the full post.\n\n## Developing\n\n1. Clone this repo: `git clone git@gitlab.com:nfriend/snow-day-notifier.git`\n1. Install dependencies: `cd snow-day-notifier \u0026\u0026 npm install`\n1. Run any of the scripts found in this project's `package.json`, for example: `npm run build:watch`\n\n## Deploying\n\n1. `git push` on `master`\n\n## Project setup\n\nThis project expect a few CI/CD variables to be in place:\n\n1. `AWS_ACCESS_KEY_ID`: The access key ID of your AWS IAM user\n1. `AWS_SECRET_ACCESS_KEY`: The secret access key of your AWS IAM user\n1. `IFTTT_KEY_JSON_ARRAY`: A JSON-formatted array of all [IFTTT Webhook keys](https://help.ifttt.com/hc/en-us/articles/115010230347-Webhooks-service-FAQ) that should be notified if a delay is detected. For example:\n\n   ```json\n   [\"ifttt-key-1\", \"ifttt-key-2\"]\n   ```\n\n1. `AWS_DYNAMO_REGION`: The AWS region of your IAM user (e.g. `ca-central-1`) for usage when setting up a DynamoDB connection\n\n### IAM User\n\nWhen creating the IAM user for this project, grant the user the following permissions:\n\n- `AWSLambdaFullAccess`\n- `IAMFullAccess`\n- `AmazonDynamoDBFullAccess`\n- `AnazonAPIGatewayAdministrator`\n- `AWSCloudFormationFullAccess`\n\n![A screenshot of IAM's management console showing the necessary permissions](img/iam-permissions.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnfriend%2Fsnow-day-notifier","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnfriend%2Fsnow-day-notifier","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnfriend%2Fsnow-day-notifier/lists"}