The demo has been up a while, link it.

master
Brady McDonough 9 months ago
parent ccb9c63791
commit be412c98ae

@ -3,6 +3,8 @@ Yet Another Covid Statistics Web App
During the Covid-19 pandemic it seems like everyone and their dog made a web app to display statistics, and I was part of everyone. I was working in a grocery store at the time and that means I saw a lot of people. Originally I reasoned about my risk using a spreadsheet, manually pulling in fresh statistics for my area every week or so; being a programmer I knew I could do better and I made this. The backend is written in Guile Scheme while the frontend is written in Elm, both languages were chosen due to my interest at the time.
There is a live demo running [here][demo] though it's data is horribly out of date, the repository which the data comes from is no longer updated and the code which polls for updates is intentionally disabled.
If you want to run this all yourself the project depends on:
* [Guile][gui]
* [Artanis][art]
@ -31,6 +33,7 @@ After all that parsing and data wrangling all that's left is to serve the data u
Elm is a very interesting language, it's a Haskell that compiles to Javascript. It was created as a thesis project back in 2012 as a proof of concept for something the author called functional reactive programming. The "reactive" part of that recipe is everywhere in modern web programming and common terminology like "reactive props" were coined by Elm. In it's current form Elm's reactive roots are handled under the hood, its html module is clever enough to spot dependant variables and make minimal modifications to the DOM as an app's state updates. Elm is very aggressively an MVC language, the Model and Controller types are referenced everywhere and both pass through the View and Update functions. I decided to cut up the Controller type mid-way through the project according to why something was happening and it was quite easy. Thanks to the strict type system and detailed error messages any change I missed was caught by the compiler and portioning out the update function into active and passive concerns really cleaned things up.
[demo]:https://demo.bradymcd.ca
[art]:https://www.gnu.org/software/artanis
[gui]:https://www.gnu.org/software/guile
[elm]:https://elm-lang.org

Loading…
Cancel
Save