# Minion
Minion is Haskell library for developing web applications. It stands between [Scotty](https://hackage.haskell.org/package/scotty) and [Servant](https://hackage.haskell.org/package/servant-server)
| | Scotty | Minion | Servant |
| ---------------- | ------ | ------ | ------- |
| As simple as ABC | Yes | No | No |
| At term level | Yes | Yes | No |
| Typesafe | No | Yes | Yes |
| Introspectable | No | Yes | Yes |
| Generated client | No | No | Yes |
Since Minion defines servers at the term level, it's easier to start and without excess verbosity.
```haskell
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE OverloadedLists #-}
module Main where
import Web.Minion
import Network.Wai.Handler.Warp qualified as Warp
main :: IO ()
main = Warp.run 9001 app
app :: ApplicationM IO
app = serve api
api :: Router Void IO
api = "api" />
[ "about" /> handlePlainText @String GET (pure "Hello-World Minion server")
, "hello" /> capture @String "name"
.> handlePlainText @String GET (\name -> pure $ "Hello, " <> name <> "!")
]
```
Documentation and examples can be found on [Hackage](https://hackage.haskell.org/package/minion)
Minion ecosystem also contains following libraries:
* [minion-conduit](https://hackage.haskell.org/package/minion-conduit)
* [minion-htmx](https://hackage.haskell.org/package/minion-htmx)
* [minion-jwt](https://hackage.haskell.org/package/minion-jwt)
* [minion-wai-extra](https://hackage.haskell.org/package/minion-wai-extra)
* [minion-openapi3](https://hackage.haskell.org/package/minion-openapi3)