{"id":28502640,"url":"https://github.com/pierregode/mmm-chores","last_synced_at":"2025-07-05T11:32:38.441Z","repository":{"id":292807879,"uuid":"981996373","full_name":"PierreGode/MMM-Chores","owner":"PierreGode","description":"keep track of your household shores and tasks","archived":false,"fork":false,"pushed_at":"2025-07-03T18:33:31.000Z","size":646,"stargazers_count":9,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-03T19:31:31.382Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PierreGode.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,"zenodo":null}},"created_at":"2025-05-12T08:12:35.000Z","updated_at":"2025-07-02T04:25:10.000Z","dependencies_parsed_at":"2025-05-28T05:27:24.789Z","dependency_job_id":"7bae0eb4-ac94-4edd-bf1e-6d514377ceb9","html_url":"https://github.com/PierreGode/MMM-Chores","commit_stats":null,"previous_names":["pierregode/mmm-shores"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/PierreGode/MMM-Chores","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PierreGode%2FMMM-Chores","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PierreGode%2FMMM-Chores/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PierreGode%2FMMM-Chores/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PierreGode%2FMMM-Chores/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PierreGode","download_url":"https://codeload.github.com/PierreGode/MMM-Chores/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PierreGode%2FMMM-Chores/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263733512,"owners_count":23503169,"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":"2025-06-08T16:36:50.205Z","updated_at":"2025-07-05T11:32:38.435Z","avatar_url":"https://github.com/PierreGode.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MMM-Chores\n\n**MMM-Chores** is a module for [MagicMirror²](https://github.com/MagicMirrorOrg/MagicMirror) that allows you to manage your household chores.\n\nIt provides an admin interface where you can add, edit, and delete tasks. You can also set due dates and assign tasks to different persons. The module displays the tasks on your MagicMirror, allowing you to keep track of your household chores at a glance.\n\nThe data is stored in `data.json` to make the data persistent between restarts.\n\n*Update 2025-05-30: Added AI Generate, It is a helper that will create tasks for coming 7 days based on your data.json history. the more history accumulated the better it will get predicting tasks to create and whom to assign them to.\n*Update 2025-06-16: Tasks can now be set to recur weekly, monthly or yearly when created.\n\n## Screenshots\n  \n![frontend](img/screenshot1_frontend.png)\n\n![backend](img/admin.png)\n\n## Installation\n\n```bash\ncd ~/MagicMirror/modules\ngit clone https://github.com/PierreGode/MMM-Chores\ncd MMM-Chores\nnpm install\n```\n\n## Update\n\n```bash\ncd ~/MagicMirror/modules/MMM-Chores\ngit pull\nnpm install\n```\n\n## Configuration\nin /MagicMirror/config/config.js\n```js\n{\n  module: \"MMM-Chores\",\n  position: \"bottom_right\",\n  header: \"Chores\",\n  config: {\n    updateInterval: 60 * 1000,\n    adminPort: 5003,\n    openaiApiKey: \"your-openApi-key-here\",\n    useAI: true,        // hide AI features when false\n    showDays: 3,       // show tasks from today and the next 2 days (total 3 days)\n    showPast: true,    // also show unfinished tasks from past days\n    textMirrorSize: \"small\", // small, medium or large\n    dateFormatting: \"MM-DD\",  // Date format pattern to display task dates.\n                              // Use tokens like 'yyyy', 'mm', 'dd'.\n                              // Set to \"\" to hide the date completely.\n    leveling: {               // optional leveling system\n      enabled: true,\n      yearsToMaxLevel: 3,\n      choresPerWeekEstimate: 4,\n      maxLevel: 100\n    },\n    levelTitles: [            // titles for every 10 levels\n      \"Junior\",\n      \"Apprentice\",\n      \"Journeyman\",\n      \"Experienced\",\n      \"Expert\",\n      \"Veteran\",\n      \"Master\",\n      \"Grandmaster\",\n      \"Legend\",\n      \"Mythic\"\n    ]\n  }\n},\n```\n\nlevels could also be rewards \n```js\n    levelTitles: [            // titles for every 10 levels\n      \"10 euro game giftcard\",\n      \"Movie Night Voucher\",\n      \"Dinner at Favorite Restaurant\",\n      \"Weekend Brunch Voucher\",\n      \"Gadget Accessory (e.g. Headphones)\",\n      \"Spa or Relaxation Package\",\n      \"Adventure Experience Voucher\",\n      \"Weekend trip\",\n      \"Adventureland\",\n      \"Travel destination\"\n    ]\n```\n\n\n\nWhen `leveling.enabled` is set to `false`, both the MagicMirror display and the\nadmin portal hide any level badges and reward titles.\n\n### Level titles\n\nFor level **N** (1 ≤ N ≤ 100), the module chooses a title based on the ten-level\ninterval that `N` belongs to. Level 1–10 uses the first entry in `levelTitles`,\n11–20 the second entry, and so on. The boundaries are inclusive, so level 10\nstill uses the first title and 11 uses the second.\n\nSpecify your own titles by providing a `levelTitles` array with exactly ten\nstrings in the configuration. If omitted, the defaults shown above are used.\n\n### Custom titles per person\n\nYou can override the global rewards for an individual by using the\n`customLevelTitles` object. The keys are the person's name and the value should\nbe an array of ten titles.\n\n```js\ncustomLevelTitles: {\n  Pierre: [\n    \"10 euro game giftcard\",\n    \"Movie Night Voucher\",\n    \"Dinner at Favorite Restaurant\",\n    \"Weekend Brunch Voucher\",\n    \"Gadget Accessory (e.g. Headphones)\",\n    \"Spa or Relaxation Package\",\n    \"Adventure Experience Voucher\",\n    \"Weekend trip\",\n    \"Adventureland\",\n    \"Travel destination\"\n  ]\n}\n```\n\nAny person not listed in `customLevelTitles` falls back to the global\n`levelTitles` array or the defaults.\n\n### Per-person levels\n\nEach person earns experience separately. Their current level and title are stored\nin `data.json` and shown next to the name in the admin interface. On the\nMagicMirror display the assigned person's name will include a small\n`lvlX` badge.\n\n## Admin Interface\n\nGo to http://yourmirrorIP:5003/ #page will be reachable within same network.\n\u003e [!CAUTION]\n\u003e DO NOT expose application with portforward\n\n## Push Notifications\n\nIf you wish to use push notifications follow guide below. \n\n![cert](img/screenshot3_cert.png)\n\n### 1. in MagicMirror/modules/MMM-Chores create a folder certs\n\n```bash\nmkdir MagicMirror/modules/MMM-Chores/certs\n```\n\n### 2. Generate a private key in MMM-Chores/certs\n\n```bash\nopenssl genrsa -out server.key 2048\n```\n\n### 3. Create a certificate signing request (CSR)\n\n```bash\nopenssl req -new -key server.key -out server.csr -subj \"/C=SE/ST=Stockholm/L=Stockholm/O=Home/CN=192.168.1.192\" \u003c--- YOUR IP\n```\n\n### 4. Generate a self-signed cert valid for 1 year\n\n```bash\nopenssl x509 -req -in server.csr -signkey server.key -out server.crt -days 365\n```\n\ncopy /certs/server.crt and install on your devices.\n\nbrowse to https://yourmirrorIP:5004/ and allow push notifications.\n\n\u003e [!NOTE]\n\u003e 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\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpierregode%2Fmmm-chores","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpierregode%2Fmmm-chores","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpierregode%2Fmmm-chores/lists"}