What are the best resources to learn how to architect Haskell applications? What are the best example apps on GitHub etc?
https://tech.fpcomplete.com/haskell/library/rio is a tutorial for an alternative prelude, perhaps a bit opinionated, but it shows a common "production" architecture.
Yesod is the web framework I use in Haskell:
https://www.yesodweb.com/page/quickstart
For the database library, I prefer to use Esqueleto over Persistent, though:
https://hackage.haskell.org/package/esqueleto-2.4.3/docs/Dat...
In general, you'll want to use `stack` and Stackage[1] to manage your projects and package dependencies. Hackage[2] has the latest package submissions. Because they're simply the latest, they might be incompatible with one another. Stackage groups the compatible versions of all packages in Hackage into snapshots. `stack`, besides helping manage your dependencies, also has package templates for how a new project's files should be layed out.
http://hackage.haskell.org/package/scotty
https://github.com/scotty-web/scotty/wiki/Scotty-Tutorials-&...
- Stack to manage the project and dependencies.
- WAI and Warp to construct your own bare bones web app (see https://broch.io/posts/build-your-own-wai-framework/). I don't like frameworks like Yesod or Spock because I like to keep it simple.
- blaze-html (https://hackage.haskell.org/package/blaze-html) for constructing HTML.
- selda (https://selda.link) for PostgreSQL/SQLite interface (it might be too much for beginners, but there's other modules like postgres-simple).
- wai-extra for form/file upload parsing, gzip, and other basic middleware.
- wai-middleware-static for serving static files
- aeson for JSON encoding/decoding
This stack is what I use for building webapps with Haskell. If you're building JSON REST APIs you might want to look into Servant. I haven't used it personally but I hear good things.
I strongly recommend learning the basics of Functors, Applicatives, and Monads before venturing into building applications: See http://adit.io/posts/2013-04-17-functors,_applicatives,_and_... and http://adit.io/posts/2013-06-10-three-useful-monads.html If you know how Functors, Applicatives, and Monads work then you can understand almost everything about Haskell.
Good luck! Feel free to email me if you have questions.