[{"data":1,"prerenderedAt":555},["ShallowReactive",2],{"project-15624206":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":35,"aspects":36,"strip":45,"post_text":46,"what":47,"said":88,"maker_in_thread":186,"shape":197,"grid":201,"attempts":517,"same_week":518,"maker_shows":187,"maker_hidden":547,"reader_version":548,"card":549},"15624206","Server.js","A modern Express alternative","title","Show HN: Server.js – A modern Express alternative","https:\u002F\u002Fserverjs.io\u002F","serverjs.io","franciscop",1509782605,2017,295,117,73,2242,4,"legend","languages","web framework","library",[24,25,26,27,28],"express alternative","node.js framework","async await","socket.io","helmet","mixed",-0.379,{"positive":18,"neutral":32,"mixed":33,"critical":34},12,1,14,31,{"idea":37,"design":40,"docs":41,"performance":43,"privacy":44},{"positive":38,"critical":39},3,5,{"positive":33,"critical":18},{"positive":42,"critical":33},0,{"positive":42,"critical":33},{"positive":42,"critical":33},[33,42,42,42,42,42,42,42,42,42,42,42,39,42,42,42,42,42,42,38,39,38,38,33,42,42,42,33,33,39,42,33,33,42,33,33,38,33,38,42],null,{"problem":48,"audience":58,"pricing":46,"motivation":64,"time_to_build":46,"stack":69,"openness":85,"stage":86,"team_size":87},{"value":49,"source":50,"evidence":51},"Express requires manually assembling common middleware and setup for each project","maker",[52,55],{"id":53,"by":11,"text":54},"15624210","It is built on top of express to keep all of the good things, but it adds basic middleware and some more advanced functionality like websockets through socket.io and security…",{"id":56,"by":11,"text":57},"15625450","No problem, didn't sound negative. The main difference with Koa would be having a starting point with default middleware, security and websockets. I do agree with your points,…",{"value":59,"source":50,"evidence":60},"Node.js developers building small to medium projects",[61],{"id":62,"by":11,"text":63},"15624661","I totally agree, somewhere in the homepage I explain what this package is for. I decided not to bomb myself and not writing \"where you should NOT use it\" but I still hint to it.…",{"value":65,"source":50,"evidence":66},"Avoid rewriting the same setup for every project; make usage simpler",[67,68],{"id":62,"by":11,"text":63},{"id":56,"by":11,"text":57},[70,75,79,82],{"value":71,"source":72,"evidence":73},"Node.js","inferred",[74],{"id":53,"by":11,"text":54},{"value":76,"source":50,"evidence":77},"Express",[78],{"id":53,"by":11,"text":54},{"value":27,"source":50,"evidence":80},[81],{"id":53,"by":11,"text":54},{"value":28,"source":50,"evidence":83},[84],{"id":53,"by":11,"text":54},"open_source","launched","unknown",{"praise":89,"objections":90,"requests":132,"questions":147,"alternatives":155},[],[91,103,114,125],{"value":92,"source":93,"evidence":94},"Pulls in over 200 dependencies and 37MB","commenter",[95,99],{"id":96,"by":97,"text":98},"15625886","segphault","This pulls in over 200 dependencies, with a total weight of 37MB. I'll pass.",{"id":100,"by":101,"text":102},"15626097","benologist","This is OK but a hello world app requires 203 modules and that's not really a safe position to start new apps.…",{"value":104,"source":93,"evidence":105},"Just another Express abstraction, not an alternative",[106,110],{"id":107,"by":108,"text":109},"15624671","weego","So it's just another express abstraction rather than an alternative then, considering express is a dependency.",{"id":111,"by":112,"text":113},"15624845","maxpert","Title should say wrapper rather than alternative. Since it’s built on top of express.",{"value":115,"source":93,"evidence":116},"Unclear what value it adds over plain Express",[117,121],{"id":118,"by":119,"text":120},"15625919","jroseattle","Are there docs or maybe a blog post that identifies the value-add on top of Express? While I see the API design example (which applies to me), we already do that with Express v4…",{"id":122,"by":123,"text":124},"15625398","chmln","This might be somewhat negative, but I don't quite see what problem the library is solving. It looks like as if Express wanted to become more like Koa (obvious from the context…",{"value":126,"source":93,"evidence":127},"Session rotation, Redis default and socket.io setup lack docs",[128],{"id":129,"by":130,"text":131},"15624651","TheAceOfHearts","I'd argue koajs was the first modern express alternative, although it's arguably more of a connect alternative. I've been happily using it since generators were available under a…",[133,140],{"value":134,"source":93,"evidence":135},"Automatic API documentation generation",[136],{"id":137,"by":138,"text":139},"15626407","nawitus","Does it support automatic documentation generation for the API (kinda like what swagger + express.js does)? That's the biggest missing feature in Express.js for me.",{"value":141,"source":93,"evidence":142},"TLS coverage",[143],{"id":144,"by":145,"text":146},"15626498","itronitron","no mention of TLS, which is unfortunate",[148],{"value":149,"source":93,"evidence":150},"Does Passport plug in?",[151],{"id":152,"by":153,"text":154},"15626027","arrty88","Does passport plug into this?",[156,161,172,179],{"value":157,"source":93,"evidence":158},"Koa",[159,160],{"id":129,"by":130,"text":131},{"id":122,"by":123,"text":124},{"value":162,"source":93,"evidence":163},"Sails.js",[164,168],{"id":165,"by":166,"text":167},"15626208","ricardobeat","https:\u002F\u002Fsailsjs.com still going strong last time I checked.",{"id":169,"by":170,"text":171},"15624953","mynegation","Coming from Python, my understanding is that Express is sort of like flask (add your own everything), and something like sails.js is like Django (bundled, convention over…",{"value":173,"source":93,"evidence":174},"Fastify",[175],{"id":176,"by":177,"text":178},"15626650","amk_","Fastify is a similar project that aims to be faster than Express and adds a number of API improvements like baked-in schema validation for routes, logging, and async-by-default…",{"value":180,"source":93,"evidence":181},"Feathers.js",[182],{"id":183,"by":184,"text":185},"15665425","ekryski","I think a lot of people still haven't seen https:\u002F\u002Ffeathersjs.com\u002F. Has been around for a while and offers all of this and more AND is drop in replacement for Express.",{"comments":187,"answered":188,"key":189},13,8,[190,193,194],{"id":191,"text":192},"15625736","Changing the syntax is really useful to avoid Callback Hell by leveraging async\u002Fawait: http:\u002F\u002Fcallbackhell.com\u002F",{"id":53,"text":54},{"id":195,"text":196},"15624635","It is being used underneath to connect all of the moving parts.",{"commenters":198,"max_depth":199,"maker_replies":187,"first_comment_mins":33,"lifespan_hours":200},77,7,138,[202,206,210,214,217,221,223,226,228,230,231,234,237,239,242,245,248,251,253,257,260,262,265,268,271,273,276,279,282,284,286,288,291,293,296,299,301,303,305,308,310,312,315,318,321,324,327,330,333,335,338,341,344,347,350,353,356,358,362,364,368,371,375,377,380,383,386,389,391,395,398,401,403,406,408,410,413,416,419,420,422,423,425,426,427,430,431,433,435,437,441,443,446,450,453,456,458,460,463,466,469,471,473,477,480,483,486,488,490,493,496,499,502,507,510,513,515],[203,42,33,204,205,42],"15625485","project\u002Fcritical\u002Fidea","rawnlq",[207,42,42,208,209,42],"15625513","commenter\u002Fneutral\u002Fnone","rorykoehler",[211,42,42,212,213,42],"15625613","other\u002Fneutral\u002Fnone","jypepin",[215,42,42,212,216,42],"15626116","abritinthebay",[218,42,42,219,220,42],"15627071","other\u002Fneutral\u002Fidea","clintonb",[222,42,42,208,216,42],"15628180",[224,42,42,208,225,42],"15630082","jaequery",[227,42,42,208,220,42],"15633075",[229,42,42,208,216,42],"15639114",[165,42,42,212,166,42],[232,42,42,212,233,42],"15625615","dcosson",[235,42,42,212,236,42],"15625652","always_good",[238,42,42,208,233,42],"15625956",[240,42,42,212,241,42],"15625947","cabaalis",[243,42,42,212,244,42],"15626117","mnutt",[246,42,42,212,247,42],"15626122","mrighele",[249,42,42,208,250,42],"15626177","mirekrusin",[252,42,42,208,247,42],"15626253",[254,42,42,255,256,42],"15626769","other\u002Fneutral\u002Fdocs","jazoom",[258,42,42,212,259,42],"15627342","spondyl",[261,42,42,212,256,42],"15627552",[263,42,42,212,264,42],"15628292","armandososa",[266,42,42,212,267,42],"15628999","gpmcadam",[269,42,42,219,270,42],"15625641","atiffany",[272,42,42,208,236,42],"15625679",[274,42,42,212,275,42],"15626852","vnchr",[277,42,42,212,278,42],"15625655","rpedela",[280,42,42,212,281,42],"15625683","Xeoncross",[283,42,42,208,236,42],"15625690",[285,42,42,208,281,42],"15625714",[287,42,42,208,236,42],"15625967",[289,42,42,208,290,42],"15626304","northvillage",[191,42,42,292,11,33],"project\u002Fpositive\u002Fidea",[294,42,42,212,295,42],"15625899","midrus",[297,42,42,212,298,42],"15626614","jjjensen90",[300,42,39,292,256,42],"15626786",[302,42,42,208,220,42],"15627052",[304,42,42,208,236,42],"15627259",[306,42,42,208,307,42],"15627401","bigtunacan",[309,42,42,208,220,42],"15627828",[311,42,42,212,281,42],"15625933",[313,42,42,212,314,42],"15625942","Can_Not",[316,42,42,212,317,42],"15626212","vineet",[319,42,42,212,320,42],"15626721","azr79",[322,42,42,212,323,42],"15627026","mikermcneil",[325,42,42,212,326,42],"15629152","quickConclusion",[328,42,42,212,329,42],"15629439","sotojuan",[331,42,42,212,332,42],"15626347","nahtnam",[334,42,42,212,320,42],"15626711",[336,42,42,212,337,42],"15626897","leke",[339,42,42,212,340,42],"15626731","WhitneyLand",[342,42,42,212,343,42],"15627416","LrnByTeach",[345,42,42,212,346,42],"15630735","cheapsteak",[348,42,42,212,349,42],"15627962","lwansbrough",[351,42,42,212,352,42],"15628323","holon",[354,42,42,212,355,42],"15631118","incadenza",[53,33,42,357,11,33],"maker\u002Fneutral\u002Fidea",[359,33,38,360,361,42],"15624587","project\u002Fmixed\u002Fdesign","picardo",[195,33,42,363,11,33],"maker\u002Fneutral\u002Fexecution",[365,33,38,366,367,42],"15625235","project\u002Fneutral\u002Fidea","niix",[369,33,39,292,370,42],"15624715","josephorjoe",[372,33,38,373,374,42],"15628077","project\u002Fneutral\u002Fdesign","josephg",[376,33,38,373,314,42],"15628224",[378,33,38,373,379,42],"15630294","aphextron",[381,33,39,382,236,42],"15630986","project\u002Fpositive\u002Fdesign",[129,384,33,385,130,42],2,"project\u002Fcritical\u002Fdocs",[387,384,42,388,11,33],"15624884","maker\u002Fneutral\u002Fnone",[390,384,42,388,11,33],"15648628",[392,38,33,393,394,42],"15624366","project\u002Fcritical\u002Fdesign","drinchev",[396,38,42,208,397,42],"15624413","kosinus",[399,38,42,208,400,42],"15624456","vidar",[402,38,42,208,394,42],"15624477",[404,38,42,405,11,33],"15624793","maker\u002Fpositive\u002Fidea",[407,38,42,208,397,42],"15624865",[409,38,42,208,323,42],"15627258",[411,38,42,208,412,42],"15624579","nkristoffersen",[414,38,42,208,415,42],"15624618","HatchedLake721",[417,38,42,208,418,42],"15625717","novaleaf",[62,38,42,388,11,33],[100,18,33,421,101,42],"project\u002Fcritical\u002Fnone",[176,39,38,373,177,42],[107,424,33,204,108,42],6,[122,199,33,204,123,42],[56,199,42,405,11,33],[428,199,42,208,429,42],"15626213","simplify",[111,188,38,366,112,42],[169,432,39,292,170,42],9,[434,432,42,357,11,33],"15624994",[436,432,42,208,314,42],"15625546",[438,439,42,212,440,42],"15624887",10,"sideproject",[442,439,42,388,11,33],"15624960",[444,439,42,212,445,42],"15627890","dozzie",[447,448,33,204,449,42],"15625844",11,"kevinSuttle",[451,32,33,421,452,42],"15630362","mtarnovan",[454,187,33,393,455,42],"15626421","slackingoff2017",[457,187,33,393,236,42],"15626513",[459,187,42,208,455,42],"15667373",[461,34,42,212,462,42],"15626395","debacle",[464,34,42,212,465,42],"15627337","DTrejo",[467,34,42,212,468,42],"15631047","bagol",[118,470,38,366,119,42],15,[183,472,33,204,184,42],16,[474,475,38,366,476,42],"15627093",17,"zmix",[96,478,33,479,97,42],18,"project\u002Fcritical\u002Fperformance",[481,478,42,482,11,33],"15625929","maker\u002Fneutral\u002Fperformance",[137,484,38,485,138,42],19,"project\u002Fneutral\u002Fdocs",[152,487,38,366,153,42],20,[489,487,42,208,138,42],"15626404",[491,492,33,393,213,42],"15625623",21,[144,494,33,495,145,42],22,"project\u002Fcritical\u002Fprivacy",[497,494,38,498,220,42],"15628194","project\u002Fneutral\u002Fprivacy",[500,494,42,501,11,33],"15648573","maker\u002Fneutral\u002Fprivacy",[503,504,38,505,506,42],"15624502",23,"project\u002Fneutral\u002Fnone","myf01d",[508,504,42,208,509,42],"15624537","XCSme",[511,504,42,212,512,42],"15624571","alvis",[514,504,42,208,512,42],"15624560",[516,504,42,388,11,33],"15624629",[],[519,523,528,533,538,543],{"id":520,"name":521,"points":522,"category":20},"15644430","Javalin 1.0",271,{"id":524,"name":525,"points":526,"category":527},"15645276","Orange Forum",226,"infrastructure",{"id":529,"name":530,"points":531,"category":532},"15611605","Link.fish",201,"web_saas",{"id":534,"name":535,"points":536,"category":537},"15622140","CertStream",142,"security_privacy",{"id":539,"name":540,"points":541,"category":542},"15638201","OSX-ISO",135,"dev_tools",{"id":544,"name":545,"points":546,"category":527},"15611265","url-to-pdf",129,false,"v2",{"id":550,"name":5,"line":6,"ai":547,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":551,"top":18,"kw":552,"maker":11,"domain":10,"tier":19,"attempts":42,"strip":553,"url":9,"mix":554,"praise":-1,"objection":92,"sub":21},15624206,-0.38,[24,25,26,27,28],"1000000000005000000353310001150110113130",[18,32,33,34],1793990966103]