Introducing HTTPure, a functional HTTP framework for PureScript


#1

Hi everyone!

I dropped a line in #purescript on Slack about my project, and it was recommended that I post a message here about it too. So here goes!

I’ve been working on HTTPure for some time now, and it’s starting to get pretty polished. I’d love to start getting feedback!

HTTPure is:

  • Written from the ground up with no FFI.
  • Inspired by other frameworks like Express, but really focused on targeting PS language features like pattern matching, and functional concepts (this means that HTTPure encourages composition instead of use type constructs). It is not built on Express, rather it is built only on top of purescript-node-http.
  • Very well tested (if it’s going to be a core server framework, it has to be, eh?)
  • Very well documented (I’ve put a lot of thought into the APIs that HTTPure exposes; much of that thought has come in terms of writing docs to tease out ways in which the APIs were unclear or insufficient)

HTTPure is currently at version 0.7.1, but I’m moving fast to get the 0.8 release ready as soon as possible. This release will be enabling chunking, and using it to expose a sendFile helper which will provide a simple mechanism for streaming static files. Beyond that, there are only a few more items that I’d like to accomplish before going to 1.0–things like supporting HTTP/2 and adding benchmarks.

Anyways, if anyone finds this kind of thing useful or interesting, I’d love to collect feedback, contributions, abuse… whatever you have for me. When I first started working with PureScript, there seemed to be a pretty big gap in the ecosystem around backend tooling, so hopefully HTTPure can be a step in the right direction that some of you folks can find useful!


#2

I don’t have a use for a PureScript HTTP server right now, but I just want to say that I’m glad you’ve created this. It’s good to see more work going into server-side stuff. Keep it up!


#3

Thanks for the encouragement! Don’t hesitate to reach out with ideas/feedback if you ever get a chance to use it and have any feedback!