[{"data":1,"prerenderedAt":332},["ShallowReactive",2],{"project-2113258":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":28,"sentiment":29,"stance_mix":30,"scored_comments":35,"aspects":36,"strip":42,"post_text":44,"what":45,"said":89,"maker_in_thread":177,"shape":185,"grid":189,"attempts":286,"same_week":296,"maker_shows":31,"maker_hidden":325,"reader_version":326,"card":327},"2113258","Pageforest","A Wiki written in 80 lines of JavaScript","title","Show HN: A Wiki written in 80 lines of JavaScript","http:\u002F\u002Fwiki.pageforest.com\u002F#mckoss-3535","wiki.pageforest.com","mckoss",1295295226,2011,79,41,145,1097,14,"notable","dev_tools","web app platform","web_app",[24,25,26,27],"javascript wiki","client-side web apps","app engine","single-page apps","roasted",-0.28,{"positive":31,"neutral":32,"mixed":33,"critical":34},2,4,0,7,13,{"idea":37,"execution":39,"privacy":41},{"positive":38,"critical":32},1,{"positive":33,"critical":40},3,{"positive":33,"critical":33},[40,38,33,38,33,33,33,33,33,38,33,33,33,40,33,33,33,38,40,33,33,43,40,38,33,43,33,38,33,33,38,33,33,33,33,33,33,33,33,33],5,null,{"problem":46,"audience":56,"pricing":44,"motivation":61,"time_to_build":44,"stack":65,"openness":86,"stage":87,"team_size":88},{"value":47,"source":48,"evidence":49},"Building full web apps with very little server code using client-side JavaScript","maker",[50,53],{"id":51,"by":11,"text":52},"2113569","The point of this share was to show how Pageforest (my project) can be used to create a full web-app with very little code. Pageforest is still a work in progress, but I'd love…",{"id":54,"by":11,"text":55},"2113706","Pageforest is a pretty thin wrapper on top of a AppEngine's BigTable implementation. It does have to add things like a user accounts, user permissions, and caching layer. The…",{"value":57,"source":58,"evidence":59},"Developers building web apps","inferred",[60],{"id":51,"by":11,"text":52},{"value":62,"source":48,"evidence":63},"Show how Pageforest can build a full web app with little code",[64],{"id":51,"by":11,"text":52},[66,70,76,80],{"value":67,"source":48,"evidence":68},"JavaScript",[69],{"id":54,"by":11,"text":55},{"value":71,"source":48,"evidence":72},"Google App Engine",[73],{"id":74,"by":11,"text":75},"2113686","I must admit that I'm not very familiar with CouchDB. From what I have read think there are a lot of similarities - and with the same goal of building complete web apps using…",{"value":77,"source":48,"evidence":78},"BigTable",[79],{"id":54,"by":11,"text":55},{"value":81,"source":48,"evidence":82},"Showdown",[83],{"id":84,"by":11,"text":85},"2114135","Good catch - the app is one page for now ... but you can embed links from one wiki page to another. I'm planning to extend this app (no longer just 80 lines), so it supports…","open_source","beta","unknown",{"praise":90,"objections":106,"requests":141,"questions":156,"alternatives":165},[91,99],{"value":92,"source":93,"evidence":94},"Client-side app model with view-source openness is appealing","commenter",[95],{"id":96,"by":97,"text":98},"2115437","FedericoElles","I love the idea of developing in the cloud with only js and a db api. The option to \"view page source\" makes each js app kind of \"open\" and more trustable. Thanks for sharing…",{"value":100,"source":93,"evidence":101},"Pageforest concept is cool",[102],{"id":103,"by":104,"text":105},"2113603","jchrisa","It's a great concept. Question - why not just use CouchDB? We've been doing similar app platform stuff with it for years. Check out this wiki that is hosted directly out of…",[107,117,127,134],{"value":108,"source":93,"evidence":109},"80-line claim is misleading since libraries are excluded",[110,114],{"id":111,"by":112,"text":113},"2113851","axod","Hate to nitpick, but blatant linkbait headline. It's not 80 lines of JavaScript. It's 80 lines of javascript + thousands more lines of JavaScript in the form of libraries.",{"id":115,"by":112,"text":116},"2115184","My point, is that \"80 lines of javascript\" is technically incorrect. There's no point to mention how many lines of code it is, unless it's actually true.",{"value":118,"source":93,"evidence":119},"Span elements used for clickable links hurt accessibility",[120,124],{"id":121,"by":122,"text":123},"2114217","jrockway","Not a fan of \u003Cspan>s that I'm supposed to click. If it's a link, make it an \u003Ca>, please.",{"id":125,"by":122,"text":126},"2114492","Because random spans don't get hinted, and to click the link, I have to actually reach for my mouse. a and form elements are clickable. Everything else is just plain text. In…",{"value":128,"source":93,"evidence":129},"Could be built more simply on CouchDB",[130,131],{"id":103,"by":104,"text":105},{"id":132,"by":104,"text":133},"2113803","PageForest uses App Engine to provide a key value storage API with user authentication. CouchDB has these out-of-the-box, so a CouchDB version should be much less code than this…",{"value":135,"source":93,"evidence":136},"Contenteditable WYSIWYG is fragile in production",[137],{"id":138,"by":139,"text":140},"2115284","jasonkester","Have you actually tried using ContentEditable in a production system? If so, I think you'd withdraw your comment. It's hairball.",[142,149],{"value":143,"source":93,"evidence":144},"Support multiple pages per wiki",[145],{"id":146,"by":147,"text":148},"2114071","Raphael","How is this a wiki? Does it only have the one page?",{"value":150,"source":93,"evidence":151},"Discuss security tradeoffs of the model",[152],{"id":153,"by":154,"text":155},"2113782","jorgem","PageForest looks pretty cool. Anyone want to comment about security concerns of the pageforest model, vs traditional web apps?",[157,161],{"value":158,"source":93,"evidence":159},"Why not use CouchDB instead",[160],{"id":103,"by":104,"text":105},{"value":162,"source":93,"evidence":163},"Is this really a wiki with only one page",[164],{"id":146,"by":147,"text":148},[166,170],{"value":167,"source":93,"evidence":168},"CouchDB and CouchApp",[169],{"id":103,"by":104,"text":105},{"value":171,"source":93,"evidence":172},"AppJet",[173],{"id":174,"by":175,"text":176},"2113823","jhrobert","\"single-page\", that reminds me of appjet, a cool hosted SSJS by the authors of etherpad.",{"comments":178,"answered":32,"key":179},11,[180,183,184],{"id":181,"text":182},"2113896","Point taken. Some of the libraries are like the air we breath (e.g., jQuery) - I even forgot to mention it on the link page. My point was with 80 lines of \"purpose built\" code -…",{"id":51,"text":52},{"id":54,"text":55},{"commenters":186,"max_depth":34,"maker_replies":178,"first_comment_mins":187,"lifespan_hours":188},22,86,197,[190,194,198,201,203,207,209,213,214,215,216,219,221,223,224,226,227,230,231,233,235,237,240,243,245,248,250,252,254,255,258,259,262,263,266,270,273,276,279,282,284],[191,33,40,192,193,33],"2113926","project\u002Fneutral\u002Fidea","technomancy",[195,33,38,196,197,33],"2114491","maker\u002Fcritical\u002Fexecution","somebear",[199,33,33,200,122,33],"2114544","commenter\u002Fneutral\u002Fnone",[111,38,38,202,112,33],"project\u002Fcritical\u002Fidea",[204,38,33,205,206,33],"2113875","commenter\u002Fneutral\u002Fidea","wccrawford",[181,38,33,208,11,38],"maker\u002Fneutral\u002Fidea",[210,38,33,211,212,33],"2115095","commenter\u002Fcritical\u002Fidea","moe",[115,38,33,200,112,33],[51,31,33,192,11,38],[103,31,38,202,104,33],[217,31,33,200,218,33],"2113667","tmcw",[220,31,33,211,104,33],"2113689",[54,31,33,222,11,38],"project\u002Fneutral\u002Fdesign",[174,31,40,192,175,33],[225,31,33,222,11,38],"2113901",[74,31,33,192,11,38],[228,31,33,200,229,33],"2113736","TheIronYuppie",[132,31,38,202,104,33],[153,31,40,232,154,33],"project\u002Fneutral\u002Fprivacy",[234,31,33,232,11,38],"2114094",[236,31,33,232,11,38],"2114199",[238,31,43,239,154,33],"2114510","maker\u002Fpositive\u002Fnone",[241,40,40,192,242,33],"2113964","antimatter15",[138,40,38,244,139,33],"project\u002Fcritical\u002Fexecution",[246,32,33,247,11,38],"2113834","project\u002Fpositive\u002Fperformance",[96,43,43,249,97,33],"project\u002Fpositive\u002Fidea",[251,43,33,239,11,38],"2115497",[146,253,38,202,147,33],6,[84,253,33,192,11,38],[256,253,33,257,11,38],"2141652","project\u002Fneutral\u002Fexecution",[121,34,38,244,122,33],[260,34,33,200,261,33],"2114397","alanh",[125,34,33,200,122,33],[264,34,33,200,265,33],"2115597","Robin_Message",[267,268,33,269,175,33],"2113733",8,"other\u002Fneutral\u002Fnone",[271,268,33,269,272,33],"2113738","simonsarris",[274,268,33,269,275,33],"2113751","joshwa",[277,268,33,269,278,33],"2113806","burgerbrain",[280,268,33,269,281,33],"2113847","chc",[283,268,33,200,122,33],"2114214",[285,268,33,200,281,33],"2114294",[287,288,293],{"id":4,"t":12,"points":14,"comments":15},{"id":289,"t":290,"points":291,"comments":292},"2172872",1296691938,26,10,{"id":294,"t":295,"points":40,"comments":40},"2212068",1297571762,[297,302,307,311,316,320],{"id":298,"name":299,"points":300,"category":301},"2112144","Pocket",99,"productivity",{"id":303,"name":304,"points":305,"category":306},"2101157","cubeduel",95,"consumer_social",{"id":308,"name":309,"points":310,"category":306},"2108413","Hacker News with tweets from your friends (yc.backtype.com)",44,{"id":312,"name":313,"points":314,"category":315},"2116892","Chalkboard",28,"web_saas",{"id":317,"name":318,"points":186,"category":319},"2113634","Codezero","infrastructure",{"id":321,"name":322,"points":323,"category":324},"2116852","MadPattern",21,"creative",false,"v2",{"id":328,"name":5,"line":6,"ai":325,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":29,"top":18,"kw":329,"maker":11,"domain":10,"tier":19,"attempts":40,"strip":330,"url":9,"mix":331,"praise":92,"objection":108,"sub":21},2113258,[24,25,26,27],"3101000001000300013005310501001000000000",[31,32,33,34],1793990870184]