Bonjour à tous,
Depuis un certain temps maintenant, je développe dans le plus grand secret un gestionnaire de recettes de cuisine et générateur de listes de courses. Au départ, il s’agissait simplement d’un outil que je voulais pour mon usage personnel ; mais en discutant avec des gens de mon entourage, il s’avère que cela intéresse du monde. Je vous présente donc ici le résultat du développement, avec en prime en avant-première un accès à l’outil.
C’est par ici : https://courses.cpages.org/index.php/utilisateurs/connecter
Vous remarquez que le design ressemble étrangement à celui de ZdS. Et pour cause : j’aime beaucoup ce design et je n’ai moi-même aucun talent de graphiste. Donc je me suis honteusement inspiré de l’existant.
Pourquoi, comment ?
Un constat simple : les courses, c’est pénible
L’idée est assez élémentaire : faire les courses, c’est quand même pénible. Et faire une liste de courses, ça peut parfois être fastidieux, surtout lorsque les idées viennent à manquer. L’idée est donc de pouvoir enregistrer nos recettes préférées, en précisant bien la liste des ingrédients et leurs quantités.
Puis, au moment de faire ses achats, il ne reste plus qu’à sélectionner les recettes que l’on veut ; cela aboutit à la génération d’un fichier pdf qui liste les courses à faire. Le petit bonus : les achats sont triés par rayon. Il ne reste plus qu’à récupérer le pdf pour aller au magasin avec.
Technologies utilisées et développement
Venons-en aux technologies utilisées. N’étant pas spécialement passionné par la programmation, j’ai utilisé le framework PHP CodeIgniter. Les raisons ne sont pas très nobles : PHP, c’est facile à héberger, je connaissais déjà et CodeIgniter a vraiment un excellent ratio temps d’apprentissage/efficacité.
J’ai développé tout ça pendant mon temps libre, au début pour un usage totalement personnel. J’ai donc adopté certaines pratiques qui ne sont pas, je l’admets, très déontologiques pour un programmeur puriste. La première est que le code est peu, voire pas documenté. Deuxièmement : concernant le remplissage et la validation des formulaires, je me suis très fortement appuyé sur HTML5 et je ne souhaite pas investir du temps pour tout recoder et vérifier la validité des données. En revanche, j’ai été aussi rigoureux que possible côté base de données pour que le modèle relationnel soit propre. Autre point un peu moins crucial, mais qui ne me semble pas poser de gros problème de nos jours : certains formulaires dynamiques s’appuient sur du JS et, à nouveau, je ne souhaite pas passer de temps à proposer une solution qui s’en passe.
Licence et partage du code source
L’ensemble du projet est (évidemment !) sous licence GPLv3 et le code est téléchargeable sur github.
Fonctionnalités
Pour utiliser l’appli, il faut se créer un compte (c’est rudimentaire : identifiant, mot de passe, adresse mail). Une fois inscrit et connecté, on a accès à quatre menus : rayons, produits, recettes, courses.
- L’outil « Rayons » permet de créer les rayons de votre magasin, pour y associer les produits.
- Dans la rubrique « Produits », on crée l’ensemble des produits que l’on est susceptible d’utiliser dans une recette ou d’acheter. Il faut évidemment les associer à un rayon préalablement créé.
- Suite à quoi, on va se diriger vers le menu « Recette » qui, comme son nom l’indique, permet de créer des recettes. Vous saisissez la liste de vos ingrédients, qui ne sont autres que les produits enregistrés. On peut préciser la quantité de chaque ingrédient (utile pour la liste des courses).
- Enfin, dernière étape : générer la liste des courses. Cela se fait en deux phases.
- Vous sélectionnez toutes les recettes que vous souhaitez ajouter à votre liste de courses.
- Les ingrédients sont extraits de vos recettes, éventuellement combinés (ex : si vous avez des potimarrons dans deux recettes, les quantités vont s’additionner pour ne former qu’une seule ligne). Au besoin, vous modifiez les quantités et vous retirez les produits que vous avez déjà en stock. On peut aussi faire l’inverse et ajouter des produits individuellement (par exemple, de la nourriture pour votre chat ).
- Arès validation, vous pouvez récupérer le PDF avec votre liste de courses.
Fonctionnalités manquantes… et qui le resteront probablement
Il n’est pas possible, à l’heure actuelle, de modifier une liste de courses déjà validée. Si votre liste est ratée, il faut la refaire.
Il faut se créer un compte utilisateur pour que chaque personne inscrite dispose de ses propres recettes, listes de courses, etc. Le partage de recettes n’est pas prévu puisqu’il s’agit au départ d’un projet pour usage personnel.
Autre blague : il n’est pas possible de réinitialiser son mot de passe en cas de perte ou d’oubli. À l’inscription, on demande une adresse mail… Mais en fait, elle ne sert à rien (pour le moment). Si j’observe que l’appli a vraiment du succès, ne travaillerai à un moyen pour récupérer les mots de passe perdus. C’est sans doute le point faible principal, à ce jour, de l’application.
Je veux essayer !
J’ai créé un compte de démonstration, avec le login demo
et le mot de passe demo
. Pour le moment, il n’y a aucune donnée enregistrée puisque le lancement est très récent. N’hésitez pas à jouer avec le compte de démo et à vous en créer un si vous le souhaitez. Mais attention, ne prenez pas les choses trop au sérieux (en tout cas pour l’instant). En effet, le code n’a jamais été testé « grandeur nature » donc je n’ai pas pu évaluer la robustesse du code en production publique.
Et la suite ?
Je suis évidemment ouvert à toutes les remarques et je suis évidemment à même d’accepter des pull requests. Mais j’avoue que, maintenant que j’ai un outil qui fonctionne correctement, je le partage avec plaisir et j’assure le suivi des bugs majeurs, avec une motivation modérée à développer des nouvelles fonctions.
Voilà, n’hésitez pas à tester, à vous créer un compte et à me faire des retours. Merci de m’avoir lu. o/