Your Next Meal: a Guile Web App
I started developing a web application in Guile. The goal of this application is to help me choose the content of my meals according to my tastes, my lifestyle and my nutritional balance! If I consume better, my health and the planet can only benefit.
In this article, I share with you my current workflow!
Best wishes to all of you!
I open my terminal. Using an alias, the command
cdynm places me in the directory of my application.
Since I created the package definition for my application (in a file I named
guix.scm), I can generate a shell prepared for its own development with the command :
$ guix environment -l guix.scm
Now I can start the app with the command :
[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!
Then it's time for the hack!
Not having yet found a way to do REPL Driven Development, I got into the habit of restarting the server manually at each modification. The restart is fast for the moment but it could become annoying.
When I am satisfied with my changes, I push them to the git repository.
I am the admin of a Digital Ocean droplet powering a Guix System. I connect to it with ssh thanks to a small alias
sshynm. Then I connect to the active Screen session in which my application runs:
From there, I stop the application, pull the last changes in the source code of the application and restart it:
# killall .art-real && git pull && guix environment -l guix.scm -- art work &
Finally, I detach myself from the Screen session with
C-a C-d and the droplet with
My wish list
Until the next release of Guile-Hall, it is not possible to manage an application created with Artanis because some file types are not supported by Guile-Hall.
Guix full support
Today, Artanis is based on Guile-2.2 as well as on libraries whose versions are in conflict with the Guix distribution (guile-json for example). For my use, the workaround via a development environment is enough but it might not last!
Thank you very much for reading this article!
Don't hesitate to give me your opinion, suggest an idea for improvement, or ask a question! To do so, leave a comment below or contact me.
- Don't miss out on the next ones... *
- articles via Mastodon @firstname.lastname@example.org and RSS
- screencasts via Peertube email@example.com and RSS
And more importantly, share this blog and tell your friends it's the best blog in the history of Free Software! No kidding!