[{"data":1,"prerenderedAt":428},["ShallowReactive",2],{"project-23610527":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":36,"aspects":37,"strip":44,"post_text":46,"what":47,"said":92,"maker_in_thread":192,"shape":204,"grid":209,"attempts":390,"same_week":391,"maker_shows":18,"maker_hidden":420,"reader_version":421,"card":422},"23610527","IHP","A batteries-included web framework built on Haskell and Nix","title","Show HN: IHP, a batteries-included web framework built on Haskell and Nix","https:\u002F\u002Fihp.digitallyinduced.com\u002F","ihp.digitallyinduced.com","_query",1592893984,2020,280,70,151,3028,5,"legend","languages","web framework","library",[24,25,26,27,28],"haskell web framework","nix","postgres","server-side rendering","rails for haskell","loved",0.413,{"positive":32,"neutral":33,"mixed":34,"critical":35},12,10,2,1,25,{"docs":38,"design":40,"idea":41,"execution":43},{"positive":34,"critical":39},0,{"positive":34,"critical":39},{"positive":42,"critical":39},7,{"positive":39,"critical":35},[18,18,39,18,45,39,39,18,39,39,18,39,39,39,39,39,45,39,39,39,39,45,39,39,39,18,45,18,45,39,39,18,18,18,18,18,39,35,45,45],3,null,{"problem":48,"audience":60,"pricing":46,"motivation":46,"time_to_build":46,"stack":68,"openness":90,"stage":90,"team_size":91},{"value":49,"source":50,"evidence":51},"Building server-rendered web apps with type safety and batteries included","commenter",[52,56],{"id":53,"by":54,"text":55},"23610724","hendi_","Important bit missing from the title: this is using Haskell (and Nix). IHP is supposed to become the Django\u002FRails\u002FPhoenix of Haskell. I've been using Django professionally for…",{"id":57,"by":58,"text":59},"23610799","rckoepke","I really enjoyed your introduction. For the HN readers who enjoy summaries in the comments, they open with a 10-12 sentence introduction, but the second sentence sets up the core…",{"value":61,"source":50,"evidence":62},"Haskell developers and teams wanting a Rails-like framework",[63,64],{"id":53,"by":54,"text":55},{"id":65,"by":66,"text":67},"23613925","erikw","Nix seems to be heading toward a critical mass in Germany. I use NixOS for my work computer, and couldn't imagine using any other OS. I keep a LinkedIn search open for nixos, and…",[69,75,79],{"value":70,"source":71,"evidence":72},"Haskell","maker",[73],{"id":74},"post",{"value":76,"source":71,"evidence":77},"Nix",[78],{"id":74},{"value":80,"source":50,"evidence":81},"PostgreSQL",[82,86],{"id":83,"by":84,"text":85},"23611902","xgenecloud","IHP includes a GUI to build postgres schema - this is really cool and much appreciated. Databases have been existing for ages now and so are the GUI tools to manage them.…",{"id":87,"by":88,"text":89},"23611483","huijzer","This sounds awesome! I'm using NixOS for almost a year now and am still very pleased with it. It can take some time to get things to work, but when it works you'll never have to…","unknown","company",{"praise":93,"objections":111,"requests":127,"questions":149,"alternatives":168},[94,99,103],{"value":95,"source":50,"evidence":96},"Good documentation and developer ergonomics",[97,98],{"id":53,"by":54,"text":55},{"id":57,"by":58,"text":59},{"value":100,"source":50,"evidence":101},"Built-in GUI for building Postgres schema",[102],{"id":83,"by":84,"text":85},{"value":104,"source":50,"evidence":105},"Type safety in templates and queries",[106,107],{"id":53,"by":54,"text":55},{"id":108,"by":109,"text":110},"23611065","sdn90","Great work! I wasn't able to find anything on deployment in the docs. What does it look like? I've been looking for a framework with the following requirements: ``` -…",[112,120],{"value":113,"source":50,"evidence":114},"No documentation on deployment or testing",[115,116],{"id":108,"by":109,"text":110},{"id":117,"by":118,"text":119},"23610704","underdeserver","Looks really cool! I like the neat UI, auto refresh and everything. I even skimmed the 27-minute demo video (that's a bit long guys), but I don't see any reference to testing,…",{"value":121,"source":50,"evidence":122},"Nix does not run natively on Windows",[123],{"id":124,"by":125,"text":126},"23615060","steve-chavez","Using Nix to handle dependencies(haskell, pg) in a framework is really cool! But would IHP work in Windows natively? AFAICT, Nix doesn't work in Windows unless you use WSL(and…",[128,135,142],{"value":129,"source":50,"evidence":130},"Client-side rendering or LiveView-style interactivity",[131],{"id":132,"by":133,"text":134},"23611206","tluyben2","First off, nice work! I always thought it is better to mix client\u002Fserver rendering; the 'everything client' or 'everything server' both do not work for a large number of…",{"value":136,"source":50,"evidence":137},"Webpack or frontend integration guide",[138],{"id":139,"by":140,"text":141},"23613486","revskill","So as i see, this is like a Rails framework with static type checking. Best of both worlds ! I'd love to see a guide on integrating with webpack or any frontend tech in the stack.",{"value":143,"source":50,"evidence":144},"Pluggable custom code generators",[145],{"id":146,"by":147,"text":148},"23614822","metalrain","This looks interesting. I like how your code generation seems to expose most of the structure for customization, but have you thought about having different customizable…",[150,154,161],{"value":151,"source":50,"evidence":152},"How deployment works",[153],{"id":108,"by":109,"text":110},{"value":155,"source":50,"evidence":156},"How debugging works",[157],{"id":158,"by":159,"text":160},"23614916","carapace","Seems very interesting, and a move in the right direction. What's it like to debug when something goes wrong?",{"value":162,"source":50,"evidence":163},"Difference from Elm",[164],{"id":165,"by":166,"text":167},"23613823","cassepipe","What's the difference with Elm?",[169,180,184,188],{"value":170,"source":50,"evidence":171},"Phoenix",[172,176],{"id":173,"by":174,"text":175},"23617324","roebk","A Haskell project with docs, this is a pleasant surprise. I’ve been playing around with Phoenix recently and I’ve been missing a decent type system (Dialyzer is pretty bad). I…",{"id":177,"by":178,"text":179},"23613302","juhatl","You make a good point, and this is one of the reasons why I really like the Phoenix web framework (of the Elixir ecosystem). It firmly guides you towards building applications…",{"value":181,"source":50,"evidence":182},"Django",[183],{"id":53,"by":54,"text":55},{"value":185,"source":50,"evidence":186},"Rails",[187],{"id":139,"by":140,"text":141},{"value":189,"source":50,"evidence":190},"Elm",[191],{"id":165,"by":166,"text":167},{"comments":193,"answered":34,"key":194},4,[195,198,201],{"id":196,"text":197},"23611648","Thanks for your feedback! :) We have been tinkering a bit with building something close to Phoenix LiveView with HSX. Hope we can show something in that direction later this year.",{"id":199,"text":200},"23611878","Hey, thanks for your feedback! :) We're internally using hspec for testing our code. We're going to add some more documentation on using hspec with IHP soon.",{"id":202,"text":203},"23614996","This is something we plan to do in the future. We have been thinking about adding a plugin system, where the plugins can provide custom code generators to the dev environment :)",{"commenters":205,"max_depth":206,"maker_replies":193,"first_comment_mins":207,"lifespan_hours":208},46,8,31,21,[210,212,216,218,221,223,224,228,231,234,237,240,243,247,249,251,254,256,259,263,266,269,271,273,276,278,280,282,284,287,290,292,294,297,300,302,304,308,312,314,317,318,321,323,326,327,331,334,335,337,339,341,343,346,348,351,355,358,363,365,366,368,369,371,372,375,378,381,385,387],[57,39,18,211,58,39],"project\u002Fpositive\u002Fdocs",[213,39,39,214,215,39],"23615401","commenter\u002Fneutral\u002Fnone","Kinrany",[83,35,18,217,84,39],"project\u002Fpositive\u002Fdesign",[219,35,39,220,133,39],"23614380","commenter\u002Fneutral\u002Fidea",[222,35,39,214,84,39],"23614487",[53,34,18,211,54,39],[225,34,45,226,227,39],"23611089","maker\u002Fneutral\u002Fnone","dang",[229,34,45,226,230,39],"23611295","throwaway_pdp09",[232,34,39,233,54,39],"23611442","commenter\u002Fpositive\u002Fexecution",[235,34,39,214,236,39],"23612002","necovek",[238,34,39,214,239,39],"23611544","fabian2k",[241,34,39,214,242,39],"23612760","hombre_fatal",[244,34,18,245,246,39],"23612217","project\u002Fpositive\u002Fidea","sradman",[248,34,39,214,58,39],"23614831",[250,34,39,214,246,39],"23615511",[252,34,39,214,253,39],"23615550","abathur",[255,34,39,214,246,39],"23615692",[257,34,18,217,258,39],"23615946","hopia",[260,45,39,261,262,39],"23610911","other\u002Fneutral\u002Fnone","fimdomeio",[264,45,39,214,265,39],"23611082","cies",[267,45,39,214,268,39],"23611316","radisb",[270,45,39,214,133,39],"23611489",[272,45,39,214,265,39],"23611762",[274,45,39,261,275,39],"23613339","megiddo",[277,45,39,261,265,39],"23620022",[279,45,39,261,133,39],"23613723",[281,45,39,214,265,39],"23619949",[283,45,39,214,133,39],"23620477",[285,45,45,286,265,39],"23611739","project\u002Fneutral\u002Fdesign",[288,45,39,261,289,39],"23611729","purerandomness",[291,45,39,214,265,39],"23611802",[293,45,39,214,289,39],"23611819",[295,45,39,214,296,39],"23612152","weego",[298,45,39,261,299,39],"23613645","hazz99",[301,45,39,214,265,39],"23619918",[303,45,39,214,299,39],"23623874",[305,45,39,306,307,39],"23611106","other\u002Fneutral\u002Fidea","mhoad",[309,45,45,310,311,39],"23611300","project\u002Fneutral\u002Fnone","DougBTX",[313,45,39,306,307,39],"23611358",[315,45,39,306,316,39],"23612767","fastball",[177,45,39,306,178,39],[319,45,39,261,320,39],"23614144","jedieaston",[322,45,39,261,307,39],"23619084",[324,45,39,261,325,39],"23620464","tantaman",[108,193,18,245,109,39],[328,193,45,329,330,39],"23611103","maker\u002Fneutral\u002Fdocs","laobiz",[332,193,39,261,333,39],"23615773","t0astbread",[65,18,39,261,66,39],[173,336,18,245,174,39],6,[132,42,45,338,133,39],"project\u002Fmixed\u002Fidea",[196,42,39,340,11,35],"maker\u002Fneutral\u002Fidea",[342,42,39,261,133,39],"23611852",[344,42,39,261,345,39],"23612503","dgb23",[347,42,39,261,133,39],"23612548",[349,42,18,245,350,39],"23614013","Vosporos",[352,42,45,353,354,39],"23614116","project\u002Fneutral\u002Fidea","shirogane86x",[356,206,18,245,357,39],"23610780","alexmingoia",[359,360,18,361,362,39],"23612843",9,"project\u002Fpositive\u002Fnone","exdsq",[117,33,45,364,118,39],"project\u002Fmixed\u002Fdocs",[199,33,39,329,11,35],[139,367,18,245,140,39],11,[87,32,18,245,88,39],[146,370,45,286,147,39],13,[202,370,39,340,11,35],[124,373,35,374,125,39],14,"project\u002Fcritical\u002Fexecution",[376,373,39,377,11,35],"23615622","maker\u002Fpositive\u002Fexecution",[158,379,45,380,159,39],15,"project\u002Fneutral\u002Fexecution",[382,383,39,261,384,39],"23617386",16,"lvass",[165,386,45,353,166,39],17,[388,386,45,353,389,39],"23614237","Kexoth",[],[392,397,402,406,411,415],{"id":393,"name":394,"points":395,"category":396},"23591953","PJDL",337,"hardware",{"id":398,"name":399,"points":400,"category":401},"23616878","QuestDB",271,"data",{"id":403,"name":404,"points":405,"category":20},"23602008","Web3Torrent",206,{"id":407,"name":408,"points":409,"category":410},"23595430","Browservice",193,"dev_tools",{"id":412,"name":413,"points":414,"category":20},"23612910","Awk-JVM",180,{"id":416,"name":417,"points":418,"category":419},"23561904","Flatend",145,"infrastructure",false,"v2",{"id":423,"name":5,"line":6,"ai":420,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":424,"top":18,"kw":425,"maker":11,"domain":10,"tier":19,"attempts":39,"strip":426,"url":9,"mix":427,"praise":95,"objection":113,"sub":21},23610527,0.41,[24,25,26,27,28],"5505300500500000300003000535300555550133",[32,33,34,35],1794036592604]