Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/yesodweb/yesod

A RESTful Haskell web framework built on WAI.
https://github.com/yesodweb/yesod

Last synced: about 1 month ago
JSON representation

A RESTful Haskell web framework built on WAI.

Awesome Lists containing this project

README

        

![Tests](https://github.com/yesodweb/yesod/workflows/Tests/badge.svg)

# Yesod Web Framework

An advanced web framework using the Haskell programming language. Featuring:

* safety & security guaranteed at compile time
* developer productivity: tools for all your basic web development needs
* raw performance
* fast, compiled code
* techniques for constant-space memory consumption
* asynchronous IO
* this is built in to the Haskell programming language (like Erlang)

## Getting Started

Learn more about Yesod on [its main website](http://www.yesodweb.com/). If you
want to get started using Yesod, we strongly recommend the [quick start
guide](http://www.yesodweb.com/page/quickstart), based on [the Haskell build
tool stack](https://github.com/commercialhaskell/stack#readme).

Here's a minimal example!

```haskell
{-# LANGUAGE OverloadedStrings, QuasiQuotes, TemplateHaskell, TypeFamilies #-}

import Yesod

data App = App -- Put your config, database connection pool, etc. in here.

-- Derive routes and instances for App.
mkYesod "App" [parseRoutes|
/ HomeR GET
|]

instance Yesod App -- Methods in here can be overridden as needed.

-- The handler for the GET request at /, corresponds to HomeR.
getHomeR :: Handler Html
getHomeR = defaultLayout [whamlet|Hello World!|]

main :: IO ()
main = warp 3000 App
```

To read about each of the concepts in use above (routing, handlers,
linking, JSON), in detail, visit
[Basics in the Yesod book](https://www.yesodweb.com/book/basics#basics_routing).

## Hacking on Yesod

Yesod consists mostly of four repositories:

```bash
git clone --recurse-submodules http://github.com/yesodweb/shakespeare
git clone --recurse-submodules http://github.com/yesodweb/persistent
git clone --recurse-submodules http://github.com/yesodweb/wai
git clone --recurse-submodules http://github.com/yesodweb/yesod
```

Each repository can be built with `stack build`.