Crafting happiness with Free Software & Hardware

Your Next Meal : une Guile Web App

Logo YNM!

Je me suis lancé dans le développement d'une application web en Guile. Le but de cette application est de m'aider à choisir le contenu de mes repas en fonction de mes goûts, de mon style de vie et mon équilibre nutritionnel ! Si je consomme mieux, ma santé et la planète ne pourront qu'en bénéficier.

Dans cet article, je partage avec vous mon workflow du moment !

Meilleurs voeux à tous·tes !

Développement

J'ouvre mon terminal. À l'aide d'un alias, la commande cdynm me place dans le répertoire de mon application.

Puisque j'ai créé la définition du paquet de mon application (dans un fichier que j'ai nommé guix.scm), je peux générer un shell préparé pour son propre développement avec la commande :

$ guix environment -l guix.scm

À présent, je peux démarrer le serveur via la commande :

[dev]$ art work
Loading conf/artanis.conf...done.
Session with SIMPLE backend init done!
Loading models...
Loading controllers...
Loading restful API...
Regenerating route cache ...
Server core: ragnarok
http://127.0.0.1:3000
Anytime you want to quit just try Ctrl+C, thanks!

Puis place au hack !

N'ayant pas encore trouvé de moyen de faire du REPL Driven Development, j'ai pris l'habitude de redémarrer manuellement le serveur à chaque modification. Le redémarrage est rapide pour l'instant mais cela peut devenir gênant le cas échéant.

Lorsque je suis satisfait de mes modifications, je pousse les changements vers le dépôt git.

Déploiement

J'administre un droplet Digital Ocean sous Guix System. Je m'y connecte en ssh grâce à un petit alias sshynm. Puis je me rattache à la session Screen active dans laquelle s'exécute mon application :

$ screen -r

De là, je stop l'application, je pull les derniers changements dans le code source de l'application et je la redémarre :

# killall .art-real && git pull && guix environment -l guix.scm -- art work &

Enfin, je me détache de la session Screen avec C-a d ou C-a C-d et du droplet avec C-d.

Fin !

Ma liste de souhait

Guile-Hall support

En attendant la prochaine release de Guile-Hall, il n'est pas possible de gérer une application créé avec Artanis car certains types de fichiers ne sont pas supportés par Guile-Hall.

Guix full support

Aujourd'hui, Artanis repose sur Guile-2.2 ainsi que sur des bibliothèques dont les versions sont en conflit avec la distribution de Guix (guile-json par exemple). Pour mon usage, le contournement via un environnement de développement me suffit mais ça pourrait ne pas durer !

Lien vers le dépôt du projet : https://framagit.org/Jeko/ynm
Lien vers le site du projet : https://yournextmeal.tech

Merci beaucoup d'avoir lu cet article !

N'hésites pas à me donner ton avis, proposer une idée d'amélioration, ou poser une question ! Pour ce faire, laisses un commentaire plus bas ou contactes-moi

Abonnes-toi pour ne pas manquer les prochains :
articles via Mastodon @jeko@write.as et RSS
screencasts via Peertube jeko@video.tedomum.net et RSS

Et encore plus important, partages ce blog et dis à tes amis que c'est le meilleur blog de l'histoire du logiciel libre ! Sans dec'

#guix #gnu #linux #guile #français