Onboard AI learns any GitHub repo in minutes and lets you chat with it to locate functionality, understand different parts, and generate new code. Use it for free at www.getonboard.dev. Learn more →
Top 23 Haskell Web Projects
-
Project mention: Ask HN: What are some unpopular technologies you wish people knew more about? | news.ycombinator.com | 2023-12-02
Turn your Postgres database into a REST API: https://postgrest.org
-
-
InfluxDB
Collect and Analyze Billions of Data Points in Real Time. Manage all types of time series data in a single, purpose-built database. Run at any scale in any environment in the cloud, on-premises, or at the edge.
-
Project mention: It's 2023, so of course I'm learning Common Lisp | news.ycombinator.com | 2023-07-26
-
servant
Main repository for the servant libraries — DSL for describing, serving, querying, mocking, documenting web applications and more!
> do you really have to understand language extensions?
You do when your code doesn't compile and you're trying to figure out what the error message means, or when the library you want to use makes heavy use of it for even basic functionality.
> These days one just enables GHC2021
My experience was pre-GHC2021. I basically had to enable at a minimum 5-6 language extensions in every single file.
> Mostly they're just about removing unnecessary restrictions from the older standard.
Yeah, those ones are usually fine. I have zero objection to things like FlexibleInstances or DeriveFoldable.
> Could you give an example?
I believe I was trying to implement Central Authentication Service using Servant. However, that required returning a custom HTTP status code. There has been an open Github issue for this since 2017, but it seems to require basically rewriting the entire framework: https://github.com/haskell-servant/servant/issues/732
Looking back at it now Servant does have "ServerError", but that basically requires giving up all the advantages Servant claims to have and I believe it was not a viable option at the time. Looking at the timeline I was probably also on Servant 0.15, and there seems to have been a rewrite since then.
I vaguely recall running into a similar issue trying to interact with a database, but I can't remember the details of that.
-
I would suggest checking out scotty for the http server - it uses warp by default, and is very beginner-friendly.
-
neuron
Future-proof note-taking and publishing based on Zettelkasten (superseded by Emanote: https://github.com/srid/emanote)
-
-
Onboard AI
Learn any GitHub repo in 59 seconds. Onboard AI learns any GitHub repo in minutes and lets you chat with it to locate functionality, understand different parts, and generate new code. Use it for free at www.getonboard.dev.
-
Hello I remember successfully setting up obelisk a while ago and have gone through the instructions https://github.com/obsidiansystems/obelisk and ensured that everything is installed correctly, when I run the install command fro obelisk it says that it's installed but when I run ob init I get an error of command not found, this is an arch machine not nixOS. Any help would me much appreciated.
-
-
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)
-
-
-
-
-
-
Project mention: PostgREST – Serve a RESTful API from Any Postgres Database | news.ycombinator.com | 2022-12-29
At work, we've finally replaced a large part of a custom (mostly-)web backend with PostgREST recently, and that's quite a relief: considerably less code to maintain in that project now, and that was a rather awkward code. Something akin to PostgREST's "Embedding with Top-level Filtering" [1] had to be provided for all the tables, with OpenAPI schema and a typed API (Haskell + Servant); I avoided manually writing it all down, but at the cost of poking framework internals, and maintainability suffered. It was particularly annoying that the code doesn't really do anything useful, except for standing between a database and an HTTP client, and simply mimics the database anyway. Whenever a change had to be introduced, it was introduced into the database, the backend, and the frontend simultaneously, so it wasn't even useful for some kind of compatibility.
Now PostgREST handles all that, and only a few less trivial endpoints are handled by a custom backend (including streaming, which I'm considering replacing with postgrest-websocket [2] at some point).
During the switch to PostgREST, the encountered minor issues were those with inherited tables (had to set a bunch of computed/virtual columns [3] in order to "embed" those), and with a bug on filtering using such relations (turned out it was an already-fixed regression [4], so an update helped). Also a couple of helper stored procedures (to use via /rpc/) for updates in multiple tables at once (many-to-many relationships, to edit entities along with their relationships, using fewer requests) were added (though the old custom backend didn't have that), the security policies were set from the beginning, the frontend was rewritten (which allowed to finally switch without adding more work), so it was only left to cleanup the backend.
Not using views, since as mentioned above, database changes usually correspond to frontend changes, and the API doesn't have to be that stable yet.
Happy with it so far.
[1] https://postgrest.org/en/stable/api.html#embedding-with-top-...
[2] https://github.com/diogob/postgres-websockets
[3] https://postgrest.org/en/stable/api.html#computed-virtual-co...
-
-
-
I’m working on this pet project for a time now. Initially based on the three-layer repository, it’s now modelled after the Clean Architecture. In my understanding, it’s an OOP variation of the functional “Functional Core, Imperative Shell” approach. As most examples for Clean Architecture are written in C#, my module structure also looks more like a typical C# than Haskell one to me.
-
haskanoid
A free and open source breakout clone in Haskell using SDL and FRP, with Wiimote and Kinect support.
-
-
Project mention: Am trying to deploy a Yesod website using Keter but it can't recognize the hostname | /r/haskellquestions | 2023-12-06
Am using the Yesod scaffold and I have followed the documentation but am stuck here, where am getting the error hostname not recognized. The formatting in Reddit is bugged for me in old.reddit so go to Github, https://github.com/snoyberg/keter/issues/285, for code please.
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
Haskell Web related posts
- Am trying to deploy a Yesod website using Keter but it can't recognize the hostname
- An alternative front end for Haskell?
- Production REST API Infrastructure
- haskell todo list app (beginner)
- jsaddle + firefox
- Help initializing obelisk project
- My experience using Sveltekit, Supabase, and Vercel to build an AI image guessing game.
-
A note from our sponsor - Onboard AI
getonboard.dev | 9 Dec 2023
Index
What are some of the best open-source Web projects in Haskell? This list will help you:
Project | Stars | |
---|---|---|
1 | postgrest | 21,420 |
2 | hakyll | 2,618 |
3 | yesod-persistent | 2,571 |
4 | servant | 1,749 |
5 | scotty | 1,665 |
6 | neuron | 1,492 |
7 | aeson | 1,217 |
8 | obelisk | 894 |
9 | reroute | 673 |
10 | transient | 627 |
11 | webify | 434 |
12 | graphql-api | 404 |
13 | morpheus-graphql | 393 |
14 | wreq | 377 |
15 | react-haskell | 349 |
16 | req | 331 |
17 | postgres-websockets | 327 |
18 | nixpkgs-update | 320 |
19 | scalpel | 314 |
20 | three-layer | 299 |
21 | haskanoid | 266 |
22 | lucid | 265 |
23 | keter | 257 |