<div dir="ltr">I'm happy to announce the release of a new library for web-servers.<br>It offers simple and concise functions to build servers from small parts.<br>Servers are monoids, and we can aggregate them with functions like `mconcat`.<br><br>Main features:<br><br>   * lightweight library<br>   * expressive DSL to compose servers<br>   * type-safe handlers<br>   * handlers are encoded with generic haskell functions  <br>   * built on top of WAI and warp server libraries.<br>  <br>For DSL design I wanted to touch the middle ground between scotty (being small and simple, but imperative) and servant (being composable, but somewhat advanced on type-level features)<br><br>I like scotty for being very simple and servant for being composable, type-safe and how functions are used as handlers which provides decoupling of Web-handlers from application logic. But sometimes scotty feels too imperative and lacks a servant's composability. And servant with type-level magic and huge errors can feel too complicated. So I wanted to create something in the middle. Something composable and simple at the same time. And be able to use arbitrary haskell functions as handlers.<br><br>There are only two functions to combine servers. And types of inputs and outputs are encoded with newtype-wrpappers with phantom types which provide type-safety. <br><br>It's very first release. So feedback is welcome and I'm sure there are places to improve.<br>I hope that you will enjoy the lib.<br><br>links:<br>* [github](<a href="https://github.com/anton-k/mig">https://github.com/anton-k/mig</a>)<br>* [hackage](<a href="https://hackage.haskell.org/package/mig-0.1.0.1">https://hackage.haskell.org/package/mig-0.1.0.1</a>)<br>* [examples](<a href="https://github.com/anton-k/mig/tree/main/examples/mig-example-apps">https://github.com/anton-k/mig/tree/main/examples/mig-example-apps</a>) <br>* [example of a handle pattern app](<a href="https://github.com/anton-k/handle-pattern-mig-app">https://github.com/anton-k/handle-pattern-mig-app</a>)<br>* [example of a reader pattern app](<a href="https://github.com/anton-k/reader-pattern-mig-app">https://github.com/anton-k/reader-pattern-mig-app</a>)<br><br>Cheers,<br>Anton</div>