~wunderbrick/foodro

Food distro coordinator for Free Meals Appalachia

c10936f Write basic user authentication test

20 days ago

2a10b1a Type check specUserAuth

20 days ago

#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. Accessibility is a primary concern. As many features as possible should be implemented without relying on JavaScript.

#Development

  • 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 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.

  • 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.

  • Setup a development database with make dev-db. Ctrl+c when it's done.

  • Start the development mail server with make mail. Open http://127.0.0.1:1080 in your browser to see local mail sent by the app.

  • Run the development web server with make dev-server.

  • Go to http://localhost:8081 in your browser. You still have to refresh the page to see changes but you will have automatic recompilation on save thanks to ghcid.

  • See Makefile for more options.