{"id":21432026,"url":"https://github.com/recidvst/node-event-reminder","last_synced_at":"2025-07-14T12:32:40.926Z","repository":{"id":40719480,"uuid":"236850886","full_name":"Recidvst/node-event-reminder","owner":"Recidvst","description":"Just a small node app running a cron to trigger event reminders for birthdays etc.","archived":false,"fork":false,"pushed_at":"2022-12-11T22:23:09.000Z","size":515,"stargazers_count":4,"open_issues_count":12,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-08T08:51:51.909Z","etag":null,"topics":["birthdays","javascript","js","node","node-js","nodemailer","reminder","sms","twilio"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Recidvst.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}},"created_at":"2020-01-28T21:55:47.000Z","updated_at":"2024-06-29T08:08:54.000Z","dependencies_parsed_at":"2022-09-05T09:41:24.879Z","dependency_job_id":null,"html_url":"https://github.com/Recidvst/node-event-reminder","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Recidvst/node-event-reminder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Recidvst%2Fnode-event-reminder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Recidvst%2Fnode-event-reminder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Recidvst%2Fnode-event-reminder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Recidvst%2Fnode-event-reminder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Recidvst","download_url":"https://codeload.github.com/Recidvst/node-event-reminder/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Recidvst%2Fnode-event-reminder/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265291923,"owners_count":23741941,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["birthdays","javascript","js","node","node-js","nodemailer","reminder","sms","twilio"],"created_at":"2024-11-22T23:15:52.219Z","updated_at":"2025-07-14T12:32:40.663Z","avatar_url":"https://github.com/Recidvst.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Node Event Reminder\nJust a small node app running a cron to trigger SMS and email event reminders for birthdays, MOTs etc.\n\n### Sends reminders via any/all of the below:\n- Email (Nodemailer)\n- SMS (Twilio)\n- WhatsApp (Twilio Beta)\n\n### Data sources:\n- Local .json file\n- Google Calendar API\n\n## Notes\nThis was created largely for my use case so hasn't been developed as a configurable package, however I think it should be fairly easy to adapt to your own purposes due to its modular build and easily swapped out account variables.\n\n### Cron\n- The app runs a cron to trigger the reminder functionality at specific times, using the [node-cron](https://github.com/node-cron/node-cron \"See node-cron on GitHub\") package.\n- The cron schedule is easily configurable via the `crons.js` file.\n- Each successful cron event is logged to a txt file.\n- If running the Node app on a Linux server then the timezone needs to be set to match the cron schedule. You can use `dpkg-reconfigure tzdata` on Ubuntu. `date` to check.\n\n### Google Calendar\n- The [Google Calendar](https://developers.google.com/calendar \"Google Calendar API docs\") integration requires a Service Account signed up to the Calendar API via the Google Developer Console.\n- The Service Account needs to have access to your private calendar - share your calendar with the Service Account via the calendar itself.\n- A 'credentials.json' file is required to authenticate with the Google Auth library used. You can find an example of what this should look like [here](https://github.com/googleapis/google-auth-library-nodejs#json-web-tokens \"Google auth documentation - JWT\"). You could also use ENV variables for this. Obviously remember to gitignore!\n- The Google documentation around auth isn't great, particularly when trying to authenticate server to server :/\n- Currently set up to only pull events from the calendar that include the string 'notifyme' somewhere. This can be easily changed!\n\n### Local Data\n- As well as pulling from Google Calendar, the app can also pull from a local .json file. An example of the structure it requires is provided in `data-example.json`.\n- When the app is running, any changes to the a file within the `data` folder will trigger a backup to be taken in a separate folder to prevent accidental loss of data. 30 backups are kept.\n- The various log files need to be created in the logs folder when you set up the app or the process will fail.\n\n### Twilio\n- You'll need an account with [Twilio](https://www.twilio.com/sms \"Twilio SMS products\"), but if usage is low then the trial tier is fine.\n- ENV variables for the Twilio SID and Auth Token are needed plus private variables for your phone number and the Twilio sender numbers. Twilio have some pretty good [guides](https://www.twilio.com/console/sms/getting-started/developer-docs \"Twilio SMS docs\") available.\n- A log file is used to log the status of message requests.\n\n### Nodemailer\n- [Nodemailer](https://nodemailer.com/about/ \"Nodemailer\") needs to have an SMTP transporter object created. This could be something like Mailgun, SendGrid etc. but I am using [Gmail](https://support.google.com/a/answer/176600?hl=en \"Using Gmail SMTP server\"). For higher usage you would need a dedicated SMTP solution.\n\n### Environment variables\n- These are required for the 3rd party integrations and also to determine which combination of data source and services are used.\n- Please see `.env.example` for a list of the fields used.\n\n---\n\n### TODO?\n- Add a basic auth-locked settings page to allow add/edit/delete of events. Nuxt?\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frecidvst%2Fnode-event-reminder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frecidvst%2Fnode-event-reminder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frecidvst%2Fnode-event-reminder/lists"}