Sommaire
J'ai développé un logiciel libre pour publier en ligne le catalogue d'une librairie. Les clients peuvent voir ce qu'il y a en rayon (ou ce qui a été), et passer commande. Il est assez générique pour définir et afficher d'autres produits.
- https://abstock.gitlab.io/
- sources Gitlab: https://gitlab.com/vindarel/abstock
- miroir Github: https://github.com/vindarel/ABStock
- la démo
- conversation reddit: https://www.reddit.com/r/france/comments/gf5d23/jai_d%C3%A9velopp%C3%A9_un_logiciel_pour_publier_le/
Il est tout beau tout propre (merci Bulma CSS), voici à quoi ressemble un résultat de recherche:
Fonctionnalités
Il est fait pour marcher main dans la main avec le logiciel libre de gestion de librairie que je développe aussi, Abelujo. Le libraire fait ses opérations d'ajout et de vente de livre dans Abelujo, et le catalogue relie sa base de données régulièrement (et il la stocke en mémoire, donc tout le reste est rapide). Mais ABStock peut aussi lire des livres ou d'autres produits depuis un fichier txt, et le pourrait tout aussi bien depuis un CSV ou un JSON, ou depuis une autre base de données.
Le site est composé de:
- la page d'accueil, qui comporte
- un formulaire de recherche. On peut chercher par titre, auteur, éditeur, rayon et ISBN(s).
- un échantillon aléatoire de la sélection du libraire
- la page de sélection du libraire, pour mettre des livres en avant
- la page de résultats de la recherche. L'internaute peut ajouter des livres à son panier.
- et sur sa page panier, il remplit un formulaire pour passer commande. La commande est envoyée par courriel au libraire (le paiement en ligne n'a pas encore été jugé nécessaire, donc pas fait !)
Le site est fait pour être générique. On renseigne les informations et le texte propre à sa structure dans un fichier de config.
ABStock est simple à héberger soi-même (il suffit de lancer un exécutable), mais sachez que je propose l'hébergement payant sur mes serveurs. J'offre un support professionnel. N'hésitez pas à en parler autour de vous ! (Encore un peu beaucoup et j'arriverais à vivre (chichement) de mes logiciels libres !)
Contexte
Je travaillais pour un client libraire, quand bam on a été confinés et tout le monde s'est arrêté. Amazon tournait à plein et les sites de regroupement de libraires (type lalibrairie.com ou placedeslibraires.fr) étaient arrêtés et/ou ne pouvaient accepter de nouvelles inscriptions. Au bout de deux semaines, le calme n'était plus drôle, on a voulu réagir et on a développé ce site (je suis le seul dév, mais le libraire est mon "product owner"). Il a été déployé rapidement, le but étant que les clients gardent un lien avec sa librairie, et que lui n'aie pas un chiffre d'affaire à zéro. Du coup les clients ont commencé à lui passer commande et il organisait des horaires de retrait, en respectant les mesures de santé publique. Cela se passe dans une librairie de village dans un territoire rural, où les clients sont contents d'avoir (enfin) une (bonne) librairie près de chez eux.
Voici un communiqué du Syndicat de la Librairie Française sur l'état actuel de la librairie, un secteur très fragile, et leurs propositions de relance: http://www.syndicat-librairie.fr/plan_de_relance_les_propositions_du_slf_pour_les_librairies_independantes
La techno
Qui a deviné en quoi j'ai développé cette application ? En Common Lisp, bien sûr ! J'en ai parlé ici et là:
- https://linuxfr.org/users/dzecniv/journaux/le-systeme-objet-de-common-lisp-tutoriel-clos
- https://linuxfr.org/users/dzecniv/journaux/decouvrons-common-lisp-comparaison-avec-l-environnement-python qui est un vieil article, amélioré ici: https://lisp-journey.gitlab.io/pythonvslisp/
Je ne voulais pas le faire en Python, notamment à cause des difficultés de déploiement et de livraison, et parce que je trouve que c'est une gageure que de maintenir une application Python sur des années. Je suis devenu assez à l'aise en Lisp maintenant, donc après avoir exploré l'écosystème et avoir testé des frameworks ésotériques dans un langage ésotérique (Weblocks: cool, mais encore du travail), je me suis arrêté sur une stack sans surprises: des routes, des templates à la Django, du JavaScript en JavaScript.
Mon expérience de développement est toujours très bonne, mon expérience de déploiement me ravie également. Je peux déployer un exécutable, ou bien lancer le projet comme un script. Je peux me connecter au REPL du site en train de tourner, soit depuis le serveur et tmux soit depuis mon éditeur préféré depuis chez moi, et soit faire une mise à jour simple à chaud (très pratique pour mettre à jour les coordonnées ou les horaires d'ouverture du client), soit faire une grosse mise à jour à chaud, sans redémarrage, y compris s'il faut installer de nouvelles dépendances, pratique aussi (mais sur laquelle je reste plus prudent). Voici un petit exemple sur Github.
Eh oui, Common Lisp est toujours utile aujourd'hui. Voici des nouvelles récentes:
- un nouveau livre, Programming Algorithms, disponible gratuitement: https://leanpub.com/progalgs
- Lisp Koans a reçu une grosse mise à jour: https://github.com/google/lisp-koans/
- l'implémentation SBCL a eu 20 ans. Un dernier développement concernait l'optimisation par blocks: https://mstmetent.blogspot.com/2020/01/sbcl20-in-vienna-last-month-i-attended.html (où on voit également que Google utilise toujours et travaille sur SBCL)
- Embeddable Common Lisp et Clozure CL ont également sorti une nouvelle version
- un soft très étonnant: tu chantes et il écrit une partition, fait en LispWorks: https://scorecloud.com/
Pour se lancer, je conseille grandement le Cookbook: https://lispcookbook.github.io/cl-cookbook/
Une liste de librairies est à voir sur: https://github.com/CodyReichert/awesome-cl À noter un clone de numpy nommé numcl, et qu'on peut s'interfacer si besoin avec un process Python avec py4cl.
Mots finaux (lots à gagner)
Puisque j'ai toujours votre attention: quelle est votre première impression du nom ABStock ? (vous savez, c'est un nom temporaire… qui ne trouve pas meilleur candidat). J'ai décidé que je ne peux pas tout faire moi-même, et qu'il faut améliorer plein de trucs, autant en Python, qu'en HTML ou en Lisp. J'ai un petit budget pour motiver des contributeurs ou contributrices éventuel·les. Si tu ne fais rien en juin ou juillet, n'hésite pas à me contacter pour qu'on en discute.
Merci de votre attention et d'un coup de pouce éventuel !
# Pas mal du tout
Posté par Bruno (Mastodon) . Évalué à 4.
Je ne suis pas dans le domaine mais "l'expérience utilisateur" m'a l'air très bien.
Bonne continuation et merci pour ce logiciel.
# des noms
Posté par fbn69 . Évalué à 3.
Amalibrairie
LivrEnStock
liverita
libroliveri
[^] # Re: des noms
Posté par dzecniv . Évalué à 2.
Merci. Y'a peut-être un truc à faire avec "ama".
ABCatalogue
ABC
LibroStock
LaVitrine
LML
PotDeMiel
Alvéole
3615
CIEL (Catalogue Interactif En Ligne)
…
[^] # Re: des noms
Posté par Ysabeau 🧶 (site web personnel, Mastodon) . Évalué à 2.
J'aime beaucoup ABStock comme nom car il ouvre sur d'autres secteurs que le livre.
Maintenant on peut aussi avoir un "C'est ouvert".
CIEL est un logiciel de compta et donc probablement une marque déposée et à éviter.
« Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.
[^] # Re: des noms
Posté par dzecniv . Évalué à 2.
Merci pour le retour et les infos.
[^] # Re: des noms
Posté par jnanar (site web personnel) . Évalué à 3.
Livravous ?
[^] # Re: des noms
Posté par legranblon (site web personnel) . Évalué à 2.
livretvous ?
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.