@hackage hyperbole0.6.1
Interactive HTML apps using type-safe serverside Haskell
Categories
License
BSD-3-Clause
Maintainer
seanhess@gmail.com
Links
Versions
Installation
Tested Compilers
Dependencies (28)
- aeson >=2.1.2.1 && <2.3
- atomic-css >=0.2 && <0.3
- attoparsec >=0.14 && <0.15
- attoparsec-aeson >=2.1 && <2.3
- base >=4.16 && <5
- bytestring >=0.11 && <0.13 Show all…
Dependents (0)

Create interactive HTML applications with type-safe serverside Haskell. Inspired by HTMX, Elm, and Phoenix LiveView.
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeFamilies #-}
module Main where
import Data.Text (Text)
import Web.Atomic.CSS
import Web.Hyperbole
main :: IO ()
main = do
run 3000 $ do
liveApp quickStartDocument (runPage page)
page :: (Hyperbole :> es) => Page es '[Message]
page = do
pure $ do
hyper Message1 $ messageView "Hello"
hyper Message2 $ messageView "World!"
data Message = Message1 | Message2
deriving (Generic, ViewId)
instance HyperView Message es where
data Action Message
= Louder Text
deriving (Generic, ViewAction)
update (Louder msg) = do
let new = msg <> "!"
pure $ messageView new
messageView :: Text -> View Message ()
messageView msg = do
button (Louder msg) ~ border 1 $ text msg
Documentation
Visit hyperbole.live for documentation and live examples. Also see the Hackage Documentation
Getting Started with Cabal
Create a new application:
$ mkdir myapp
$ cd myapp
$ cabal init
Add hyperbole and text as dependencies to the .cabal file:
build-depends:
base
, hyperbole
, text
default-language: GHC2021
Paste the above example into Main.hs, then run it:
$ cabal run
Visit http://localhost:3000 to view the application
Learn More
In the Wild
The NSO uses Hyperbole to manage Level 2 Data pipelines for the DKIST telescope. It uses complex user interfaces, workers, databases, and more. The entire codebase is open source.