# Notifications on Calendar Changes I released a new project recently which scratched an itch I've had for a while. I subscribe to a number of calendars, and I wanted to receive notifications about any changes to those calendars, as they happen. My new project to solve this problem is [calendiff](https://gitlab.com/grepular/calendiff). It's open source, self hosted, and the idea is that you run it on a schedule from cron or a systemd timer etc. You point it at an ICS URL, and the first time it runs, it just collects the latest snapshot. On subsequent runs, it identifies any changes and exposes them. You can use it in three different ways. Firstly as a golang library that you can import into your own applications. Secondly, as a tool which just spits out the differences to stdout, either human readable or as JSON. Thirdly, and most usefully to myself (and probably you), there is a tool called cal2email, which will send nicely formatted emails with the changes: ![Cal2Email Example Output](/blog/cal2email-example.png) I added a suitable system for filtering out events. For example, you can choose to ignore the deletion of events from a certain distance in the past or future, or modification of certain event fields, or certain event fields for events that are suitably far in the past or future etc. It's all in the documentation, but an example minimal config might look like this: ```toml source = "https://example.com/calendar.ics" state = "/var/lib/calendiff/personal.json" [email] from = "cron@example.com" to = ["mike@example.com"] [email.sendmail] path = "/usr/sbin/sendmail" ``` I hope you find this useful. Feel free to submit patches and feature requests.