MMM-Chores is a module for MagicMirror² that allows you to manage your household chores.
It provides an admin interface where you can add, edit, and delete tasks. You can also set due dates and assign tasks to different persons. Tasks may be one-time or recur daily, weekly, monthly, or yearly. The module displays the tasks on your MagicMirror, allowing you to keep track of your household chores at a glance.
The data is stored in data.json
so it persists across restarts.
Use the drag handle ("burger" icon) to reorder tasks in the admin UI. The
updated order is saved to data.json
and automatically reloaded, so it
survives page refreshes and restarts.
The Show past tasks setting lets you toggle whether overdue tasks that are not yet completed should remain visible on the mirror. Completed past tasks are always hidden.
*Update 2025-08-04: most settings are moved to admin webpage
Note
*Update 2025-08-20: added optional login with possibility to add both write permission user and read only user.
added pushover notification possibility+ configuration to set daily reminders at specific time.
added background images " 4 seasons"
-reworked task list, moved up user assignment to creation space
-reworked edit option to be a form to be able to update task description, user and date
cd ~/MagicMirror/modules
git clone https://github.com/PierreGode/MMM-Chores
cd MMM-Chores
npm install
cd ~/MagicMirror/modules/MMM-Chores
git pull
npm install
Most settings are now editable in the admin portal via the cogwheel Settings button.
An additional option Enable autoupdate can pull the latest changes via git pull
and reload the module automatically and Autoupdates run once per day at 04:00 local time.
Pushover notifications can be toggled from the admin portal, while the pushoverApiKey
and pushoverUser
must be defined in your MagicMirror config.js
.
You can also specify a daily reminder time in the admin settings to receive a Pushover message listing unfinished tasks due today or earlier.
When login
is set to true
, define one or more users
with username
, password
and permission
("read"
or "write"
). Users with read permission may view all tasks but cannot create, delete or modify them.
Add the module to config.js
like so:
{
module: "MMM-Chores",
position: "bottom_right",
header: "Chores",
config: {
updateInterval: 60 * 1000,
adminPort: 5003,
openaiApiKey: "your-openApi-key here",
pushoverApiKey: "your-pushover-api-key",
pushoverUser: "your-pushover-user-key",
login: false,
users: [
{ username: "admin", password: "secret", permission: "write" },
{ username: "viewer", password: "viewer", permission: "read" }
],
settings: "unlocked", // set a 6 digit pin like "000000" to lock settings popup with a personal pin, change 000000 to any 6 digit password you want, or comment this out to lock settings completly
// other options can be set in the admin portal
levelTitles: [
// titles for every 10 levels
"Junior",
"Apprentice",
"Journeyman",
"Experienced",
"Expert",
"Veteran",
"Master",
"Grandmaster",
"Legend",
"Mythic"
]
}
},
levels could also be rewards
levelTitles: [ // titles for every 10 levels
"10 euro game giftcard",
"Movie Night Voucher",
"Dinner at Favorite Restaurant",
"Weekend Brunch Voucher",
"Gadget Accessory (e.g. Headphones)",
"Spa or Relaxation Package",
"Adventure Experience Voucher",
"Weekend trip",
"Adventureland",
"Travel destination"
]
When leveling.enabled
is set to false
, both the MagicMirror display and the
admin portal hide any level badges and reward titles.
For level N (1 ≤ N ≤ 100), the module chooses a title based on the ten-level
interval that N
belongs to. Level 1–10 uses the first entry in levelTitles
,
11–20 the second entry, and so on. The boundaries are inclusive, so level 10
still uses the first title and 11 uses the second.
Specify your own titles by providing a levelTitles
array with exactly ten
strings in the configuration. If omitted, the defaults shown above are used.
You can override the global rewards for an individual by using the
customLevelTitles
object. The keys are the person's name and the value should
be an array of ten titles.
customLevelTitles: {
NameOfTheUser: [
"10 euro game giftcard",
"Movie Night Voucher",
"Dinner at Favorite Restaurant",
"Weekend Brunch Voucher",
"Gadget Accessory (e.g. Headphones)",
"Spa or Relaxation Package",
"Adventure Experience Voucher",
"Weekend trip",
"Adventureland",
"Travel destination"
]
}
Any person not listed in customLevelTitles
falls back to the global
levelTitles
array or the defaults.
Each person earns experience separately. Their current level and title are stored
in data.json
and shown next to the name in the admin interface. On the
MagicMirror display the assigned person's name will include a small
lvlX
badge.
Go to http://yourmirrorIP:5003/ #page will be reachable within same network.
Caution
DO NOT expose application with portforward
No.. the login will not protect you, a trained goldfish can hack it.If you wish to use push notifications follow guide below.
Alternatively, you can use Pushover by providing both a pushoverApiKey
and pushoverUser
in your module config and enabling Pushover in the admin settings.
mkdir MagicMirror/modules/MMM-Chores/certs
openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr -subj "/C=SE/ST=Stockholm/L=Stockholm/O=Home/CN=192.168.1.192" <--- YOUR IP
openssl x509 -req -in server.csr -signkey server.key -out server.crt -days 365
copy /certs/server.crt and install on your devices.
browse to https://yourmirrorIP:5004/ and allow push notifications.
Note
And yes everything will yell unsafe, warning warning, Not Secure, that is what happens when you do a selfsigned certificate and not a micrsoft signed cert for loads of money ;P