{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE QuasiQuotes #-} module Main where import Data.ByteString.Lazy (ByteString) import Data.Text.Lazy (Text) import Data.Text.Lazy.Encoding (encodeUtf8) import Text.Blaze (Markup) import Text.Blaze.Html (Html) import Text.Blaze.Html.Renderer.Text (renderHtml) import Text.Hamlet (shamlet) import Text.Lucius (lucius, renderCss) import Web.Scotty (ActionM, scotty, get, html, raw, setHeader) render :: Html -> ActionM () render = html . renderHtml css :: ByteString -> ActionM () css src = setHeader "content-type" "text/css" >> raw src main :: IO () main = scotty 3000 $ do get "/" $ render homepage get "/custom.css" $ css stylesheet data Person = Person { _name :: Text , _pic :: Text , _twitter :: Text , _website :: Text , _books :: [Book] } data Book = Book { _title :: Text , _author :: Text , _amznref :: Text } allPeople :: [Person] allPeople = [ Person { _name = "Joe Rogan" , _pic = "https://pbs.twimg.com/profile_images/552307347851210752/vrXDcTFC_400x400.jpeg" , _twitter = "joerogan" , _website = "http://joerogan.com" , _books = [ Book {_title = "Food of the Gods" , _author = "Terence McKenna" , _amznref = "0553371304" } , Book { _title = "The War of Art" , _author ="Steven Pressfield" , _amznref ="B007A4SDCG" } ] } , Person { _name = "Beyoncé" , _pic = "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTxT84sF19lxdnSiblIXAp-Y4wAigpQn8sZ2GtAerIR_ApiiEJfFQ" , _twitter = "Beyonce" , _website = "http://beyonce.com" , _books = [ Book { _title = "What Will It Take To Make A Woman President?" , _author = "Marianne Schnall" , _amznref = "B00E257Y7G"} ] } , Person { _name = "Barrack Obama" , _pic = "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQeLzftR36p0hYI-EKNa5fm7CYDuN-vyz23_R48ocqa8X1nPr6C" , _twitter = "BarackObama" , _website = "http://barackobama.com" , _books = [ Book { _title = "An American Marriage" , _author = "Tayari Jones" , _amznref = "B01NCUXEFR"} , Book { _title = "Americanah" , _author = "Chimamanda Ngozi Adichie" , _amznref = "B00A9ET4MC"} ] } , Person { _name = "Warren Buffet" , _pic = "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQQbmnUykS6zqgzaf44tsq1RAsnHe6H7fapEoSqUwAoJGSFKbAPSw" , _twitter = "WarrenBuffett" , _website = "http://berkshirehathaway.com" , _books = [ Book { _title = "The Intelligent Investor" , _author = "Benjamin Graham" , _amznref = "B000FC12C8"} , Book { _title = "Security Analysis" , _author = "Benjamin Graham" , _amznref = "B0037JO5J8"} ] } , Person { _name = "Bill Gates" , _pic = "https://pbs.twimg.com/profile_images/988775660163252226/XpgonN0X_400x400.jpg" , _twitter = "BillGates" , _website = "https://www.gatesnotes.com" , _books = [ Book { _title = "Leonardo da Vinci" , _author = "Walter Isaacson" , _amznref = "1501139169" } , Book { _title = "Educated" , _author = "Tara Wetsover" , _amznref = "B072BLVM83" } ] } , Person { _name = "Stephen King" , _pic = "https://pbs.twimg.com/profile_images/378800000836981162/b683f7509ec792c3e481ead332940cdc_400x400.jpeg" , _twitter = "StephenKing" , _website = "https://stephenking.com/" , _books = [ Book { _title = "Red Moon" , _author = "Benjamin Percy" , _amznref = "" } , Book { _title = "The Marauders" , _author = "Tom Cooper" , _amznref = "" } ] } , Person { _name = "Tobi Lütke" , _pic = "https://pbs.twimg.com/profile_images/551403375141457920/28EOlhnM_400x400.jpeg" , _twitter = "tobi" , _website = "https://www.shopify.com" , _books = [ Book { _title = "Influence" , _author ="Robert B. Cialdini" , _amznref = "" } , Book { _title = "High Output Management" , _author ="Andrew S. Grove" , _amznref = "" } ] } , Person { _name = "Susan Cain" , _pic = "https://pbs.twimg.com/profile_images/1474290079/SusanCain5smaller-1_400x400.jpg" , _twitter = "susancain" , _website = "https://www.quietrev.com" , _books = [ Book { _title = "Bird by Bird" , _author ="Anne Lamott" , _amznref = "" } , Book { _title = "Waking Up" , _author ="Sam Harris" , _amznref = "" } ] } , Person { _name = "Oprah Winfrey" , _pic = "https://pbs.twimg.com/profile_images/1013835283698049025/q5ZN4yv3_400x400.jpg" , _twitter = "Oprah" , _website = "http://www.oprah.com/index.html" , _books = [ Book { _title = "A New Earth" , _author ="Eckhart Tolle" , _amznref = "" } , Book { _title = "The Poisonwood Bible" , _author ="Barbara Kingsolver" , _amznref = "" } ] } , Person { _name = "Patrick Collison" , _pic = "https://pbs.twimg.com/profile_images/825622525342199809/_iAaSUQf_400x400.jpg" , _twitter = "patrickc" , _website = "https://patrickcollison.com" , _books = [ Book { _title = "How Judges Think" , _author ="Richard A. Posner" , _amznref = "" } , Book { _title = "Programmers at Work" , _author ="Susan Lammers" , _amznref = "" } ] } , Person { _name = "Luis Von Ahn" , _pic = "https://pbs.twimg.com/profile_images/1020343581087678464/NIXD5MdC_400x400.jpg" , _twitter = "LuisvonAhn" , _website = "https://www.duolingo.com/" , _books = [ Book { _title = "Zero to One" , _author ="Peter Thiel" , _amznref = "" } , Book { _title = "The Hard Thing About Hard Things" , _author ="Ben Horowitz" , _amznref = "" } ] } , Person { _name = "Bryan Johnson" , _pic = "https://pbs.twimg.com/profile_images/1055165076372475904/vNp60sSl_400x400.jpg" , _twitter = "bryan_johnson" , _website = "https://bryanjohnson.co" , _books = [ Book { _title = "A Good Man" , _author ="Mark Shriver" , _amznref = "" } , Book { _title = "Shackleton" , _author ="Nick Bertozzi" , _amznref = "" } ] } , Person { _name = "Peter Thiel" , _pic = "https://pbs.twimg.com/profile_images/1121220551/Peter_Thiel_400x400.jpg" , _twitter = "peterthiel" , _website = "http://zerotoonebook.com" , _books = [ Book { _title = "Deceit, Desire, and the Novel" , _author ="René Girard" , _amznref = "" } , Book { _title = "Violence and the Sacred" , _author ="René Girard" , _amznref = "" } ] } , Person { _name = "Tim Ferris" , _pic = "https://pbs.twimg.com/profile_images/49918572/half-face-ice_400x400.jpg" , _twitter = "tferriss" , _website = "http://tim.blog" , _books = [ Book { _title = "10% Happier" , _author ="Dan Harris" , _amznref = "" } , Book { _title = "A Guide to the Good Life" , _author ="William Irvine" , _amznref = "" } ] } , Person { _name = "Allen Walton" , _pic = "https://pbs.twimg.com/profile_images/1038905908678545409/yUbF9Ruc_400x400.jpg" , _twitter = "allenthird" , _website = "https://www.allenwalton.com" , _books = [ Book { _title = "4 Hour Work Week" , _author ="Tim Ferris" , _amznref = "" } , Book { _title = "Choose Yourself" , _author ="James Altucher" , _amznref = "" } ] } , Person { _name = "Peter Mallouk" , _pic = "https://pbs.twimg.com/profile_images/713172266968715264/KsyDYghf_400x400.jpg" , _twitter = "PeterMallouk" , _website = "https://creativeplanning.com" , _books = [ Book { _title = "Awareness" , _author ="Anthony de Mello SJ" , _amznref = "" } , Book { _title = "The Prophet" , _author ="Kahlil Gibran" , _amznref = "" } ] } , Person { _name = "Adam Robinson" , _pic = "https://pbs.twimg.com/profile_images/822708907051077632/y5KyboMV_400x400.jpg" , _twitter = "IAmAdamRobinson" , _website = "http://robinsonglobalstrategies.com" , _books = [ Book { _title = "Wishcraft" , _author ="Barbara Sher" , _amznref = "" } , Book { _title = "You Can Be a Stock Market Genius" , _author ="Joel Greenblatt" , _amznref = "" } ] } , Person { _name = "Anrew Weil" , _pic = "https://pbs.twimg.com/profile_images/987461787422359553/mpoZAmPH_400x400.jpg" , _twitter = "DrWeil" , _website = "https://www.drweil.com" , _books = [ Book { _title = "The Way Of Life According To Lao Tzu" , _author = "Witter Byner" , _amznref = "0399512985" } , Book { _title = "The Psychology of Romantic Love" , _author ="Nathaniel Branden" , _amznref = "B0012RMVJI" } ] } , Person { _name = "Hubert Joly" , _pic = "https://scontent-ort2-2.xx.fbcdn.net/v/t1.0-1/c1.0.193.193a/38444401_2156120597936470_9028564067043770368_n.jpg?_nc_cat=104&_nc_ht=scontent-ort2-2.xx&oh=162142edb167f389a5b585a329e4993a&oe=5CE1D578" , _twitter = "BBYCEO" , _website = "https://www.bestbuy.com" , _books = [ Book { _title = "Who Says Elephants Can't Dance" , _author = "Louis. V. Gerstner" , _amznref = "0060523808" } , Book { _title = "Onward" , _author ="Howard Schultz" , _amznref = "1609613821" } ] } , Person { _name = "Esther Perel" , _pic = "https://pbs.twimg.com/profile_images/1091062675151319040/MzxCcgdU_400x400.jpg" , _twitter = "EstherPerel" , _website = "https://www.estherperel.com" , _books = [ Book { _title = "Crime And Punishment" , _author = "Fyodor Dostoyevsky" , _amznref = "B07NL94DFD" } , Book { _title = "If This Is a Man and The Truce" , _author ="Primo Levi" , _amznref = "0349100136" } ] } , Person { _name ="Neil deGrasse Tyson" , _pic = "https://pbs.twimg.com/profile_images/74188698/NeilTysonOriginsA-Crop_400x400.jpg" , _twitter = "neiltyson" , _website = "https://www.haydenplanetarium.org/tyson/" , _books = [ Book { _title = "The Prince" , _author = "Machiavelli" , _amznref = "B07ND3CM16" } , Book { _title = "The Art of War" , _author ="Sun Tzu" , _amznref = "1545211957" } ] } ] displayPerson :: Person -> Markup displayPerson person = [shamlet|