module Main where import Servant import Servant.Server import Network.Wai.Handler.Warp import Network.Wai.Logger import Network.HTTP.Client hiding (Proxy) import Control.Monad.Reader import Data.Text.I18n import Data.Text.I18n.Po -- internal imports import API import Types import View import Control main :: IO () main = do manager <- newManager defaultManagerSettings (l10n, _) <- getL10n "./locales" withStdoutLogger $ \ilog -> do let settings = setPort 3000 $ setLogger ilog defaultSettings initState = ReadState { rsManager = manager , rsL10n = l10n } runSettings settings (userApp initState) userApp initState = serveWithContext userApi (EmptyContext) $ hoistServerWithContext userApi Proxy (`runReaderT` initState) ( userSelectControl :<|> userOverviewControl :<|> authControl ) userApi :: Proxy UserAPI userApi = Proxy