:three: :cake: Architecture of the Haskell web applications
This package is aimed at being a modern, production-level, batteries-included starting template for writing web servers with Haskell on backend and Elm on frontend. It follows the Three Layer Cake. architecture pattern.
base-nopreludetrick is used. *
co-log: composable contravariant comonadic logging library. *
postgresql-simple: mid-level PostgreSQL client library for database interaction. *
servant: family of libraries for defining webservices Rest API on type-level. *
elm-street: bridge between Elm and Haskell - generating Elm data types, JSON encoders and decoders automatically from Haskell types. *
proto-lens: Protobuf messages for integration with the mobile application. *
ekg: application performance monitoring. *
bcrypt: password hashing functions. *
jwt: user authentication via JWT. *
hedgehog: testing libraries.
This section contains more detailed description of the chosen architecture and our particular implementation of it.
Hastypeclass which tells how to extract different parts of the application. This is done to achieve the following purposes:
This template uses PostgreSQL database and contains helper wrappers around functions from the
postgresql-simplelibrary to integrate smoother with our own monad. See
Lib/Db/Functions.hsfor more details.