[{"data":1,"prerenderedAt":241},["ShallowReactive",2],{"project-9328006":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":15,"aspects":34,"strip":40,"post_text":43,"what":44,"said":89,"maker_in_thread":171,"shape":173,"grid":176,"attempts":204,"same_week":205,"maker_shows":41,"maker_hidden":234,"reader_version":235,"card":236},"9328006","Crudlet.js","A common, streamable interface for synchronizing data","title","Show HN: Crudlet.js – A common, streamable interface for synchronizing data","https:\u002F\u002Fgithub.com\u002Fmojo-js\u002Fcrudlet.js","github.com","knes",1428327606,2015,94,15,263,2565,11,"notable","languages","javascript library","library",[24,21,25,26,27],"data synchronization","node streams","realtime data","offline sync","curious",0.2,{"positive":31,"neutral":32,"mixed":33,"critical":33},4,9,1,{"execution":35,"docs":37,"idea":39},{"positive":36,"critical":36},0,{"positive":38,"critical":36},2,{"positive":33,"critical":33},[41,41,42,41,41,41,33,41,42,41,41,41,41,42,42],3,5,null,{"problem":45,"audience":56,"pricing":43,"motivation":64,"time_to_build":43,"stack":69,"openness":87,"stage":88,"team_size":88},{"value":46,"source":47,"evidence":48},"Synchronizing and encapsulating data services in single page apps, decoupling apps from a particular service","commenter",[49,53],{"id":50,"by":51,"text":52},"9329774","crcn","I'm a front-end developer, and there's lots of service features to think about when building a single page app: Should app data be generated from the server initially? Should the…",{"id":54,"by":51,"text":55},"9328871","Author here - the primary motivation behind this library was to make APIs interoperable with other data stores. For example: https:\u002F\u002Fgist.github.com\u002Fcrcn\u002Fbe352008bca201e8ac00…",{"value":57,"source":47,"evidence":58},"Front-end and single page app developers",[59,60],{"id":50,"by":51,"text":52},{"id":61,"by":62,"text":63},"9329753","rvdm","I've been working on some offline first real time collaboration apps, will definitely give Crudlet a try. Maybe promote the existing Todo example to the site of the repo so it's…",{"value":65,"source":47,"evidence":66},"Make APIs interoperable with other data stores and decouple apps from specific services",[67,68],{"id":54,"by":51,"text":55},{"id":50,"by":51,"text":52},[70,77,81],{"value":71,"source":72,"evidence":73},"JavaScript","inferred",[74],{"id":75,"by":51,"text":76},"9329572","They definitely solve similar problems. Bigger difference is that crudlet acts more like a utility belt library for interacting with service adapters that support the same…",{"value":78,"source":47,"evidence":79},"Node streams",[80],{"id":75,"by":51,"text":76},{"value":82,"source":47,"evidence":83},"socket.io",[84],{"id":85,"by":51,"text":86},"9330403","Thanks for the heads up - the todos example should be fixed. Right now the todos example is pretty simple - it just hooks up with a socket.io (master) server which re-broadcasts…","open_source","unknown",{"praise":90,"objections":103,"requests":118,"questions":136,"alternatives":148},[91],{"value":92,"source":47,"evidence":93},"Looks cool and useful for offline-first real-time apps",[94,98,99],{"id":95,"by":96,"text":97},"9328600","roneesh","Echoing other comments, this does look pretty cool. Would appreciate a comment from OP on what the use case is with this library? Maybe an example app or ideal use case?",{"id":61,"by":62,"text":63},{"id":100,"by":101,"text":102},"9328109","egeozcan","This looks great. I think it deserves more examples though. Looking again, I see from the commits that you've already been working on the docs. Again, great! I may give this a…",[104,111],{"value":105,"source":47,"evidence":106},"Todo live demo got stuck in an infinite loop",[107],{"id":108,"by":109,"text":110},"9329798","marknadal","Great work, just a warning: your http:\u002F\u002Fcrudlet.herokuapp.com\u002F#\u002Flive-todos example gets stuck in an infinite loop of inserting whatever todo item. Do you have any other demo…",{"value":112,"source":47,"evidence":113},"Unclear what problem it solves",[114],{"id":115,"by":116,"text":117},"9329169","namuol","What problem is this solving?",[119,129],{"value":120,"source":47,"evidence":121},"More usage examples and demos",[122,123,124,128],{"id":100,"by":101,"text":102},{"id":108,"by":109,"text":110},{"id":125,"by":126,"text":127},"9328610","markthethomas","Looks awesome! Agreed w\u002Fbelow that more usage examples would be great!",{"id":61,"by":62,"text":63},{"value":130,"source":47,"evidence":131},"Persist operations to a log for catching up new endpoints",[132],{"id":133,"by":134,"text":135},"9328722","coderzach","It would be awesome if it persisted all the operations to a log. That way, when I attach a new endpoint I could get it \"caught up\". And then, assuming your handlers are…",[137,144],{"value":138,"source":47,"evidence":139},"How does it compare to orbit.js",[140],{"id":141,"by":142,"text":143},"9329017","ollysb","There seems to be a lot of overlap with orbit.js[1], how do they compare? [1] https:\u002F\u002Fgithub.com\u002Forbitjs\u002Forbit.js",{"value":145,"source":47,"evidence":146},"Does it use OT and need a master server, and how are decentralized conflicts handled",[147],{"id":108,"by":109,"text":110},[149,153,160,167],{"value":150,"source":47,"evidence":151},"orbit.js",[152],{"id":141,"by":142,"text":143},{"value":154,"source":47,"evidence":155},"PouchDB",[156],{"id":157,"by":158,"text":159},"9329554","jchrisa","Sounds like you might want http:\u002F\u002Fpouchdb.com\u002F which has offline support including conflict management.",{"value":161,"source":47,"evidence":162},"Meteor",[163],{"id":164,"by":165,"text":166},"9330711","redindian75","Is this something similar to what Meteor[1] does? [1] http:\u002F\u002Fwww.meteor.com",{"value":168,"source":47,"evidence":169},"gunDB",[170],{"id":108,"by":109,"text":110},{"comments":36,"answered":36,"key":172},[],{"commenters":18,"max_depth":38,"maker_replies":36,"first_comment_mins":174,"lifespan_hours":175},22,7,[177,179,181,183,185,186,187,189,191,192,194,196,198,199,201],[108,36,41,178,109,36],"project\u002Fmixed\u002Fexecution",[85,36,41,180,51,36],"maker\u002Fneutral\u002Fexecution",[100,33,42,182,101,36],"project\u002Fpositive\u002Fdocs",[141,38,41,184,142,36],"project\u002Fneutral\u002Fidea",[75,38,41,184,51,36],[133,41,41,184,134,36],[157,41,33,188,158,36],"project\u002Fcritical\u002Fidea",[190,41,41,184,51,36],"9329950",[61,31,42,182,62,36],[95,42,41,193,96,36],"maker\u002Fneutral\u002Fdocs",[54,42,41,195,51,36],"maker\u002Fneutral\u002Fidea",[164,197,41,184,165,36],6,[115,175,41,184,116,36],[50,175,42,200,51,36],"project\u002Fpositive\u002Fidea",[125,202,42,203,126,36],8,"project\u002Fpositive\u002Fnone",[],[206,211,216,220,225,230],{"id":207,"name":208,"points":209,"category":210},"9340246","Kaiwa",339,"productivity",{"id":212,"name":213,"points":214,"category":215},"9332718","Frontend HQ Pinger",199,"dev_tools",{"id":217,"name":218,"points":219,"category":215},"9309877","AtomPair",127,{"id":221,"name":222,"points":223,"category":224},"9316722","autocompeter",76,"infrastructure",{"id":226,"name":227,"points":228,"category":229},"9329048","Quant News",73,"finance_crypto",{"id":231,"name":232,"points":233,"category":210},"9342148","Sameroom.io",71,false,"v2",{"id":237,"name":5,"line":6,"ai":234,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":29,"top":18,"kw":238,"maker":11,"domain":10,"tier":19,"attempts":36,"strip":239,"url":9,"mix":240,"praise":92,"objection":105,"sub":21},9328006,[24,21,25,26,27],"335333135333355",[31,32,33,33],1794036530066]