Introduction

Je continue dans ma lancée de création d’une tablette tactile pour la maison en attaquant un des sujets principaux de ce foyer : les tâches ménagères. L’idée est de remplacer une application existante - et payante - par un équivalent en Logiciel Libre auto-hébergé.

Cet article ressemble bien plus à une réflexion autour du sujet et une présentation de la solution choisie qu’à un guide d’installation. Il n’y sera donc pas question de configuration serveur ni de déploiement spécifique. Si ces détails vous intéressent, vous pouvez le suggérer en commentaire d’un de mes articles publiés sur le Journal du Hacker - dont je vous recommande vivement la lecture (je parle du Journal, pas de mes articles 🤣).

L’ancien Sweepy

Un jour quelqu’un nous conseille une application - payante - nommée Sweepy (sur téléphone mobile) pour gérer à plusieurs les tâches ménagères. Que cela signifie-t-il et comment cela fonctionne-t-il ?

Page d’accueil de Sweepy listant les pièces de la maison et leur état d’avancement

Page d’accueil de Sweepy avec la liste des pièces

Page d’accueil d’une pièce dans Sweepy listant les tâches de ladite pièce, ici la chambre

Page d’accueil d’une pièce dans Sweepy avec la liste de ses tâches

Nous sommes plusieurs dans le foyer et souvent nous oublions des tâches à faire ; voire nous faisons, l’un après l’autre, à quelques heures de différence, la même tâche. En pareille situation nous pourrions mettre une feuille comme dans les aires d’autoroute pour noter qui a fait une tâche en dernier. Cela ne nous convient pas. Quand notre contact nous a parlé de Sweepy, on s’est dit “pourquoi pas ?”. Et on s’est lancé.

L’application est centrée sur les pièces de la maison : on crée chaque pièce, puis on ajoute petit à petit chaque tâche qu’on souhaite effectuer dans la pièce et les points (ou plutôt la pénibilité) de la tâche. On évoque aussi le laps de temps maximum entre chaque action d’une même tâche, autrement dit on définit un cycle au bout duquel on doit recommencer la tâche (parce que oui une maison ne reste pas propre indéfiniment !).

L’application se veut être un serious game avec un thème tout aussi ressemblant à un jeu vidéo : bleu avec un nuage blanc animé pour nous tenir compagnie. On voit les points de chacun, des trophées à déverrouiller, des trophées cachés et on voit nos statistiques de jeu - oups, je veux dire de travail. Cela va jusqu’à nous inciter à dépenser les points accumulés pour embellir les pièces qui sont matérialisées par des images du type de pièce (salle de bain, chambre, etc.). Comment améliorer une pièce de la maison ? On utilise les points en échange d’un meuble, d’une décoration, d’un tableau, etc. pour le déposer dans une pièce. Évidemment le nombre d’objets qu’on peut acheter est limité dans le temps et change chaque jour/semaine. De quoi obliger à revenir sur l’application chaque jour.

Bien que ce type de système ne m’intéresse pas, et encore moins la gamification d’une application, il semble que mes colocs soient plus réceptifs. Et cela fonctionne donc pour eux.

L’idée d’une application alternative, nos attentes

Après avoir utilisé cette application pendant 2 ans tout de même, j’ai constaté qu’on y utilisait peu de fonctionnalités. Elle est effectivement payante si nous sommes plus qu’une personne (c’est-à-dire plus qu’un téléphone mobile sur le même foyer). Ainsi on pourrait noter les éléments suivants comme l’« essence même » de notre activité sur Sweepy :

  • plusieurs utilisateurs sur la même interface,
  • création de pièces de la maison pour regrouper les tâches,
  • notion de difficulté de la tâche (représentée par des points dans Sweepy),
  • système de cycle des tâches, c’est-à-dire la fréquence à laquelle refaire la tâche régulièrement (par exemple “tous les 6 jours”),
  • possibilité d’affecter une tâche à quelqu’un - peu usité chez nous, mais utile,
  • visualisation rapide de la progression d’une tâche : au début elle a une barre de progression verte, puis au fil des jours elle devient orange puis rouge,
  • tri des tâches de la maison entière par « urgence » (les plus urgentes d’abord) ou par pièce.

Sweepy propose aussi une affectation aléatoire des tâches pour chaque personne. Une sorte de suggestion, mais nous n’avons jamais utilisé cette fonctionnalité.

Avec si peu de besoins, je me suis dit qu’on pourrait éventuellement trouver une application auto-hébergeable qui serait libre ou au moins open-source et utilisable à la maison.

Une solution alternative incomplète ?

Sur les critères listés dans le précédent chapitre j’ai trouvé quelques solutions auto-hébergées (c’est-à-dire que je pourrais installer moi-même sur un serveur à la maison) comme :

Il y en a sûrement d’autres. Commençons.

Grocy est un outil que j’ai déjà utilisé dans le passé. Je le trouve plutôt complet mais pas du tout intuitif pour le commun des mortels. Il possède une API (Application Programming Interface permettant de connecter d’autres applications après) que je pourrais utiliser pour générer une interface plus simple. Il a l’avantage de gérer plusieurs choses de la maison, en plus des tâches ménagères, comme :

  • la gestion des piles/batteries de la maison,
  • la gestion des manuels d’utilisation des appareils de la maison,
  • les stocks de nourriture,
  • des recettes de repas,
  • la liste des courses,
  • et plus encore.

Plutôt overkill pour l’usage visé.

Tableau de bord des corvées sous Grocy avec le menu latéral gauche qui liste les fonctionnalités du logiciel Grocy

Tableau de bord des corvées sous Grocy

Concernant Vikunja, il propose une boîte de réception dans laquelle on peut créer des tâches à la volée avant de les redistribuer/trier. Il propose une gestion par projet, par étiquette, et son affichage est très moderne : vous pouvez afficher les tâches en vue kanban, liste, Gantt ou tableau. C’est merveilleux ! Il dispose également d’une API et d’un système de webhooks, ce qui est très pratique pour le lier à un outil comme n8n pour automatiser certaines actions.

L’outil se rapproche de mes attentes. Je pourrais par exemple utiliser les projets pour définir une pièce et les tâches à l’intérieur. Cependant, bien qu’il propose une gestion de répétition cyclique avec une répétition à la date d’achèvement, on sent qu’il cible une autre forme de gestion, plus personnelle et privée. En dehors du cadre de notre gestion des tâches ménagères.

Je garde donc Vikunja pour un usage autre car il me plaît beaucoup. Mais pas pour notre solution alternative.

Page d’accueil de Vikunja avec un menu sur la barre latérale gauche et au centre les projets, puis sous les projets une liste de tâches récentes

Page d’accueil de Vikunja

Passons à Donetick qui est minimaliste et léger. Visuellement il se rapproche de Sweepy. À la création d’une tâche, les options permettent de renseigner la répétition cyclique basée sur la date d’achèvement de la tâche. C’est ce qui permet de relancer la répétition seulement au jour où on a fini une tâche. Par exemple si on doit faire une tâche tous les 7 jours, si la première fois on l’effectue un samedi, la prochaine échéance est samedi d’après. Mais si on finit par faire la tâche le dimanche, alors la prochaine échéance sera un dimanche. C’est un petit projet très récent qui reste discret (et écrit en langage Go). Il permet, de base, de trier les tâches suivant l’urgence à les faire. Et son système d’étiquettes permettrait de regrouper les tâches par « pièces » (puisqu’une pièce serait représentée par une étiquette).

En revanche, pas de visualisation par barre de progression en fonction de l’urgence. Et bien qu’un système de création de filtres personnalisés existe, pour une raison qui m’est inconnue pour l’instant, ils ne restent effectifs/existants que sur le navigateur qui les a créé. Plutôt embêtant.

Page d’accueil de Donetick avec une liste de tâches triées par urgence

Page d’accueil de Donetick

3 outils, 3 façons différentes d’aborder le sujet. Mais aucun ne remplit toutes les cases. Ils ont tous une API pour accéder aux données, c’est ce qui m’a donné l’idée de créer un frontend à l’un d’eux. Lequel choisir ? On a écarté Grocy et Vikunja, pourquoi ne pas tenter l’aventure avec Donetick et voir ce que cela donne ? Il est léger, avec une simple base de données SQLite3 sous forme de fichier. Pour une cinquantaine de tâches ménagères ça sera super 😋.

Un Dashboard maison, pour la maison !

Page d’accueil de donetick-dashboard avec une carte par tâche et des barres de progression pour chacune des tâches

Page d’accueil de donetick-dashboard

C’est ainsi que j’ai créé de toutes pièces un Dashboard à Donetick pour les spécificités de notre foyer : donetick-dashboard alias « Maison Propre ».

Dans la forme, ça ressemble à un Dashboard classique : des cartes affichées représentant les tâches. Un menu avec des boutons pour choisir la pièce de la maison et filtrer sur les tâches correspondantes. Et de quoi se connecter en haut à droite de l’écran.

C’est simple, fonctionnel. Au début nous sommes amenés à nous connecter via une fenêtre modale, puis les tâches sont récupérées via l’API de Donetick et affichées. Pour un foyer, le nombre de tâches est généralement si infime que Donetick suffit amplement avec son fichier *.db (SQLite3) comme base de données.

donetick-dashboard propose les fonctionnalités suivantes :

  • tâches principales affichées par ordre d’urgence,
  • barre de progression de la tâche en couleur (rouge, orange, vert),
  • filtrage par pièce (il faut créer des tags sur Donetick avec le nom des pièces et y affecter vos tâches),
  • possibilité de marquer une tâche comme « faite » - avec fenêtre modale de validation (pour éviter les erreurs),
  • multi-utilisateur : on passe d’un compte à l’autre.

La technologie utilisée est NuxtJS que j’avais déjà touchée l’année dernière pour faire un Dashboard similaire.

Le projet est disponible en Docker sur le Hub Docker et utilisable avec docker-compose dans le dépôt du projet donetick-dashboard, n’hésitez pas à aller jeter un œil et tester par vous-même 😉.

Retour d’expérience

Après plus de 5 semaines d’utilisation ce Dashboard rend pleinement service au quotidien. Les utilisateurs sont contents. Ils apprécient :

  • l’apparence simple,
  • le système de carte - bien qu’ils aimeraient réduire la taille des cartes affichées,
  • la facilité d’utilisation,
  • le système de filtre par pièce,
  • le changement possible d’utilisateurs.

Ils ont aussi émis quelques souhaits - et je trouve important de le signaler :

  • ils aimeraient réduire la taille des cartes affichées qui leur paraissent trop grandes,
  • ils attendent avec impatience un système pour afficher les points de chacun et les points que rapporte chaque tâche,
  • ils ont voulu trier la liste des pièces toujours de la même manière - ce qui a été intégré,
  • ils voulaient disposer d’une liste « fixe » de tâches par pièce pour éviter que valider une tâche ne la réordonne tout en bas - ce qui a été intégré,
  • ils voudraient changer de système de validation d’une tâche et passer d’une fenêtre modale à un changement du bouton lui-même,
  • le pourcentage de l’ensemble de la maison les dérange. Ils préfèreraient un pourcentage par pièce.

Je suis plutôt content de l’engouement de certains, contrairement à ce qu’ils exprimaient initialement. Avoir des retours est plaisant - même si parfois ça me crispe. Et content de modifier ensuite l’application.

Conclusion

De Sweepy à donetick-dashboard, le chemin n’était pas évident. Mais le résultat est là : une solution libre, auto-hébergée, et adoptée par le foyer.

Je suis assez content du résultat aux vues de mes connaissances en matière de Dashboard et frontend en tous genres. Également surpris de l’engouement des utilisateurs que j’ai. Et pressé de pouvoir trouver le temps d’intégrer leurs demandes à l’outil.

Je sais bien qu’il ne faut jamais réinventer la roue, mais cette expérience unique m’amène à penser que certaines situations s’y prêtent. Sachons tout de même doser pour éviter de développer à l’infini toutes nos applications 😉.

Et vous, quel outil libre/open-source auto-hébergé de gestion de tâches utilisez-vous au quotidien ?

Liens utiles

Voici les liens de l’article par ordre d’apparition :