{"id":13830573,"url":"https://github.com/pinsdorf/MMM-WeeklySchedule","last_synced_at":"2025-07-09T12:30:24.595Z","repository":{"id":47147992,"uuid":"119208845","full_name":"pinsdorf/MMM-WeeklySchedule","owner":"pinsdorf","description":"Module for MagicMirror which shows a weekly timetable. Might be helpful for students/teachers/parents to show class schedules, weekly gym courses, sports training sessions, and general weekly recurring events.","archived":false,"fork":false,"pushed_at":"2024-06-24T17:00:42.000Z","size":111,"stargazers_count":65,"open_issues_count":8,"forks_count":26,"subscribers_count":10,"default_branch":"master","last_synced_at":"2024-11-20T12:09:48.093Z","etag":null,"topics":["magicmirror"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/pinsdorf.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":"2018-01-27T22:42:41.000Z","updated_at":"2024-09-09T14:40:23.000Z","dependencies_parsed_at":"2024-08-04T10:13:28.692Z","dependency_job_id":null,"html_url":"https://github.com/pinsdorf/MMM-WeeklySchedule","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/pinsdorf/MMM-WeeklySchedule","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pinsdorf%2FMMM-WeeklySchedule","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pinsdorf%2FMMM-WeeklySchedule/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pinsdorf%2FMMM-WeeklySchedule/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pinsdorf%2FMMM-WeeklySchedule/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pinsdorf","download_url":"https://codeload.github.com/pinsdorf/MMM-WeeklySchedule/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pinsdorf%2FMMM-WeeklySchedule/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":["magicmirror"],"created_at":"2024-08-04T10:01:02.329Z","updated_at":"2025-07-09T12:30:24.240Z","avatar_url":"https://github.com/pinsdorf.png","language":"JavaScript","funding_links":[],"categories":["Calendar"],"sub_categories":[],"readme":"MMM-WeeklySchedule\n==================\n\nThis a module for the [MagicMirror](https://github.com/MichMich/MagicMirror). It displays today's timetable from a weekly recurring schedule. It is intended for regular weekly schedules, which have a low update frequency and thus can be maintained manually. Examples are:\n* kid’s school classes\n* student lectures\n* teacher’s teaching schedule\n* gym training classes\n* household chores\n* opening hours of bakery, post office, supermarket \n\n# Preview\n\n![](images/screenshot.png)\n\n# Installation\n1. Navigate into your MagicMirror's `modules` folder. \n2. Execute `git clone https://github.com/pinsdorf/MMM-WeeklySchedule.git`. A new folder will appear. \n3. Navigate into folder `MMM-WeeklySchedule`.\n4. Execute `npm install` to install the node dependencies.\n\n# Config\nThe entry in `config.js` can include the following options:\n\n|Option|Description|\n|---|---|\n|`schedule`|Defines the data the module shows. It consists of a definition for `timeslots` and `lessons`. See below.|\n|`updateInterval`|How often the content is updated.\u003cbr\u003e**Default value:** `1 • 60 • 60 • 1000` // every 1 hour |\n|`showWeekdayinHeader`|Appends the module `header`text with weekday name, e.g., *on Monday*\u003cbr\u003e**Default value:** `true`|\n|`showNextDayAfter`|From this time of the day on the module shows the schedule of the *next* day. This is helpful when, e.g., a school day is over and you want to show what is up tomorrow. If you don't like this set the value to `23:59` or `undefined`. \u003cbr\u003e**Default value:** `16:00`|\n|`allowHTML`|Whether timeslot and lesson texts can contain HTML. Can for example be used to color certain lessons.\u003cbr\u003e**Default value:** `false`|\n\nBelow is an example of an configuration entry in `config.js`. Make sure that the days of week (mon, tue, wed, ...) are all lower case. The `timeslots` arrays shall have at least the same length as the longest array in `lessons.*`. In other words, make sure each `lesson` entry has a `timeslot` value.\n\nIf you want to show no entry at a particular time simply put an empty string as in the example below (cf. first entry for `tue` and `sun`). You can omit one or many weekdays (cf. entry for `sat`). On days without lessons the module shows the text *no lessons*.\n\n``` js\n{\n    module: \"MMM-WeeklySchedule\",\n    position: \"top_left\",\n    header: \"Hermione's classes\",\n    config: {\n        schedule: {\n            timeslots: [ \"8:00\", \"10:00\", \"12:00\", \"14:00\", \"16:00\" ],\n            lessons: {\n                mon: [ \"Potions\", \"Defense against the Dark Arts\", \"Lunch Break\", \"Transfiguration\" ],  \n                tue: [ \"\", \"Astronomy\", \"Lunch Break\", \"Charms\", \"History of Magic\" ],\n                wed: [ \"Arithmancy\", \"Divination\", \"Lunch Break\", \"Muggle Studies\", \"Herbology\" ],\n                thu: [ \"Care of Magical Creatures\", \"Care of Magical Creatures\", \"Lunch Break\", \"Transfiguration\", \"Charms\" ],\n                fri: [ \"Potions\", \"Herbology\", \"Lunch Break\", \"Charms\", \"Defense against the Dark Arts\" ],\n                // no entries for saturday\n                sun: [ \"\", \"Quidditch Match\", \"Sunday Lunch\" ]   // short day on sundays\n            }\n        },\n        updateInterval: 1 * 60 * 60 * 1000, // every hour\n        showNextDayAfter: \"16:00\"\n    }\n},\n```\n\nThe values in the `timeslots` array don't need to be a time. It is merely an arbitrary string. This allows to use the module also to announce shared workload like household chores. The screenshot below shows an example. \n\n![](images/screenshot2.png?raw=true)\n\nAnd here is the configuaration for this example. \n\n``` js\n{\n    module: \"MMM-WeeklySchedule\",\n    position: \"top_left\",\n    header: \"Household chores\",\n    config: {\n            schedule: {\n                    timeslots: [ \"Feed the fish\", \"Set the table\", \"Take out the trash\", \"Hoover living room\" ],\n                    lessons: {\n                            mon: [ \"Bart\",  \"Marge\", \"Homer\", \"Lisa\"  ],\n                            tue: [ \"Lisa\",  \"Bart\",  \"Marge\", \"Homer\" ],\n                            wed: [ \"Homer\", \"Lisa\",  \"Bart\",  \"Marge\" ],\n                            thu: [ \"Marge\", \"Homer\", \"Lisa\",  \"Bart\"  ],\n                            fri: [ \"Bart\",  \"Marge\", \"Homer\", \"Lisa\" ]\n                    }\n            },\n            updateInterval: 1 * 60 * 60 * 1000, // every hour\n            showNextDayAfter: undefined\n    }\n},\n```\n\n# Use HTML markup in schedules \n\nSetting `allowHTML` to true gives you the possibility to color texts, add images or include any HTML. Here's an example to add red text for reminders:\n\n![](images/screenshot3.png?raw=true)\n\nConfiguration for the above example:\n\n``` js\n{\n\tmodule: \"MMM-WeeklySchedule\",\n\tposition: \"top_left\",\n\theader: \"Activity\",\n\tconfig: {\n\t\tschedule: {\n\t\t\ttimeslots: [ \"Activity\", \"Remember\" ],\n\t\t\tlessons: {\n\t\t\t\tmon: [ \"Running\", \"\u003cspan style='color: #ff5000'\u003eCharge GPS watch!\u003c/span\u003e\" ],\n\t\t\t\ttue: [ \"Swimming\", \"\" ],\n\t\t\t\tthu: [ \"Cycling\", \"\" ],\n\t\t\t\tsat: [ \"Bowling\", \"\u003cspan style='color: #ff5000'\u003eBring bowling ball!\u003c/span\u003e\" ],\n\t\t\t}\n\t\t},\n\t\tupdateInterval: 1 * 60 * 60 * 1000, // every hour\n\t\tshowNextDayAfter: \"21:00\",\n\t\tallowHTML: true\n\t}\n},\n```\n\nAnd another example using images:\n\n![](images/screenshot4.png?raw=true)\n\nConfiguration for the above example:\n\n``` js\n{\n\tmodule: \"MMM-WeeklySchedule\",\n\tposition: \"top_left\",\n\theader: \"\",\n\tconfig: {\n\t\tschedule: {\n\t\t\ttimeslots: [ \"Fruit of the day\" ],\n\t\t\tlessons: {\n\t\t\t\tmon: [ \"\u003cimg src='https://img.icons8.com/metro/35/ffffff/pear.png' /\u003e\" ],\n\t\t\t\ttue: [ \"\u003cimg src='https://img.icons8.com/metro/35/ffffff/citrus.png' /\u003e\" ],\n\t\t\t\twed: [ \"\u003cimg src='https://img.icons8.com/metro/35/ffffff/kiwi.png' /\u003e\" ],\n\t\t\t\tthu: [ \"\u003cimg src='https://img.icons8.com/metro/35/ffffff/strawberry.png' /\u003e\" ],\n\t\t\t\tfri: [ \"\u003cimg src='https://img.icons8.com/metro/35/ffffff/apple.png' /\u003e\" ],\n\t\t\t\tsat: [ \"\u003cimg src='https://img.icons8.com/metro/35/ffffff/grapes.png' /\u003e\" ],\n\t\t\t\tsun: [ \"\u003cimg src='https://img.icons8.com/metro/35/ffffff/watermelon.png' /\u003e\" ],\n\t\t\t}\n\t\t},\n\t\tupdateInterval: 1 * 60 * 60 * 1000, // every hour\n\t\tshowNextDayAfter: undefined,\n\t\tallowHTML: true\n\t}\n},\n```\n\n# Localization\nThanks to many contributions by the community this module has been localized for a number of languages already. More input is very welcome.\n\n|Locale|Language            |\n|------|--------------------|\n|da    | Danish             |\n|de    | German             |\n|en    | English            |\n|he    | Hebrew             |\n|hu    | Hungary            |\n|nb    | Norwegian Bokmål   |\n|nl    | Dutch              |\n|nn    | Norwegian          |\n|pl    | Polish             |\n|sv    | Swedish            |\n|zh-cn | Simplified Chinese |\n\n# Dependencies\n- [moment](https://www.npmjs.com/package/moment) (installed via `npm install`)\n\n# Notes\n- This is my first project using Node, so feel free to submit pull requests or post on the issues and I will do my best to improve the project.\n\n# Special Thanks\n- [Michael Teeuw](https://github.com/MichMich) for creating the awesome [MagicMirror2](https://github.com/MichMich/MagicMirror/tree/develop) project that made this module possible.\n- [LukeSkywalker92](https://github.com/LukeSkywalker92) for creating the [MMM-DWD-WarnWeather](https://github.com/LukeSkywalker92/MMM-DWD-WarnWeather) module that I used as guidance in creating this module.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpinsdorf%2FMMM-WeeklySchedule","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpinsdorf%2FMMM-WeeklySchedule","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpinsdorf%2FMMM-WeeklySchedule/lists"}