@hackage hyperbole0.3.6
Interactive HTML apps using type-safe serverside Haskell
Categories
License
BSD-3-Clause
Maintainer
seanhess@gmail.com
Links
Versions
Installation
Dependencies (18)
- base >=4.16 && <5
- bytestring >=0.11 && <0.13
- casing >0.1 && <0.2
- containers >=0.6 && <1
- cookie >=0.4 && <0.5
- effectful >=2.3 && <3 Show all…
Dependents (0)
Hyperbole
Create fully interactive HTML applications with type-safe serverside Haskell. Inspired by HTMX, Elm, and Phoenix LiveView
Learn more about Hyperbole on Hackage
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeFamilies #-}
import Web.Hyperbole
main = do
run 3000 $ do
liveApp (basicDocument "Example") (page mainPage)
mainPage = do
handle message
load $ do
pure $ do
el bold "My Page"
hyper (Message 1) $ messageView "Hello"
hyper (Message 2) $ messageView "World!"
data Message = Message Int
deriving (Generic, Param)
data MessageAction = Louder Text
deriving (Generic, Param)
instance HyperView Message where
type Action Message = MessageAction
message :: Message -> MessageAction -> Eff es (View Message ())
message _ (Louder m) = do
let new = m <> "!"
pure $ messageView new
messageView m = do
el_ $ text m
button (Louder m) id "Louder"
Examples
The example directory contains an app with pages demonstrating various features
Run the examples in this repo using cabal. Then visit http://localhost:3000/ in your browser
cabal run
- Main
- Simple
- Counter
- CSS Transitions
- Forms
- Sessions
- Redirects
- Lazy Loading and Polling
- Errors
- Contacts (Advanced)
Learn More
View Documentation on Hackage
View on Github
In Production