* Add table of contents to improve README navigation * Update About section to reflect migration from static site to Haskell project * Change default fallback port from 3000 to 8080 when PORT env var is not set
27 lines
750 B
Haskell
27 lines
750 B
Haskell
{-# LANGUAGE OverloadedStrings #-}
|
|
{-# LANGUAGE ScopedTypeVariables #-}
|
|
|
|
module Main where
|
|
|
|
import Web.Scotty
|
|
import Network.Wai.Middleware.Static
|
|
import Network.Wai.Middleware.RequestLogger
|
|
import Control.Monad.IO.Class
|
|
import Data.Text.Lazy (pack)
|
|
import System.Environment (getEnv)
|
|
import Control.Exception (catch)
|
|
import qualified Routes
|
|
|
|
main :: IO ()
|
|
main = do
|
|
port <- read <$> getEnv "PORT" `catch` \(_ :: IOError) -> return "8080"
|
|
putStrLn $ "Starting server on port " ++ show port
|
|
scotty port $ do
|
|
middleware logStdoutDev
|
|
middleware $ staticPolicy (addBase "static")
|
|
|
|
-- Routes
|
|
get "/" $ Routes.indexHandler
|
|
get "/api/command/:cmd" $ Routes.commandHandler
|
|
get "/api/language/:lang" $ Routes.languageHandler
|