diff options
author | Ben Sima <ben@bsima.me> | 2020-10-19 16:57:32 -0400 |
---|---|---|
committer | Ben Sima <ben@bsima.me> | 2020-12-04 22:00:39 -0500 |
commit | 32f53350a3a3d701e9a1474e670a8454342adc40 (patch) | |
tree | bbe260135f49c31e19f00a8c5554fcd57f015c34 /Devalloc/Host.hs | |
parent | c25390646bf9289dbba78a6d54f7e9a71fda3dc2 (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.hs | 121 |
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 |