Ok, ok, j'ai l'impression de ne parler que de ça mais ...
Mon outil de gestion de projet grandit encore et devient toujours plus grand !
Et chanceux que vous êtes, je vous raconte ABSOLUMENT tout
Tout a commencé par la flemme
Dans mon outil, je peux créer des tâches.
Une tâche a une date d'échéance
C'est cool.
Mais j'ai pas mal de tâches qui reviennent encore et toujours, pour des durées indéterminées.
Et jusque là, pas très grave, on peut faire très simplement un copier-coller du nom et créer des taches.
Mais ...
Flemme
Et aussi, j'oublie.
J'oublie très TRES rapidement.
Surtout quand la tâche c'est "lier les factures aux dépenses" ou "payer l'URSSAF".
Alors j'ai longtemps réfléchi à faire des tâches récurrentes.
Mais ...
ça me paraissait hors de ma portée de mini-baby-dev.
Alors j'ai cherché comment les gens faisaient.
Le benchmark
Quand je pense "recurrence", je pense à deux outils que j'utilise beaucoup :
- Google calendar
Classique mais tellement pratique. Créer ses petites réu hebdos avec les clients, c'est si simple avec Calendar.
Calendar, c'est vraiment top et très complet.
On a vraiment le choix de faire ce qu'on veut et on peut vraiment personnaliser la récurrence.
J'ai une select qui me permet d'avoir une récurrence très classique (quotidien, hebdomadaire, etc)
si je veux quelque chose de très spécifique, je peux personnaliser la récurrence (par exemple en bi-hebdo).
- Clickup
Dans clickup, on est vraiment sur de la tâche. Et la fonctionnalité est très bien faite.
(cherchez pas, j'adore clickup, c'est vraiment mon outil de gestion de projet chouchou)
quand je crée une tâche, je peux lui assigner une deadline
Surtout, sur clickup, j'ai le choix de ne pas créer 1000 tâches et juste "déplacer ma tache" une fois qu'elle est passée en terminé ou à chaque fois que la date arrive.
On a aussi la même personnalisation que sur Calendar, ce qui permet de faire vraiment ce qu'on veut.
Tout ça c'est cool, mais est-ce vraiment ce dont j'ai besoin ?
Recentrer sur le besoin et l'attente
Ce que j'ai compris de mon benchmark, c'est que cette récurrence n'est pas juste une feature au pif qu'on fait en 2-3 lignes de codes. C'est une partie importante (ou qui peut le devenir).
Et, si c'est cool sur le papier, c'est moins cool quand on doit le développer. Parce qu'on sait que ça va être long et compliqué (et que ça me fait peur quand c'est long et compliqué).
Du coup, pour pas partir dans tous les sens (et pour me rassurer aussi), je me suis posée sur ce que je voulais vraiment faire.
Le postulat de départ que j'ai mis sur Github :
- Je peux créer une tâche récurrente et dire combien de fois / combien de temps je la veux
- Je peux arrêter une tâche récurrente
Ensuite, j'ai commencé à faire les specs pour voir où j'allais vraiment :
- Je crée une tâche et je dis si elle est (ou non) récurrente.
Si elle est récurrente :- j'ai une date de début et une date de fin
- je donne la fréquence (quotidienne, hebdo, des jours spécifiques, mensuel)
- Dans ma sauvegarde, pour chaque date, je vais créer une tâche dans task et dans core avec le statut nouveau
Ensuite, j'ai paniqué sur cette partie "des jours spécifiques" et j'ai fait un milliard de recherches sur internet.
figurez-vous que c'est pas si simple d'expliquer le besoin pour voir quel post stack overflow va pouvoir m'aider.
J'ai trouvé quelque chose mais je suis pas convaincue.
Alors j'ai supprimé cette personnalisation dans ma V1 de la feature (eh ouais, je fais qu'est-ce-que-je-veux)
Et je reprends mes specs :
- on pourrait faire un truc du type :
- date de début
- fréquence (case à coher ou select)
- quotidien
- hebdo
- mensuel
- annuel
- date de fin
- et derrière :
- Je prends la date de début :
- En fonction de la fréquence, j'effectue un calcul :
- Q => date de début + 1 jusqu'à date de fin (avec un for($i = date de debut, $i < date de fin, $i++) => il faut peut-être deux boucles : une pour le jour, une pour le mois. A voir comment se comportent les dates
- H => date de début + 7 jusqu'à date de fin
- M => mois de la date de début + 1 jusqu'à date de fin
- A => année de la date de début + 1 jusqu'à date de fin
- Je mets ces dates + les taches et tout dans la boucle et j'envoie en base
- En fonction de la fréquence, j'effectue un calcul :
- Je prends la date de début :
C'est déjà moins complexe mais aussi moins personnalisé mais ça fait une bonne V1.
Et là, c'est parti. Je crée la tâche, la branche et je me dis "Go go go".
Mais .... en fait, comment je montre ça ?
Et oui, une feature, même simple, ça se design dumbass.
Dumbass, c'est moi, hein, pas vous.
Vous vous auriez direct pensé à designer.
Moi j'oublie.
C'est l'excitation du dev
Mais bon, hein, c'est pas comme si j'étais designer à la base
Bref ... let's Figma tout ça
J'ai fait une V1 que j'aimais bien.
Simple, clair, easy et baby-dev-friendly. Et oui, la partie developpement est aussi importante parce je suis pas ouf ouf encore.
Et là, c'est vraiment dev-easy :
- Pas de javascript (c'est pas moi qui l'aime pas, c'est lui qui m'aime pas) avec des champs masqués ou une extension de la tâche classique.
- 1 champ pour chaque chose et chaque chose dans son champ.
En gros, c'est vraiment une extension d'une tâche classique mais complètement séparée.
Puis je me suis dis : "C'est cool, mais sur mobile, c'est pas possible ça. ça passera jamais".
Alors j'ai fait une V2
Oui, c'est pas centré mais OSEF.
Dans ma V2, on retrouve la même taille que la création de tâche classique et donc, je SAIS que ça passe en mobile.
Et pourtant, je la trouve un peu naze.
Parce que soit je fais un "trou" après les points et ça rallonge de ouf ma pop-in, soit je laisse sans trou mais je trouve ça très confus. Passer du choix des points à la récurrence sans même une petite séparation, c'est un peu dur (je trouve).
Mais mon problème restait entier ... comment je le mets sur mobile moi !
Et là, je me suis dit "attends. Dans quel contexte tu as besoin de créer une tâche récurrente depuis ton mobile ?"
Et qui qui repart sur les specs ?
Le trop est l'ennemi du bien, TMTC
Me revoilà donc sur GitHub pour reprendre LES BASES
Le but de mon outil, c'est de m'entrainer à développer mais aussi de créer un outil qui réponde à mes besoins "sans en faire trop". C'est ce que je reproche à tous les outils du marché qui sont trop complets pour moi.
(Si tu n'as pas suivi toute l'histoire, j'en ai parlé dans ces articles :
- https://hayan.fr/parlons-de-tout/premiere-organisation-la-methode-agile
- https://hayan.fr/parlons-de-tout/ameliorer-mon-organisation-centraliser
- https://hayan.fr/parlons-de-tout/ameliorer-mon-organisation-la-naissance-de-proppy
- https://hayan.fr/parlons-de-tout/proppy-le-grand-lancement
- https://hayan.fr/parlons-de-tout/creer-un-outil-de-a-a-z-nest-pas-si-simple
- https://hayan.fr/parlons-de-tout/il-est-si-beau-mon-nouvel-outil-de-gestion-de-projet
fin de la )
Donc, mes specs.
Pour savoir ce qu'il faut vraiment faire (ou ne pas faire), il suffit de poser une question simple :
Quand ai-je besoin de faire une tâche récurrente ?
- Quand j'ai un nouveau projet (gestion de projets)
- Quand j'ai une nouvelle tâche / quand on arrive sur une nouvelle étape (recette d'un truc de façon éphémère, volonté d'une nouvelle habitude, etc)
Tout ça, ça se fait principalement sur desktop, et pas forcément sur mobile.
On peut imaginer le faire dans une pop-in avec un bouton sur la section droite du desktop et pas sur mobile.
Si besoin, on peut l'ajouter dans le menu du mobile.
Et voilà. Mon problème est réglé.
Et maintenant, let's dev baby !
Et le temps n'était pas si long.
Déjà parce que j'ai pu réutiliser des morceaux de code (nouvelle tache, pop-in) mais aussi parce que j'ai vraiment simplifié la feature pour qu'elle soit juste ce dont j'avais besoin.
Et vous voulez voir le résultat ?
Et depuis la mise en prod (hier soir), je suis comme ça :
Et ça ne va clairement pas aller en s'améliorant !
Et maintenant, je fais quoi ?
Alors, je suis en phase d'apprentissage de Laravel pour arrêter de faire du n'importe quoi avec des petits bouts de code. Donc oui, il y aura une V3 de Moon sur Laravel pour avoir enfin quelque chose de safe.
Je voudrais pas que le monde entier sache que je fais des points hebdos tous les jeudis
Mais avant de refaire Moon, j'ai au moins 10-15 idées de petits outils à faire avec Laravel. Et là, ce seront des outils que je partagerai ... donc stay tuned !
Et vous, vous faites quoi ?
Si vous voulez suivre mes aventures passionnantes et épiques dans mon combat avec le PHP, n'hésitez pas à me suivre sur Linkedin ou à vous inscrire à ma newsletter (que je n'envoie pas encore parce que personne ne s'inscrit)
Si vous êtes à la recherche d'un mouton à 12 pattes prêt à relever tous les défis de votre entreprise en design (je précise, je ne vends pas de dev, je suis pas encore assez capée), bigophonez-moi (wow la boomer) ou envoyez-moi un message. On s'appelle, on se fait un produit numérique !
Enfin, si vous voulez me témoigner votre soutien ou dire que ce que je fais, c'est nul (tout est possible sur internet), lâchez un comm' !
Allez, des bisous
Caro.