Dot.Blog

C#, XAML, WinUI, WPF, Android, MAUI, IoT, IA, ChatGPT, Prompt Engineering

BigBazar en open source !

Kesako ? BigBazar est une app Maui de "storage management". Je viens d'ouvrir son code sur Github

BigBazar


J'ai créé BigBazar pour mon propre usage, à savoir retrouver outils, instruments de mesures, composants, etc, stockés dans une centaine de boites de rangement sur des rayonnages.

C'est devenu tellement un gros bazar que pour m'en sortir et m'éviter d'ouvrir toutes les boites quand je cherche quelque chose il m'est apparu comme évident de régler le problème avec une App MAUI.

Ainsi est née l'idée de "BigBazar" et son nom par la même occasion !

Fonctionnalités

Le principe de BigBazar repose sur une entité : la boîte. Mais c'est une métaphore de tout système de rangement, cela peut donc être un tiroir, un casier, bref n'importe quoi qui puisse contenir des "trucs".

Les boites sont numérotées. Chez moi j'ai imprimé des étiquettes avec Word et des étiquettes autocollantes, en partant de 1 jusqu'à une centaine. Chaque Boîte a son numéro.

Mais ce n'est pas tout. Les boites ont aussi :

  • Une description (j'utilise la fonction speech to text d'Android et je liste à voix haute le contenu de la boite, pratique et rapide). Elle doit être assez précise pour lister ce qu'il y a dans la boite.
  • Des photos
  • Des catégories (on crée autant de catégories qu'on veut et on en accroche autant que nécessaire à une boite)
  • Enfin, une zone de stockage. Cela permet de savoir que la boite numéro X a été mise dans le grenier ou la cave ce qui évite de perdre du temps à la retrouver par exemple.


Une fois les boites crées, on peut

  • Les modifier
  • Ajouter ou supprimer des photos
  • Les chercher par la présence d'un mot ou texte dans leur description
  • Les chercher par leur catégorie
  • Les chercher en balayant la totalité des images de toutes les "boites"


Il existe bien entendu un mode de maintenance pour créer une base de test et l'effacer, faire un backup de la base SQLite et un zip des photos, et bien sur les opérations inverses (reconstruction à partir du backup de la base de données et du zip des photos). C'est une sécurité, si vous utilisez l'App faites des sauvegardes régulières. Le fichier SQLite peut être ouvert sous Windows et le zip des photos aussi (les noms des photos portent le numéro de la boite). Donc même sans le soft, sur un PC avec un browser SQLite on peut retrouver tout ce qu'on a stocké dans l'App.


L'état du code

Les projets personnels qu'on programme par petits bouts dans ses heures creuses ne sont généralement pas des exemples parfaits de programmation (à moins que ce ne soit leur but mais ce ne l'était pas).
Pire, j'ai passé presque autant voire plus de temps à me battre contre certains bugs de MAUI qu'à programmer les features.
La pire, c'est que le Shell ne gère pas le mode Transient des services et surtout des VM qui sont enregistrées dans le conteneur IoC dans ce mode (Transient). 
Toute la logique de l'app avait été conçue en partant du principe que les VM transient seraient transient... Ce qu'elles ne sont pas.
De fait il y a beaucoup de code un peu "cracra" qui sert à contourner ce problème, pourtant ancien mais que Microsoft n'a pas réglé.
Je ferai certainement le clean dans le code un jour, mais soit il s'agira d'une nouvelle version n'utilisant pas le Shell, soit il faudra que je sois certain que les bugs du Shell ont été réglés.
Ainsi, prenez le code tel quel, c'est une appli complète, fonctionnelle, mais loin d'être parfaite. Le code n'est pas un exemple de ce qu'on doit produire, mais de ce qu'on peut produire quand on s'attaque à la réalité hors des démos simplificatrices.
J'ai péché par trop de confiance en Microsoft, le problème des Transient non Transient avec le Shell est un problème connu depuis des années, et sincèrement je le croyais réglé vu la gravité et l'impact sur la façon de codée une App. Il n'en est rien et je me suis fait avoir.
Mais les projets personnels servent aussi à cela, tester en situation réelle des éléments que le hasard des jobs qu'on a fait ne nous a pas permis de tester... Et ainsi de renforcer sa propre expérience et son expertise. Je suis donc plutôt satisfait d'avoir appris à me méfier de Shell dans certaines circonstances (si le code est conçu avec des VM Singleton ça passe très bien).

La publication GitHub

Sous licence GNU Affero, le code est ouvert. Vous pouvez le copier, le modifier, mais toute modification même à titre personnel ou commercial doit obligatoirement être partagée. Faite un fork, changez ce que vous voulez, mais votre repository doit être public, et l'auteur original, moi, doit être cité dans les copyrights. 
C'est assez léger comme licence tout en évitant des exploitations malhonnêtes.

L'adresse du repo est  : https://github.com/odahan/BigBazar

Conclusion

L'idée est sympa. Cette App me sert réellement. Maintenant son code n'est pas une merveille. Mais je le partage avec plaisir, et peut être même qu'un jour une équipe vaillante s'occupera de faire le ménage et de relever le niveau  !

Bon rangement et

Stay Tuned !

Faites des heureux, PARTAGEZ l'article !