minion: A Haskell introspectable web router

[ library, mit, program, web ] [ Propose Tags ]
Versions [RSS] 0.1.0.0, 0.1.0.1
Dependencies aeson, base (>=4.16 && <5), base64-bytestring, binary, bytestring, case-insensitive, containers, exceptions, filepath, http-api-data, http-media, http-types, minion, string-conversions, text, transformers, wai, warp [details]
License MIT
Author
Maintainer goosedb@yandex.ru
Category Web
Uploaded by goosedb at 2024-10-01T13:33:24Z
Distributions
Reverse Dependencies 5 direct, 0 indirect [details]
Executables minion-hello-world-example, minion-json-example, minion-complex-response-example, minion-basic-auth-example, minion-static-example, minion-introspection-example
Downloads 24 total (24 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2024-10-01 [all 1 reports]

Readme for minion-0.1.0.1

[back to package description]

Minion

Minion is Haskell library for developing web applications. It stands between Scotty and Servant

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.

{-# 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

Minion ecosystem also contains following libraries: