Top 23 Haskell Web Projects
REST API for any Postgres databaseProject 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.
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.
Run Linux Software Faster and Safer than Linux with Unikernels.
A static website compiler library in HaskellProject 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.
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?
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
Future-proof note-taking and publishing based on ZettelkastenProject 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!).
A fast Haskell JSON libraryProject 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: 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.
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.
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)
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.
Write type-safe GraphQL services in Haskell
webfont generator - converts ttf to woff, eot and svg
React bindings for Haskell
Haskell GraphQL Api, Client and Tools
An HTTP client library
A high level web scraping library for Haskell. (by fimad)
PostgreSQL + Websockets
:three: :cake: Architecture of the Haskell web applicationsProject 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:
A free and open source breakout clone in Haskell using SDL and FRP, with Wiimote and Kinect support.
Web app deployment managerProject mention: Process manager for an API | reddit.com/r/haskell | 2021-02-16
Helium + Webmachine = Airship. A toolkit for building declarative, RESTful web apps.
Clear to write, read and edit DSL for writing HTML (by chrisdone)
What are some of the best open-source Web projects in Haskell? This list will help you:
Are you hiring? Post a new remote job listing for free.