Haskell Web

Open-source Haskell projects categorized as Web | Edit details

Top 23 Haskell Web Projects

  • GitHub repo postgrest

    REST API for any Postgres database

    Project mention: An Ideal Data-Model-First Development Approach for the real-world apps | reddit.com/r/haskell | 2021-09-11

    For prior art in the 'make a quick CRUD app' space, I'd check out https://postgrest.org/ and https://ihp.digitallyinduced.com/, not that I've gotten around to trying either of them.

  • GitHub repo yesod-persistent

    A RESTful Haskell web framework built on WAI.

    Project mention: The Importance of Humility in Software Development | news.ycombinator.com | 2021-05-12

    > Every language phasing the web is stringly typed

    Heh, not even close. Off the top of my head I can think of Ur/Web as an extreme example ( http://www.impredicative.com/ur ), and slightly more mainstream systems like Yesod ( https://www.yesodweb.com ). I've worked professionally with Haskell, although not for Web stuff. These days I mostly work with Scala, which has a similar typing mindset to ML/Haskell, but unfortunately inherits a lot of stringly typed legacy from Java. We use an in-house library that provides zero-cost newtypes to distinguish between different semantically-distinct data types, many of which just-so-happen to be representable as subsets of String (e.g. GET parameter names, GET parameter values, POST bodies, etc.). This makes it a type error to try and e.g. concatenate different sorts of data together.

    W.r.t. "escaping", I tend to avoid it entirely since it's inherently unsafe:

    - "Escaping" doesn't distinguish between its input and output types; they're both just "String", and we have to make assumptions about the contents of each (i.e. it's unsafe)

    - Having the same input and output types makes it possible to "double-escape" by accident. This discourages the use of escaping, just-in-case it happens to be done elsewhere; hence it's very common to end up without any escaping taking place.

    - Having the same input and output types makes escaping functionally unnecessary: anything we do to an escaped string could also be done to an unescaped string, so it's up to us to remember that it's needed (i.e. it's unsafe).

    The whole idea of "escaping a string" betrays a flawed approach to the problem. Instead of throwing everything into the same representation, then manually trying to figure out whether or not a value comes from a particular subset of that representation or not, it's much easier and safer to avoid lumping them all together in the first place. If our inputs have a certain type (e.g. HTTP.Get.Val) and we can only output certain other types (e.g. JSON, Map[HTTP.Header.Key, HTTP.Header.Val], etc.), then the processing which turns input into output is forced to specify any necessary conversions. Whilst such conversions may involve escape sequences, having them associated to particular types is more akin to serialisation.

    Heck, at my first PHP job we largely solved this problem not by 'filtering and escaping', but by modifying the PHP interpreter to distinguish between 'clean' and 'dirty' strings (with literals being clean, and $_GET, etc. being dirty). Operations like concatenation would propagate 'dirtiness', and output functions like 'echo' would crash if given a dirty string. Traditional 'escaping' functions would convert dirty strings to clean ones, and crash when given a clean string. Having this be dynamic was more annoying than ahead-of-time compile errors, but it still did a pretty good job.

    There's pretty much no excuse for stringly typed languages/libraries/etc. when such such trivial solutions exist, other than the historical inertia of legacy systems.

  • Nanos

    Run Linux Software Faster and Safer than Linux with Unikernels.

  • GitHub repo hakyll

    A static website compiler library in Haskell

    Project mention: About GitLab and Pages by Safely Dysfunctional | dev.to | 2021-07-09

    This info is relevant because Hakyll application requires to be complied before it generates the pages, and the compilation process of Haskell is a pretty expensive (computationally saying). Although, the executable is incredible fast, due to great work made by the compiler. This processing cost will be discussed soon.

  • GitHub repo servant

    Main repository for the servant libraries -- DSL for describing, serving, querying, mocking, documenting web applications and more!

    Project mention: [Servant] Best practices to not mixup routes with same signatures. | reddit.com/r/haskell | 2021-08-05

    Even slower than : quadratic compile time in number of routes?

  • GitHub repo scotty

    Haskell web framework inspired by Ruby's Sinatra, using WAI and Warp (Official Repository)

    Project mention: First Web App | reddit.com/r/haskell | 2021-07-27
  • GitHub repo neuron

    Future-proof note-taking and publishing based on Zettelkasten

    Project mention: Zest: a CLI tool for zettelkasten-like note management | reddit.com/r/Zettelkasten | 2021-09-08

    zk also interoperates with neuron (of which I'm the author!).

  • GitHub repo aeson

    A fast Haskell JSON library

    Project mention: Text Maintainers: text-utf8 migration discussion - Haskell Foundation | reddit.com/r/haskell | 2021-04-15

    Similar scan is already in aeson https://github.com/haskell/aeson/blob/master/src/Data/Aeson/Parser/Internal.hs#L322-L335 where the unsafeDecodeASCII is used I mentioned in my previous comment.

  • Scout APM

    Scout APM: A developer's best friend. Try free for 14-days. Scout APM uses tracing logic that ties bottlenecks to source code so you know the exact line of code causing performance issues and can get back to building a great product faster.

  • GitHub repo reroute

    Another Haskell web framework for rapid development (by agrafix)

    Project mention: Spock web framework routing question | reddit.com/r/haskell | 2021-04-28

    Thanks, you are probably correct. Mistaken with insertion & matching functions working on a 2nd parameter of PathMap which is a plain list. Digged through Spock calls and ended up at hookRoute which builds-up an actual routing data structure, ie. strict HashMap.

  • GitHub repo transient

    A full stack, reactive architecture for general purpose programming. Algebraic and monadically composable primitives for concurrency, parallelism, event handling, transactions, multithreading, Web, and distributed computing with complete de-inversion of control (No callbacks, no blocking, pure state)

  • GitHub repo obelisk

    Functional reactive web and mobile applications, with batteries included.

    Project mention: What is the current state of Haskell in iOS? | reddit.com/r/haskell | 2021-06-29

    Note that Obelisk will happily run on Android and iOS, but uses reflex-dom and appropriate web view widgets on each platform.

  • GitHub repo graphql-api

    Write type-safe GraphQL services in Haskell

  • GitHub repo webify

    webfont generator - converts ttf to woff, eot and svg

  • GitHub repo wreq

  • GitHub repo react-haskell

    React bindings for Haskell

  • GitHub repo morpheus-graphql

    Haskell GraphQL Api, Client and Tools

  • GitHub repo req

    An HTTP client library

  • GitHub repo scalpel

    A high level web scraping library for Haskell. (by fimad)

  • GitHub repo postgres-websockets

    PostgreSQL + Websockets

  • GitHub repo three-layer

    :three: :cake: Architecture of the Haskell web applications

    Project mention: Baking metaphors in the imperative/declarative programming debate | dev.to | 2021-09-17

    In Haskell, Matt Parsons popularised the Three Layer Haskell Cake (2018). Holmusk (well, Kowainik) made this picture to go along:

  • GitHub repo haskanoid

    A free and open source breakout clone in Haskell using SDL and FRP, with Wiimote and Kinect support.

  • GitHub repo keter

    Web app deployment manager

    Project mention: Process manager for an API | reddit.com/r/haskell | 2021-02-16
  • GitHub repo airship

    Helium + Webmachine = Airship. A toolkit for building declarative, RESTful web apps.

  • GitHub repo lucid

    Clear to write, read and edit DSL for writing HTML (by chrisdone)

NOTE: The open source projects on this list are ordered by number of github stars. The number of mentions indicates repo mentiontions in the last 12 Months or since we started tracking (Dec 2020). The latest post mention was on 2021-09-17.


What are some of the best open-source Web projects in Haskell? This list will help you:

Project Stars
1 postgrest 17,591
2 yesod-persistent 2,390
3 hakyll 2,330
4 servant 1,522
5 scotty 1,518
6 neuron 1,238
7 aeson 1,030
8 reroute 627
9 transient 622
10 obelisk 611
11 graphql-api 403
12 webify 397
13 wreq 363
14 react-haskell 343
15 morpheus-graphql 323
16 req 289
17 scalpel 276
18 postgres-websockets 269
19 three-layer 259
20 haskanoid 251
21 keter 244
22 airship 238
23 lucid 234
Find remote jobs at our new job board 99remotejobs.com. There are 25 new remote jobs listed recently.
Are you hiring? Post a new remote job listing for free.
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives