MMM-Chores is a module for MagicMirrorΒ² that allows you to manage your household chores.
- Weekdays: Monday to Friday
- Weekends: Saturday to Sunday
- Rewards: show claimed rewards by whom on the mirror
- Fullscreen dashboard: Launch an always-on display mode tailored for tablets and wall screens, keeping chores visible without the admin chrome.
- Group by person: Quickly filter and group the task list by assignee to focus on what each person needs to do next.
- Rewards in Pushover: get better notifikations to pushover about rewards, and now with language support.
- Smart Assistant: Integrated OpenAI-powered chatbot in the admin dashboard.
- Voice Interaction: Speak to your chores list! (Requires SSL/HTTPS).
- Text-to-Speech: Hear responses with six natural-sounding AI voices. ( ssl cert is needed "https" for microphone to work)
- Context Aware: Ask about upcoming tasks, people's points, or available rewards.
- New role: regular
- Regular access: Regular users only see their assigned tasks and can personalize user-specific settings such as their own background.
Major Update: Added comprehensive point-based reward system and enhanced recurring options! See NEW_FEATURES.md for complete details.
- Custom Points: Assign custom point values to each chore
- Flexible Rewards: Create rewards that cost specific amounts of points
- Automatic Tracking: Points are automatically awarded when tasks are completed
- Email Notifications: Optional email notifications when rewards are redeemed
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 installcd ~/MagicMirror/modules/MMM-Chores
git pull
npm installMost 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: "steve", password: "", permission: "regular" }, //leave password empty for no password
{ 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"
],
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"
]
}
}
},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.
Custom reward titles can also be adjusted from the admin interface's Edit Rewards dialog in the settings, which lists each person. In the People section, the present icon shows the reward titles available for that person but doesn't allow editing.
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.
If you're running the mirror on Linux, you can auto-generate the required certificates by executing ./generate_certs.sh from the module root. The script detects your primary IP, creates the certs folder inside ~/MagicMirror/modules/MMM-Chores/, and outputs ready-to-use server.key, server.csr, and server.crt files.
mkdir MagicMirror/modules/MMM-Chores/certsopenssl genrsa -out server.key 2048openssl req -new -key server.key -out server.csr -subj "/C=SE/ST=Stockholm/L=Stockholm/O=Home/CN=192.168.1.192" <--- YOUR IPopenssl x509 -req -in server.csr -signkey server.key -out server.crt -days 365copy /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



