1. Introduction

En octobre 2019, l'Institut Français d'Opinion Publique a réalisé une étude sur les couples européens, montrant que 40 à 50 % des couples se disputent à propos de la répartition des tâches ménagères. Au delà de la vie de couple, j'ai pu en avoir l'expérience dans ma famille, où presque chaque soir éclate une dispute sur qui en fait trop et qui ne fait rien.

Le but de ce projet est de créer une application web interactive permettant d’enregistrer les tâches que chacun a faites et d’avoir un classement pondéré à la difficulté de chaque tâche, permettant de savoir qui en fait le plus. La connaissance de cette information nous permettrait ensuite d’en faire plus quand on voit qu’on est en retard par rapport aux autres.

La restriction principale du projet est qu’enregistrer les tâches que chacun à faites est elle-même une tâche, qui prend du temps et un objectif de sa conception sera de rendre son utilisation facile et rapide. L’utilisation de l’application web n’a aussi d’intérêt qu’après une durée suffisamment longue, car il est normal que sur une journée une personne en fasse plus qu’une autre. Un autre problème est la possibilité de tricher. En effet chacun peut se rajouter des tâches, sans forcément les avoir faites. On ajoutera ainsi un historique des tâches, permettant de contrôler dans une certaine mesure les abus et de supprimer des tâches ayant été faites. Le système n'était pas parfait, le bon fonctionnement de l'application se basera malgré tout sur l'honnêteté de chacun la confiance entre les différents membres du foyer.

La réalisation du projet permettra d’aborder différents enjeux, comme la création d’un système de comptes, avec un nom d’utilisateur et un mot de passe pour chaque foyer. On aura aussi un système permettant à chaque foyer d’assigner un nombre de points à chaque tâche et de créer autant de tâches différentes que nécessaire. Il faudra finalement un système faisant un classement à partir du nombre de points de chaque membre du foyer, avec la possibilité de le réinitialiser.

L'idée n'est pas complètement nouvelle. On peut déjà trouver quelques applications qui proposent des services similaires, comme Chorma ou S'moresUp. Le problème est que la plupart de ces applications sont payantes. De plus en codant ma propre application, je peux ajouter les fonctionnalités que je pense nécessaires qui peuvent manquer sur les différentes plateformes existantes.

2. Matériel et méthodes

2.1 Matériel

  • Ordinateur, capable d'héberger un site web
  • Accès à une base de donnée MySQL
  • IDE avec possibilité de coder en PHP, HTML et CSS

2.2 Méthode

L'application web sera écrite en HTML, PHP et CSS, avec MySQL pour gérer des données, comme les différents utilisateurs et les tâches ayant été faites.
On sera accueilli sur le site par une page de connexion, sur laquelle on sera automatiquement redirigé si on n'est pas connecté, et qu'on essaie d'accéder aux autres pages.

Figure 1 - Structure générale du site, mai 2021
Figure 1 - Structure générale du site


2.2.1 Système de comptes

La page d'accueil du site web sera un écran de connexion, avec un lien vers une page pour créer un compte. On aura un compte par foyer, et pas un compte par utilisateur. Avoir un compte par utilisateur permettrait de ne pas avoir à choisir à chaque fois quel utilisateur a réalisé quelle tâche, mais comme stipulé plus haut, l'objectif principal de ce projet est de rendre son utilisation rapide, pour ne pas qu'elle en devienne une tâche elle-même. Avec un compte par utilisateur, on ne pourrait pas enregistrer toutes les tâches de tous les membres d'un coup. On perdrait du temps en changeant de compte ou d'appareil. En effet, après avoir utilisé l'application dans ma famille quelques semaines, l'enregistrement des tâches se faisait en général d'un coup pour tous les membres à la fin de la journée. Avoir un compte par utilisateur empêcherait ceci et ralentirait l'utilisation du site.

2.2.2 Page principale

Une fois connecté, on accèderait à la page principale, sur laquelle on aurait un classement des scores de chaque membre, classés du plus haut au plus bas. On aura aussi un filtre permettant d'afficher les scores de la dernière semaine, du dernier mois ou de la dernière année. On aurait aussi la possibilité de réinitialiser les scores; d'ajouter un membre au foyer; de consulter l’historique des tâches; et d’ajouter des tâches. La réinitialisation des scores serait un simple bouton, et les trois autres nous enverraient vers de nouvelles pages.

2.2.3 Autres pages

On aura une page avec l'historique des actions : les réinitialisations, les nouveaux membres et les tâches réalisées par chaque utilisateur. On ajoutera aussi la possibilité de filtrer l'historique afin de ne voir que les tâches réalisées par un certain membre. L'option la plus importante de cette page sera de pouvoir supprimer les tâches ayant été faites, en cas d'erreur dans l'ajout de celles-ci. On pourra à travers cette option aussi supprimer des membres et annuler les réinitialisation.

Sur la page pour ajouter un membre, on aura deux champs, pour le nom du nouveau membre et pour le score initial. Le second permettrait, si quelqu'un rejoint le foyer après que les autres utilisateurs ont déjà utilisé l'application pendant un moment de se mettre à leur niveau avec un score de départ.

Enfin, pour la page permettant d'ajouter des tâches, on aura la liste des tâches configurées, avec leur nom, le nombre de points et un menu déroulant permettant de choisir un membre. On aura un bouton pour ajouter la tâche, une fois qu'on a sélectionné le membre l'ayant faite et un bouton permettant de supprimer la tâche (des tâches configurées). La dernière tâche de la liste sera une tâche "vide", où le nom de la tâche et son score sont des champs vides, à remplir pour configurer la nouvelle tâche.

3. Résultats

3.1 Système de compte

Pour cette partie du projet, le code est presque entièrement basé sur une vidéo (voir annexes), expliquant comment réaliser un système de comptes en PHP / MySQL. J'ai décidé de reproduire du code déjà fait pour cette partie, car c'était une mécanique nécessaire, mais pas centrale du projet. De plus, comme la création d'un système de compte est quelque chose d'assez fréquent, beaucoup de développeurs en décrivent le fonctionnement. J'ai ainsi pu gagner du temps sur cette partie, en en profitant pour apprendre à utiliser MySQL, et pu d'avantage me concentrer sur les enjeux plus spécifiques à mon projet.

3.2 Vidéo d'utilisation du site


Figure 5 - Résultat du site

4. Discussion

Le site n'est pas parfait. Un grand problème est la possibilité de tricher. On pourrait la limiter en ayant un compte par utilisateur et en demandant la confirmation de tous les autres membres du foyer à chaque ajout ou suppression de tâche. Mais comme stipulé à l'introduction, le but de ce site est sa rapidité d'usage, et l'ajout de cette fonctionnalité en ralentirait grandement l'utilisation.
Le site n'est aussi pas très bien prévu pour une utilisation sur téléphone portable, et rend parfois assez mal selon les dimensions et la qualité des différents écrans.
Pour l'utilisation de la base de donnée MySQL, le site utilise une table pour gérer les comptes et mots de passe, et crée trois tables pour chaque nouvel utilisateur. Cette façon de programmer n'est pas très optimale. On pourrait améliorer le système en ayant les trois tables globales à tous les utilisateurs, avec une colonne supplémentaire précisant à quel compte s'associe telle membre ou telle tâche.
Afin d'optimiser les tables, on pourrait aussi réduire les répétitions en associant les membres d'un foyer et la liste des tâches à des clés uniques, et référencer uniquement les clés dans la table de l'historique.
Ces quelques problèmes mis à part, le site fonctionne très bien. Son utilisation est fluide et (à mon goût) intuitive. J'ai pu utiliser le site une dizaine de jours avec ma famille et il fait très bien son travail. On arrive rapidement à avoir un classement intéressant sur la répartition des tâches. Un grand problème de son utilisation, venant plus du plan familial qu'informatique, est la pondération des tâches. Le nombre de points qu'on attribue à chaque tâche cause vite une grande différence de scores, pas forcément indicative des efforts de chacun. Une solution à ce problème est de définir, très finement un grand nombre de tâches, en ayant plusieurs difficultés avec plusieurs nombres de points pour plusieurs volumes de vaisselle, ou temps de préparation du repas.

5. Conclusion

Je considère l'objectif de ce projet largement atteint. J'ai appris beaucoup sur l'utilisation de HTML, PHP, CSS et MySQL pendant sa réalisation, et j'ai pris beaucoup de plaisir à m'attaquer à un projet (relativement) long, en séparant le travail en sous-parties, chacune atteignable, qui mises ensemble créent un site complet, utilisable au quotidien.
Au delà des tâches ménagères, ce site peut être utilisé dans toute situation ou on doit compter les points, engendrés par différentes actions entre plusieurs compétiteurs.

6. Annexes

  • Code complet ici

Références