[{"data":1,"prerenderedAt":512},["ShallowReactive",2],{"project-40788648":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":46,"post_text":48,"what":49,"said":98,"maker_in_thread":218,"shape":231,"grid":234,"attempts":470,"same_week":475,"maker_shows":34,"maker_hidden":505,"reader_version":506,"card":507},"40788648","Triplit","Open-source syncing database that runs on server and client","title","Show HN: Triplit – Open-source syncing database that runs on server and client","https:\u002F\u002Fgithub.com\u002Faspen-cloud\u002Ftriplit","github.com","matlin",1719323585,2024,279,100,235,3515,7,"legend","data","syncing database","library",[24,25,26,27,28],"local-first database","real-time sync","offline sync","crdt","typescript database","curious",0.06,{"positive":32,"neutral":33,"mixed":34,"critical":35},4,22,2,5,33,{"execution":38,"design":40,"idea":41,"performance":43,"docs":44,"privacy":45},{"positive":39,"critical":39},0,{"positive":39,"critical":39},{"positive":42,"critical":42},1,{"positive":39,"critical":39},{"positive":39,"critical":39},{"positive":39,"critical":39},[47,39,47,47,47,39,39,35,42,47,39,39,42,39,39,47,39,47,42,42,47,47,39,35,47,39,35,47,39,47,47,47,47,47,47,47,47,42,35,47],3,"Hey HN, we’re Matt and Will, the co-founders of Triplit (https:\u002F\u002Fwww.triplit.dev). Triplit is an open-source database (https:\u002F\u002Fgithub.com\u002Faspen-cloud\u002Ftriplit) that combines a server-side database, client-side cache, and a sync engine into one cohesive product. You can try it out with a new project by running:\n\n\n```\n  (npm|bun|yarn) create triplit-app \n```\n As a team, we’ve worked on several projects that aspired to the user experience of Linear or Superhuman, where every interaction feels instant like a native app while still having the collaborative and syncing features we expect from the web",{"problem":50,"audience":56,"pricing":63,"motivation":67,"time_to_build":71,"stack":72,"openness":95,"stage":96,"team_size":97},{"value":51,"source":52,"evidence":53},"Building offline-capable, real-time synced web apps needs caching, optimistic writes and sync logic spread across many tools","maker",[54],{"id":55},"post",{"value":57,"source":52,"evidence":58},"Web developers building real-time, offline-capable apps with TypeScript",[59,60],{"id":55},{"id":61,"by":11,"text":62},"40790712","I can't speak to RethinkDB's history but we're really focused on a specific use case which I think helps. Specifically, Triplit is made for web developers so we have great TS…",{"value":64,"source":52,"evidence":65},"Self-hosting free; paid managed Triplit Cloud",[66],{"id":55},{"value":68,"source":52,"evidence":69},"Team wanted the instant, collaborative UX of Linear or Superhuman without building sync logic per app",[70],{"id":55},null,[73,77,83,89],{"value":74,"source":52,"evidence":75},"TypeScript",[76],{"id":55},{"value":78,"source":52,"evidence":79},"SQLite",[80],{"id":81,"by":11,"text":82},"40792519","There are adapters for LevelDB, LMDB, and File storage. We just use SQLite out of the box because it's fast and reliable. We'll make those other adapters more accessible in the…",{"value":84,"source":52,"evidence":85},"React",[86],{"id":87,"by":11,"text":88},"40795309","It's not currently possible to use MongoDB with Triplit, you would use Triplit's server instead but it's very easy to setup with React: https:\u002F\u002Fwww.triplit.dev\u002Fdocs\u002Fquick-start",{"value":90,"source":52,"evidence":91},"Svelte",[92],{"id":93,"by":11,"text":94},"40791724","Yep! We've just prioritized based on what's been requested in our Discord and surprisingly Svelte has been requested a lot more than Vue so we did that first but Vue is on the way.","open_source","launched","team",{"praise":99,"objections":116,"requests":139,"questions":165,"alternatives":191},[100,112],{"value":101,"source":102,"evidence":103},"Good developer experience and TypeScript support","commenter",[104,108],{"id":105,"by":106,"text":107},"40792491","tanishqkanc","I've been using Triplit on my React native app for a while and it works great. Highly recommend. It's the only local-first db that hits these points for me: - Good sane query…",{"id":109,"by":110,"text":111},"40791833","armincerf","We’ve been using triplit to store user settings that can be managed by admins, it’s important users always feel like the app runs locally and they often don’t have good internet…",{"value":113,"source":102,"evidence":114},"Responsive support team",[115],{"id":109,"by":110,"text":111},[117,128,135],{"value":118,"source":102,"evidence":119},"AGPL license concerns for applications using the client libraries",[120,124],{"id":121,"by":122,"text":123},"40791565","victor9000","So you have to AGPL your product because of the database that it uses lol, hard pass.",{"id":125,"by":126,"text":127},"40798814","mkl","Your link confirms victor9000's point and contradicts your first sentence. The frontend libraries (the client-side database, the React and Svelte bindings, etc.) are AGPL, so…",{"value":129,"source":102,"evidence":130},"Custom query language lacks aggregations such as COUNT",[131],{"id":132,"by":133,"text":134},"40796009","thanhnguyen2187","Hi Triplit's team, Congrats on the launch and thanks for the awesome product! I've been using Triplit in one of my projects [1], and it do work as expected. In my self-promotion…",{"value":136,"source":102,"evidence":137},"No self-hosted high-availability deployment yet",[138],{"id":109,"by":110,"text":111},[140,147,154,158],{"value":141,"source":102,"evidence":142},"Flutter or native mobile bindings",[143],{"id":144,"by":145,"text":146},"40791846","satvikpendem","I believe I saw your video presentations on YouTube [0] from the Local First Discord server [1], so nice to see your Show HN here. I am not using TypeScript so I might not be…",{"value":148,"source":102,"evidence":149},"Rust bindings for Tauri",[150],{"id":151,"by":152,"text":153},"40794179","munzman","would be great to have Rust bindings so it could work with Tauri. With tauri growth and the upcoming mobile devices support coupled with SQLite recent hype, this could bridge the…",{"value":155,"source":102,"evidence":156},"Vue support",[157],{"id":93,"by":11,"text":94},{"value":159,"source":102,"evidence":160},"Postgres integration",[161],{"id":162,"by":163,"text":164},"40791880","sagarjs","So it’s not possible to use this with an existing postgresql database?",[166,173,180],{"value":167,"source":102,"evidence":168},"How schema evolution works across client versions",[169],{"id":170,"by":171,"text":172},"40796565","lars512","Related question: when you're using databases with great offline sync protocols like this, how do you do schema evolution of your DB, especially in the face of different client…",{"value":174,"source":102,"evidence":175},"How access controls are defined",[176],{"id":177,"by":178,"text":179},"40794771","stevage","Looks very useful. I didn't dive deep, but don't understand yet where you define access controls? I mean, How you say that a given Users can only Access their own data.",{"value":181,"source":102,"evidence":182},"Sync latency and benchmarks",[183,187],{"id":184,"by":185,"text":186},"40791659","mrtesthah","What is Triplet’s syncing latency?",{"id":188,"by":189,"text":190},"40796510","8mobile","Wow, nice work. I will definitely try it out for my apps and backend. Do you have any benchmarks? Not sure about the AGPL licence",[192,196,200,204,211],{"value":193,"source":102,"evidence":194},"Evolu",[195],{"id":132,"by":133,"text":134},{"value":197,"source":102,"evidence":198},"ElectricSQL",[199],{"id":144,"by":145,"text":146},{"value":201,"source":102,"evidence":202},"PowerSync",[203],{"id":144,"by":145,"text":146},{"value":205,"source":102,"evidence":206},"RxDB",[207],{"id":208,"by":209,"text":210},"40791295","troyjfarrell","Looks like it could be a more batteries-included\u002Fopinionated alternative to RxDB (https:\u002F\u002Frxdb.info). The relational queries might help some people who tend to think in SQL as…",{"value":212,"source":102,"evidence":213},"Meteor",[214],{"id":215,"by":216,"text":217},"40798973","danman114","That's really interesting & cool - I'm gonna look into this for sure! I'd like to mention the Meteor.js framework (https:\u002F\u002Fwww.meteor.com\u002F) too, which is in a bit of a…",{"comments":219,"answered":220,"key":221},24,14,[222,225,228],{"id":223,"text":224},"40800893","Glad you've enjoyed using Triplit! on self-hosting: We're cleaning up the docs on self-hosting to make the configuration clearer, thanks for point that out. on querying: Yeah we…",{"id":226,"text":227},"40800098","This is a great question! The short answer is by maintaining backwards compatibility in your schema--it's basically the easiest way to guarantee compatibility. We have warnings…",{"id":229,"text":230},"40791957","It's been great working with you to get things right. Your feedback and bug reports have helped immensely to shape Triplit!",{"commenters":232,"max_depth":18,"maker_replies":219,"first_comment_mins":233,"lifespan_hours":232},52,165,[235,237,241,243,246,248,252,255,258,262,264,266,269,271,274,277,279,280,283,285,287,290,292,295,297,299,300,302,304,307,310,313,316,319,321,324,326,328,330,333,335,337,340,342,344,346,348,353,355,356,358,361,363,365,367,369,371,373,375,378,381,386,387,390,391,395,398,401,405,407,412,413,417,419,421,423,426,429,433,436,438,441,443,447,451,454,457,459,463,465,466],[132,39,47,236,133,39],"project\u002Fmixed\u002Fexecution",[238,39,39,239,240,39],"40798261","commenter\u002Fneutral\u002Fnone","ddrdrck_",[223,39,39,242,11,42],"maker\u002Fneutral\u002Fnone",[244,39,39,239,245,39],"40802159","steida",[170,42,47,247,171,39],"project\u002Fneutral\u002Fnone",[249,42,39,250,251,39],"40796719","other\u002Fneutral\u002Fnone","manmal",[253,42,39,250,254,39],"40800925","eevilspock",[256,42,39,250,257,39],"40798696","rockwotj",[259,42,47,260,261,39],"40798903","project\u002Fneutral\u002Fdesign","robertlagrant",[226,42,39,263,11,42],"maker\u002Fneutral\u002Fdesign",[265,42,47,260,254,39],"40800806",[267,34,39,250,268,39],"40797659","Kiro",[270,34,39,250,261,39],"40797932",[272,34,39,250,273,39],"40799477","breakfastduck",[275,34,39,250,276,39],"40800310","Lalabadie",[109,47,35,278,110,39],"project\u002Fpositive\u002Fnone",[229,47,39,239,11,42],[281,32,47,247,282,39],"40791464","candiddevmike",[121,32,42,284,122,39],"project\u002Fcritical\u002Fnone",[286,32,39,239,11,42],"40791623",[288,32,47,242,289,39],"40791716","andrewmutz",[291,32,39,247,11,42],"40791917",[293,32,39,239,294,39],"40794895","dspillett",[296,32,39,239,261,39],"40798922",[298,32,39,239,294,39],"40812909",[125,32,39,239,126,39],[301,32,39,239,11,42],"40800411",[303,32,42,284,126,39],"40805229",[305,32,39,250,306,39],"40801067","dehrmann",[308,32,39,239,309,39],"40791729","andyp-kw",[311,32,39,239,312,39],"40792845","scosman",[314,32,39,239,315,39],"40798191","franga2000",[317,32,39,239,318,39],"40800469","resoluteteeth",[320,32,39,239,315,39],"40802991",[322,32,47,247,323,39],"40797383","debugnik",[325,32,39,247,11,42],"40791593",[327,32,39,239,282,39],"40791837",[329,32,39,239,11,42],"40791992",[331,32,47,247,332,39],"40792577","pcthrowaway",[334,32,39,239,318,39],"40792641",[336,32,39,239,332,39],"40792953",[338,32,39,239,339,39],"40795141","leni536",[341,32,42,284,126,39],"40798760",[343,32,42,284,306,39],"40801025",[144,35,47,345,145,39],"project\u002Fneutral\u002Fidea",[347,35,39,242,11,42],"40792264",[349,350,47,351,352,39],"40791291",6,"project\u002Fneutral\u002Fperformance","curtisblaine",[354,350,39,351,11,42],"40791406",[151,18,47,345,152,39],[357,18,39,239,11,42],"40794386",[359,18,39,239,360,39],"40795223","OJFord",[362,18,39,239,11,42],"40795294",[364,18,39,250,145,39],"40796886",[105,366,35,278,106,39],8,[368,366,39,239,11,42],"40792696",[162,370,47,247,163,39],9,[372,370,39,247,11,42],"40791981",[374,370,39,250,145,39],"40793684",[376,370,39,250,377,39],"40798638","zknill",[379,370,39,250,380,39],"40804531","ochiba",[382,383,35,384,385,39],"40790608",10,"project\u002Fpositive\u002Fidea","arcticfox",[61,383,39,242,11,42],[388,383,47,247,389,39],"40791569","c01nd01r",[93,383,39,242,11,42],[392,383,39,393,394,39],"40793145","other\u002Fneutral\u002Fidea","wernst",[396,383,39,250,397,39],"40796986","aitchnyu",[399,383,39,250,400,39],"40800961","jamil7",[402,403,47,247,404,39],"40795191",11,"kouohhashi",[87,403,39,406,11,42],"maker\u002Fneutral\u002Fdocs",[408,409,47,410,411,39],"40792456",12,"project\u002Fneutral\u002Fdocs","alex_lav",[81,409,39,406,11,42],[414,415,47,247,416,39],"40793171",13,"syedmsawaid",[418,415,39,406,11,42],"40793218",[177,220,47,420,178,39],"project\u002Fneutral\u002Fprivacy",[422,220,47,406,178,39],"40794818",[424,220,39,425,11,42],"40795053","project\u002Fneutral\u002Fexecution",[188,427,47,428,189,39],15,"project\u002Fmixed\u002Fnone",[430,431,47,345,432,39],"40790812",16,"terpimost",[434,431,39,435,11,42],"40791080","maker\u002Fneutral\u002Fidea",[184,437,47,351,185,39],17,[439,437,39,440,11,42],"40791775","maker\u002Fneutral\u002Fperformance",[442,437,47,351,185,39],"40792121",[444,445,39,250,446,39],"40800229",18,"pantulis",[448,449,47,410,450,39],"40790601",19,"Jayakumark",[452,449,39,453,11,42],"40790657","maker\u002Fpositive\u002Fexecution",[455,449,42,456,450,39],"40791235","project\u002Fcritical\u002Fidea",[458,449,39,435,11,42],"40791473",[460,461,35,278,462,39],"40802738",20,"v4akukdX",[215,464,39,250,216,39],21,[208,33,47,345,209,39],[467,468,39,250,469,39],"40793738",23,"kvonhorn",[471,474],{"id":472,"t":473,"points":366,"comments":47},"38805423",1703860883,{"id":4,"t":12,"points":14,"comments":15},[476,481,486,491,495,500],{"id":477,"name":478,"points":479,"category":480},"40740021","rahulilango.com",1054,"learning_science",{"id":482,"name":483,"points":484,"category":485},"40789672","flipdisc",455,"creative",{"id":487,"name":488,"points":489,"category":490},"40757951","Web Check",411,"dev_tools",{"id":492,"name":493,"points":494,"category":490},"40789353","From dotenv to dotenvx",354,{"id":496,"name":497,"points":498,"category":499},"40802557","alpha.reconquer.online",340,"games",{"id":501,"name":502,"points":503,"category":504},"40805010","Cerebrium voice agent (fastvoiceagent)",315,"ai",false,"v2",{"id":508,"name":5,"line":6,"ai":505,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":30,"top":18,"kw":509,"maker":11,"domain":10,"tier":19,"attempts":34,"strip":510,"url":9,"mix":511,"praise":101,"objection":118,"sub":21},40788648,[24,25,26,27,28],"3033300513001003031133053053033333333153",[32,33,34,35],1794036656716]