Food distro coordinator for Free Meals Appalachia
Update notes
Update notes
Make scrollbar auto show on webkit


browse  log 



You can also use your local clone with git send-email.

#Free Meals Appalachia

Haskell Servant web service to handle donations, volunteer shifts, and delivery signups for a mutual aid free food distribution based in Buckhannon, West Virginia. Admin app is built with PureScript.


  • You'll need the Nix package manager. Optionally, enable flakes. Definitely set up the haskell.nix binary cache or you will build GHC several times.

  • From the root of this directory run nix develop --profile ./.tmp/foodro if you have flakes enabled. If you aren't using flakes you can use the legacy shell.nix shim with nix-shell. These commands might take a long time to build everything. Running nix develop with --profile will stash the development environment in a nix profile so it won't get garbage collected. You can use the environment again with nix develop ./.tmp/foodro even after running something like nix-collect-garbage -d. This way you don't have to wait for everything to download and compile over and over if you garbage collect frequently. If you want to prevent the legacy nix-shell result from getting garbage collected, see this wiki.

  • You should have haskell-language-server inside the resulting shell for language support. Unfortunately haskell-language-server seems to take issue with the order that you open modules in. For example opening a test module before an executable module will sometimes make it complain that dependencies in the test module could not be found or loaded. The workaround is to open library or executable modules first in your editor followed by top level test modules and then modules imported by the top level test module.

  • See the Makefile for available commands inside the nix shell. Run the development web server for the first time with make new-dev-server and then make dev-server the next time if you don't want to lose your existing database. Open http://localhost:8081 to see the running web app and http://localhost:8025 to see the local mail it sends. You still have to refresh the page for changes to take effect but you will have automatic recompilation on save thanks to ghcid.