{"id":13830569,"url":"https://github.com/jclarke0000/MMM-MyCalendar","last_synced_at":"2025-07-09T12:30:24.808Z","repository":{"id":47464530,"uuid":"91137480","full_name":"jclarke0000/MMM-MyCalendar","owner":"jclarke0000","description":"Alternative calendar module for MagicMirror.","archived":false,"fork":false,"pushed_at":"2023-12-14T02:20:17.000Z","size":66,"stargazers_count":57,"open_issues_count":28,"forks_count":17,"subscribers_count":11,"default_branch":"master","last_synced_at":"2024-11-20T12:09:47.492Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jclarke0000.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2017-05-12T23:49:54.000Z","updated_at":"2024-04-04T20:43:29.000Z","dependencies_parsed_at":"2024-08-04T10:13:26.700Z","dependency_job_id":null,"html_url":"https://github.com/jclarke0000/MMM-MyCalendar","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/jclarke0000/MMM-MyCalendar","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jclarke0000%2FMMM-MyCalendar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jclarke0000%2FMMM-MyCalendar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jclarke0000%2FMMM-MyCalendar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jclarke0000%2FMMM-MyCalendar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jclarke0000","download_url":"https://codeload.github.com/jclarke0000/MMM-MyCalendar/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jclarke0000%2FMMM-MyCalendar/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264458040,"owners_count":23611471,"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":[],"created_at":"2024-08-04T10:01:02.254Z","updated_at":"2025-07-09T12:30:24.515Z","avatar_url":"https://github.com/jclarke0000.png","language":"JavaScript","funding_links":[],"categories":["Calendar"],"sub_categories":[],"readme":"# Module: MMM-MyCalendar\n\nThis calendar module is functionally the same as the default calendar app, however its presentation is different.\n\nThis module displays events from a public .ical calendar. It can combine multiple calendars.\n\n## Installation\n\n1. Navigate to the `MagicMirror/modules` directory.\n2. Execute `git clone https://github.com/jclarke0000/MMM-MyCalendar.git`\n3. Configure the module as per below\n4. Restart MagicMirror\n\n## Using the module\n\n**NOTE: Some configuration parameters have changed.  See below if you are updating from a previous version.**\n\nTo use this module, add it to the modules array in the `config/config.js` file:\n````javascript\nmodules: [\n\t{\n\t\tmodule: \"MMM-MyCalendar\",\n\t\tposition: \"top_left\",\t// This can be any of the regions. Best results in left or right regions.\n\t\tconfig: {\n\t\t\t// The config property is optional.\n\t\t\t// If no config is set, an example calendar is shown.\n\t\t\t// See 'Configuration options' for more information.\n\t\t}\n\t}\n]\n````\n\n## Configuration options\n\nThe following properties can be configured:\n\n**Note** if you are updating, some of the configuration options have changed, as follows:\n\n* `timeFormat` no longer refers to whether you would like to see 'relative' or 'absolute' dates.  You now use `useRelativeDates` and specifiy either `true` or `false`.\n* `timeFormat` is now used to specify the display format for time (e.g.: `\"h:mm A\"` for 12 hour time, `\"HH:mm\"` for 24 hour time, etc.)\n* `dateFormat` is now just used for specifying how date portions of the display should format (e.g.: `\"MMMM D\"` for January 1, `\"DD-MMM\"` for 01-Jan, etc.).\n* `dayOfWeekFormat` is new and allows you to specify a format for weekday names (e.g. `\"dddd\"` for Tuesday, `\"ddd\"` for Tue, etc.)\n* `joiningWord` is new and allows you to specify the word to be displayed between the day/date and time of the event (e.g.: specify `\"at\"` for Tuesday `at` 1:15 PM).  If you do not want a joining word, then specify an empty string (i.e.: `\"\"`).\n\n\n| Option                       | Description\n| ---------------------------- | -----------\n| `maximumEntries`             | The maximum number of events shown. / **Possible values:** `0` - `100` \u003cbr\u003e **Default value:** `10`\n| `maximumNumberOfDays`        | The maximum number of days in the future. \u003cbr\u003e\u003cbr\u003e **Default value:** `365`\n| `maxTitleLength`             | The maximum title length. \u003cbr\u003e\u003cbr\u003e **Possible values:** `10` - `50` \u003cbr\u003e **Default value:** `25`\n| `fetchInterval`              | How often does the content needs to be fetched? (Milliseconds) \u003cbr\u003e\u003cbr\u003e **Possible values:** `1000` - `86400000` \u003cbr\u003e **Default value:** `300000` (5 minutes)\n| `animationSpeed`             | Speed of the update animation. (Milliseconds) \u003cbr\u003e\u003cbr\u003e **Possible values:**`0` - `5000` \u003cbr\u003e **Default value:** `2000` (2 seconds)\n| `fade`                       | Fade the future events to black. (Gradient) \u003cbr\u003e\u003cbr\u003e **Possible values:** `true` or `false` \u003cbr\u003e **Default value:** `true`\n| `fadePoint`                  | Where to start fade? \u003cbr\u003e\u003cbr\u003e **Possible values:** `0` (top of the list) - `1` (bottom of list) \u003cbr\u003e **Default value:** `0.25`\n| `calendars`                  | The list of calendars. \u003cbr\u003e\u003cbr\u003e **Possible values:** An array, see _calendar configuration_ below. \u003cbr\u003e **Default value:** _An example calendar._\n| `titleReplace`               | An object of textual replacements applied to the tile of the event. This allow to remove or replace certains words in the title. \u003cbr\u003e\u003cbr\u003e **Example:** `{'Birthday of ' : '', 'foo':'bar'}` \u003cbr\u003e **Default value:** `{\t\"De verjaardag van \": \"\", \"'s birthday\": \"\"\t}`\n| `displayRepeatingCountTitle` | Show count title for yearly repeating events (e.g. \"X. Birthday\", \"X. Anniversary\") \u003cbr\u003e\u003cbr\u003e **Possible values:** `true` or `false` \u003cbr\u003e **Default value:** `false`\n| `dayOfWeekFormat`            | Format to use for weekday names. \u003cbr\u003e\u003cbr\u003e**Possible values:** See [Moment.js formats](http://momentjs.com/docs/#/parsing/string-format/)\u003cbr\u003e **Default value:** `dddd` (e.g. Tuesday)\n| `timeFormat`                 | Format to use for time display. \u003cbr\u003e\u003cbr\u003e**Possible values:** See [Moment.js formats](http://momentjs.com/docs/#/parsing/string-format/)\u003cbr\u003e **Default value:** `h:mm A` (e.g. 1:15 PM)\n| `dateFormat`                 | Format to use for the date of events (when using absolute dates) \u003cbr\u003e\u003cbr\u003e **Possible values:** See [Moment.js formats](http://momentjs.com/docs/#/parsing/string-format/) \u003cbr\u003e **Default value:** `MMMM D` (e.g. January 18)\n| `joiningWord`                | Word to display between the day/date and the time of the event (e.g.: Tuesday `at` 1:15 PM). If you do not want one, you need to explicitly specify an epmty string (i.e.: `\"\"`)\u003cbr\u003e **Default value:** `at`\n| `useRelativeDates`           | Display event times as relative time (`true`) or absolute dates (`false`)\u003cbr\u003e\u003cbr\u003e **Possible values:** `true` or `false` \u003cbr\u003e **Default value:** `false`\u003cbr\u003e**NOTE** This used to be named `timeFormat`, but I felt that din't make a lot of sense.  So `timeFormat` is now used to specify the format for time display (as one would expect).\n| `getRelative`                | How much time (in hours) should be left until calendar events start getting relative? \u003cbr\u003e\u003cbr\u003e **Possible values:** `0` (events stay absolute) - `48` (48 hours before the event starts) \u003cbr\u003e **Default value:** `6`\n| `urgency`                    | When using a timeFormat of `absolute`, the `urgency` setting allows you to display events within a specific time frame as `relative`. This allows events within a certain time frame to be displayed as relative (in xx days) while others are displayed as absolute dates \u003cbr\u003e\u003cbr\u003e **Possible values:** a positive integer representing the number of days for which you want a relative date, for example `7` (for 7 days) \u003cbr\u003e\u003cbr\u003e **Default value:** `7`\n| `broadcastEvents`            | If this property is set to true, the calendar will broadcast all the events to all other modules with the notification message: `CALENDAR_EVENTS`. The event objects are stored in an array and contain the following fields: `title`, `startDate`, `endDate`, `fullDayEvent`, `location` and `geo`. \u003cbr\u003e\u003cbr\u003e **Possible values:** `true`, `false` \u003cbr\u003e\u003cbr\u003e **Default value:** `true`\n| `hidePrivate`                | Hides private calendar events. \u003cbr\u003e\u003cbr\u003e **Possible values:** `true` or `false` \u003cbr\u003e **Default value:** `false`\n| `excludedEvents`             | An array of words / phrases from event titles that will be excluded from being shown. \u003cbr\u003e\u003cbr\u003e **Example:** `['Birthday', 'Hide This Event']` \u003cbr\u003e **Default value:** `[]`\n| `showLocation`               | Whether to show the event's location. \u003cbr\u003e\u003cbr\u003e **Possible values:** `true` or `false`.\u003cbr\u003e **Default value:** `true`\n\n### Calendar configuration\n\nThe `calendars` property contains an array of the configured calendars.\nThe `colored` property gives the option for an individual color for each calendar.\n\n#### Default value:\n````javascript\nconfig: {\n\tcolored: false,\n\tcalendars: [\n\t\t{\n\t\t\turl: 'http://www.calendarlabs.com/templates/ical/US-Holidays.ics',\n\t\t\tsymbol: 'calendar',\n\t\t\tauth: {\n\t\t\t    user: 'username',\n\t\t\t    pass: 'superstrongpassword',\n\t\t\t    method: 'basic'\n\t\t\t}\n\t\t},\n\t],\n}\n````\n\n#### Calendar configuration options:\n| Option                | Description\n| --------------------- | -----------\n| `url`\t                | The url of the calendar .ical. This property is required. \u003cbr\u003e\u003cbr\u003e **Possible values:** Any public accessble .ical calendar.\n| `color`              | The font color of an event from this calendar. This property should be set if the config is set to colored: true. \u003cbr\u003e\u003cbr\u003e **Possible values:** HEX, RGB or RGBA values (#efefef, rgb(242,242,242), rgba(242,242,242,0.5)).\n| `repeatingCountTitle`\t| The count title for yearly repating events in this calendar.  \u003cbr\u003e\u003cbr\u003e **Example:** `'Birthday'`\n| `maximumEntries`      | The maximum number of events shown.  Overrides global setting. **Possible values:** `0` - `100`\n| `maximumNumberOfDays` | The maximum number of days in the future.  Overrides global setting\n| `auth`                | The object containing options for authentication against the calendar.\n\n\n#### Calendar authentication options:\n| Option                | Description\n| --------------------- | -----------\n| `user`                | The username for HTTP authentication.\n| `pass`                | The password for HTTP authentication. (If you use Bearer authentication, this should be your BearerToken.)\n| `method`              | Which authentication method should be used. HTTP Basic, Digest and Bearer authentication methods are supported. Basic authentication is used by default if this option is omitted. **Possible values:** `digest`, `basic`, `bearer` **Default value:** `basic`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjclarke0000%2FMMM-MyCalendar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjclarke0000%2FMMM-MyCalendar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjclarke0000%2FMMM-MyCalendar/lists"}