summaryrefslogtreecommitdiff
path: root/Devalloc/Host.hs
diff options
context:
space:
mode:
authorBen Sima <ben@bsima.me>2020-10-19 16:57:32 -0400
committerBen Sima <ben@bsima.me>2020-12-04 22:00:39 -0500
commit32f53350a3a3d701e9a1474e670a8454342adc40 (patch)
treebbe260135f49c31e19f00a8c5554fcd57f015c34 /Devalloc/Host.hs
parentc25390646bf9289dbba78a6d54f7e9a71fda3dc2 (diff)
Devalloc informational website
This includes deployment and implementation. As part of sprint-49, here are the startup progress questions: - Are you on track? - Yes? I'm making progress toward a proper launch. - Are you launched? - No - How many weeks to launch? - I would say 4 but it's probably more like 8 - How many (prospective) users have you talked to in the last week? - 2, Kyle and his manager, see below - What have you learned from them? - Kyle thought the metrics were interesting. - His manager thought the metrics were kinda useful but didn't think they really helped people ship higher quality code faster. So that's the rub: I have to show how this can make devs ship higher quality code faster; or, develop a set of features that improve those things. - Kyle pointed out that the clustering feature of devalloc will find optimal pairings *and* identify team silos that could be improved, so that's important to remember and might be a good angle in the future. - On a scale of 1-10, what is your morale? - 6 maybe - What most improved your primary metric? - Well I was able to deploy something within in the week, whereas before I had zero deploys per week. So that's an improvement. - What is your biggest obstacle? - Finding customers to talk to. - Also the thing isn't really built yet, I just have a python script. I need to build the real SaaS product - What are your top 1-3 goals for next week? - Find a single customer I can work with on an ongoing basis - I should ask around my network to see if I have any second-order connections that would be willing to work with me (Asher, Chad, previous bosses, etc) - Build out the front-end of the website (it's very simple, would just need a basic miso module and deployment) - Figure out how to connect/auth to the Github API so I can start building the SaaS version of the product Some user feedback from my friend Kyle. This comes from his engineering manager: > "Looks neat. If it were priced low enough I could see using it to run reports > as part of an overall package. A lot of those metrics don't matter too much to > me as a manager though A lot of these code quality tools are handy info but I > don't feel like they make people ship code any faster or any higher quality > Things like CodeClimate work well for Jrs though to avoid obvious static type > mistakes" Kyle provided some additional comments: > he might have been an unusual case. Jared's not big into metrics, Pivotal > Tracker point estimates, or things like that... He's far more into qualitative > feedback, like retrospectives and 1:1s > > I think it's definitely neat data! I certainly like the collaboration analysis > > It's interesting, we recently had a pair where two devs didn't work well > together, that could be represented here. Though, we didn't want to avoid > having them work together, we wanted them to find a work style that worked for > both of them And that's a good point: devalloc will find optimal pairings *and* points where you could improve team cohesiveness.
Diffstat (limited to 'Devalloc/Host.hs')
-rw-r--r--Devalloc/Host.hs121
1 files changed, 121 insertions, 0 deletions
diff --git a/Devalloc/Host.hs b/Devalloc/Host.hs
new file mode 100644
index 0000000..6d66f32
--- /dev/null
+++ b/Devalloc/Host.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE TypeApplications #-}
+{-# LANGUAGE TypeOperators #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+
+-- Developer allocation
+--
+-- : out devalloc-host
+-- : dep clay
+-- : dep cmark
+-- : sys cmark
+-- : dep envy
+-- : dep lucid
+-- : dep miso
+-- : dep protolude
+-- : dep servant
+-- : dep servant-server
+-- : dep warp
+module Devalloc.Host
+ ( main,
+ )
+where
+
+import Alpha
+import Biz.App (CSS (..), HtmlApp (..))
+import qualified Biz.Look
+-- import qualified CMark as Cmark
+import qualified Clay
+import qualified Control.Exception as Exception
+import qualified Devalloc.Page.Home as Home
+import qualified Devalloc.Page.Signup as Signup
+import qualified Lucid
+import qualified Lucid.Base as Lucid
+import Miso hiding (node)
+import qualified Network.Wai as Wai
+import qualified Network.Wai.Handler.Warp as Warp
+import Network.Wai.Middleware.RequestLogger (logStdout)
+import Servant
+import qualified System.Envy as Envy
+
+main :: IO ()
+main = Exception.bracket startup shutdown run
+ where
+ startup =
+ Envy.decodeWithDefaults Envy.defConfig >>= \cfg -> do
+ -- pitchText <- readFile <| pitches cfg
+ -- let pitch = Cmark.commonmarkToHtml [] pitchText
+ putText "@"
+ putText "devalloc"
+ putText <| "port: " <> (show <| port cfg)
+ return (cfg, serve (Proxy @AllRoutes) <| serverHandlers)
+ shutdown :: (Config, Application) -> IO ()
+ shutdown _ = pure ()
+ run :: (Config, Wai.Application) -> IO ()
+ run (cfg, app) = Warp.run (port cfg) (logStdout app)
+
+type HomeServer = ToServerRoutes Home.Path HtmlApp Home.Move
+
+type SignupServer = ToServerRoutes Signup.Path HtmlApp Signup.Move
+
+type AllRoutes = HomeServer :<|> SignupServer :<|> CssRoute
+
+type CssRoute = "css" :> "main.css" :> Get '[CSS] Text
+
+cssHandlers :: Server CssRoute
+cssHandlers = return . toStrict <| Clay.render look
+
+instance Lucid.ToHtml a => Lucid.ToHtml (HtmlApp a) where
+ toHtmlRaw = Lucid.toHtml
+ toHtml (HtmlApp x) =
+ Lucid.doctypehtml_ <| do
+ Lucid.head_ <| do
+ Lucid.meta_ [Lucid.charset_ "utf-8"]
+ jsRef "/static/all.js"
+ jsRef "//unpkg.com/turbolinks@5.2.0/dist/turbolinks.js"
+ cssRef "/css/main.css"
+ Lucid.body_ (Lucid.toHtml x)
+ where
+ jsRef _href =
+ Lucid.with
+ (Lucid.script_ mempty)
+ [ Lucid.makeAttribute "src" _href,
+ Lucid.makeAttribute "async" mempty,
+ Lucid.makeAttribute "defer" mempty
+ ]
+ cssRef _href =
+ Lucid.with
+ (Lucid.link_ mempty)
+ [ Lucid.rel_ "stylesheet",
+ Lucid.type_ "text/css",
+ Lucid.href_ _href
+ ]
+
+data Config = Config
+ { port :: Warp.Port,
+ -- | A yaml file of pitches
+ pitches :: FilePath,
+ node :: FilePath
+ }
+ deriving (Generic, Show)
+
+instance Envy.DefConfig Config where
+ defConfig =
+ Config
+ { port = 3000,
+ pitches = "./Devalloc/pitch.md",
+ node = "_/bild/dev/Devalloc.Node/static"
+ }
+
+instance Envy.FromEnv Config
+
+serverHandlers :: Server AllRoutes
+serverHandlers = Home.host :<|> Signup.host :<|> cssHandlers
+
+look :: Clay.Css
+look = do
+ Biz.Look.fuckingStyle
+ "body" Clay.? Biz.Look.fontStack