[{"data":1,"prerenderedAt":318},["ShallowReactive",2],{"project-31164799":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":5,"maker":10,"posted_at":11,"year":12,"points":13,"comments":14,"rank_in_year":15,"shown_in_year":16,"top":17,"tier":18,"category":19,"subcategory":20,"format":21,"keywords":22,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":17,"aspects":33,"strip":41,"post_text":44,"what":45,"said":99,"maker_in_thread":192,"shape":200,"grid":203,"attempts":281,"same_week":282,"maker_shows":43,"maker_hidden":311,"reader_version":312,"card":313},"31164799","thin.dev","thin.dev, back end for making realtime, typesafe React Apps","title","Show HN: thin.dev, back end for making realtime, typesafe React Apps","https:\u002F\u002Fthin.dev\u002F","_query",1650956489,2022,147,33,409,2570,16,"notable","infrastructure","backend as a service","library",[23,24,25,26,27],"realtime backend","postgres","react backend","optimistic updates","firebase alternative","mixed",-0.29,{"positive":31,"neutral":32,"mixed":31,"critical":32},1,7,{"pricing":34,"idea":36,"design":38,"performance":39,"docs":40},{"positive":35,"critical":31},0,{"positive":31,"critical":37},4,{"positive":35,"critical":35},{"positive":35,"critical":31},{"positive":35,"critical":31},[35,42,35,31,35,43,35,42,35,31,35,31,35,31,42,35,35,42,42,35,31,35,42,35,42,35,42,35,31,35,35,31,35],3,5,null,{"problem":46,"audience":53,"pricing":62,"motivation":44,"time_to_build":44,"stack":72,"openness":97,"stage":98,"team_size":97},{"value":47,"source":48,"evidence":49},"Frontend developers must build REST APIs and manage client state by hand","maker",[50],{"id":51,"by":10,"text":52},"31165285","Hey there, Founder of digitally induced here. Happy to share what've been working on with Thin Backend over the last months. Thin is a version of the IHP Framework…",{"value":54,"source":55,"evidence":56},"Frontend and full-stack developers building realtime apps","inferred",[57,58],{"id":51,"by":10,"text":52},{"id":59,"by":60,"text":61},"31165404","montmorency88","I've been playing with the Thin API and prototyping some small applications (music streaming and comms type stuff). It seems like one of the most production ready ways of…",{"value":63,"source":48,"evidence":64},"Free plan for non-commercial use; paid plan $10 plus $2 per GB of traffic",[65,68],{"id":66,"by":10,"text":67},"31165883","You can find our pricing here https:\u002F\u002Fthin.dev\u002Fpricing If you're not using the free plan, you're paying 10$ + (2$ * GB of data traffic). This is likely a bit cheaper than…",{"id":69,"by":70,"text":71},"31166206","kaeruct","There's a typo on the pricing page: ``` Free For personal, \"non-commerical\" use ```",[73,77,81,87,91],{"value":74,"source":48,"evidence":75},"Haskell",[76],{"id":51,"by":10,"text":52},{"value":78,"source":48,"evidence":79},"IHP Framework",[80],{"id":51,"by":10,"text":52},{"value":82,"source":48,"evidence":83},"PostgreSQL",[84],{"id":85,"by":10,"text":86},"31167509","Thanks for your input! In the end every Thin app is just a postgres database. So if you want to move to a different backend, you could replace Thin with a handcoded backend…",{"value":88,"source":48,"evidence":89},"React",[90],{"id":51,"by":10,"text":52},{"value":92,"source":48,"evidence":93},"Svelte",[94],{"id":95,"by":10,"text":96},"31166554","Yes, Svelte is already supported https:\u002F\u002Fthin.dev\u002Fdocs\u002Fsvelte We also have an integration for ReScript https:\u002F\u002Fthin.dev\u002Fdocs\u002Frescript More to follow in the future","unknown","launched",{"praise":100,"objections":116,"requests":142,"questions":156,"alternatives":172},[101,110],{"value":102,"source":103,"evidence":104},"Simple high-level APIs reduce boilerplate and speed development","commenter",[105,106],{"id":59,"by":60,"text":61},{"id":107,"by":108,"text":109},"31165527","leohonexus","Saw the demo - and love the simplicity of backend calls. It makes a lot of sense for full-stack devs to increase development velocity, but how do you see this fit in with teams…",{"value":111,"source":48,"evidence":112},"Optimistic updates and low latency improve user experience",[113],{"id":114,"by":10,"text":115},"31165760","Thanks for the input! Thin can quickly be integrated in an existing stack as long as you're using postgres. The value proposition with an existing backend can be: Improved UX…",[117,131,138],{"value":118,"source":103,"evidence":119},"Lock-in to a third-party backend and Haskell stack",[120,124,128],{"id":121,"by":122,"text":123},"31167173","ki_","Seems great for simple applications. But i will always prefer choosing every tool myself. I want to be able to choose which DB i use, which backend language, which frontend…",{"id":125,"by":126,"text":127},"31167824","tomatowurst","I might be wrong here but it just dissecting this two principles I can see few issues: ``` All data is realtime and reflects the latest database state: Local state management is…",{"id":129,"by":126,"text":130},"31168042","> Do you think making it more open source would solve the issue? No is not what I'm arguing for here but you highlighted my concerns here, I see two points of failures\u002Fblackboxes…",{"value":132,"source":103,"evidence":133},"Pricing is not clearly cheaper than Firebase for small apps",[134],{"id":135,"by":136,"text":137},"31166181","RayVR","I think you have to specify the use case. I have an app that I built which has a couple hundred users. I pay just a couple dollars per month to use firebase firestore,…",{"value":139,"source":103,"evidence":140},"Local state management is not as hard as claimed",[141],{"id":125,"by":126,"text":127},[143,150],{"value":144,"source":103,"evidence":145},"Support for more frameworks beyond React",[146],{"id":147,"by":148,"text":149},"31166515","erokar","Are there any plans to decouple this from React, either by making it framework-agnostic, or by adding support for other frameworks like e.g. Svelte and Vue?",{"value":151,"source":103,"evidence":152},"Open sourcing more of the system",[153],{"id":154,"by":10,"text":155},"31167946","Do you think making it more open source would solve the issue? Thin is mostly based on IHP DataSync. You can the source code here…",[157,164],{"value":158,"source":103,"evidence":159},"How pricing compares to Firebase",[160],{"id":161,"by":162,"text":163},"31165834","alephnan","How does pricing compare to Firebase which lets frontend devs think in terms of modifying their JSON data without thinking about the REST equivalent?",{"value":165,"source":103,"evidence":166},"How it differs from Blitz.js, Supabase and Firebase",[167,168],{"id":107,"by":108,"text":109},{"id":169,"by":170,"text":171},"31165490","kevsim","Looks cool! How does this compare to something like Firebase\u002FSupabase?",[173,177,181,185],{"value":174,"source":103,"evidence":175},"Firebase",[176],{"id":161,"by":162,"text":163},{"value":178,"source":103,"evidence":179},"Supabase",[180],{"id":169,"by":170,"text":171},{"value":182,"source":103,"evidence":183},"Blitz.js",[184],{"id":107,"by":108,"text":109},{"value":186,"source":103,"evidence":187},"RxDB\u002FPouchDB with Couchbase",[188],{"id":189,"by":190,"text":191},"31171940","hunterb123","Since this highlights the goal of making database state the app state, how does this compare to going the RxDB\u002FPouchDB syncing to Couchbase route?",{"comments":193,"answered":43,"key":194},15,[195,196,197],{"id":51,"text":52},{"id":66,"text":67},{"id":198,"text":199},"31166371","Thanks for your honest feedback. Our pricing still might change a bit in the future. I'm with you that with a couple hundred users it shouldn't cost more than 5-10$ to host this…",{"commenters":17,"max_depth":43,"maker_replies":193,"first_comment_mins":201,"lifespan_hours":202},99,12,[204,206,208,209,211,213,214,217,220,222,224,225,226,227,228,230,232,235,237,241,244,249,252,254,256,258,261,264,266,269,271,275,278],[51,35,35,205,10,31],"project\u002Fpositive\u002Fidea",[161,35,42,207,162,35],"project\u002Fneutral\u002Fpricing",[66,35,35,207,10,31],[135,35,31,210,136,35],"project\u002Fcritical\u002Fpricing",[198,35,35,212,10,31],"maker\u002Fneutral\u002Fpricing",[59,31,43,205,60,35],[215,31,35,216,10,31],"31165891","maker\u002Fpositive\u002Fnone",[107,218,42,219,108,35],2,"project\u002Fneutral\u002Fidea",[114,218,35,221,10,31],"project\u002Fpositive\u002Fperformance",[121,42,31,223,122,35],"project\u002Fcritical\u002Fidea",[85,42,35,219,10,31],[125,37,31,223,126,35],[154,37,35,219,10,31],[129,37,31,223,126,35],[169,43,42,229,170,35],"project\u002Fneutral\u002Fnone",[231,43,35,219,10,31],"31165776",[233,43,35,234,170,35],"31166516","other\u002Fneutral\u002Fnone",[189,236,42,219,190,35],6,[238,32,42,239,240,35],"31165473","project\u002Fmixed\u002Fdesign","busymom0",[242,32,35,243,10,31],"31165488","maker\u002Fpositive\u002Fdesign",[245,246,31,247,248,35],"31166697",8,"project\u002Fcritical\u002Fperformance","vinnymac",[250,246,35,251,10,31],"31166717","maker\u002Fneutral\u002Fperformance",[147,253,42,219,148,35],9,[95,253,35,255,10,31],"project\u002Fneutral\u002Fdocs",[257,253,42,255,148,35],"31166688",[259,253,35,260,10,31],"31166732","maker\u002Fneutral\u002Fdocs",[262,253,42,255,263,35],"31166698","richeyryan",[265,253,35,260,10,31],"31167599",[69,267,31,268,70,35],10,"project\u002Fcritical\u002Fdocs",[270,267,35,260,10,31],"31166226",[272,273,35,234,274,35],"31166402",11,"warkanlock",[276,202,31,223,277,35],"31166280","PetahNZ",[279,202,35,280,10,31],"31166390","maker\u002Fneutral\u002Fnone",[],[283,288,293,298,302,306],{"id":284,"name":285,"points":286,"category":287},"31137324","This AI Does Not Exist",434,"ai",{"id":289,"name":290,"points":291,"category":292},"31185121","Pushy",329,"creative",{"id":294,"name":295,"points":296,"category":297},"31154567","Lists.sh",271,"productivity",{"id":299,"name":300,"points":301,"category":19},"31170280","Caddy",269,{"id":303,"name":304,"points":305,"category":297},"31123522","nosleep.page",252,{"id":307,"name":308,"points":309,"category":310},"31160302","Sqwok",218,"consumer_social",false,"v2",{"id":314,"name":5,"line":6,"ai":311,"cat":19,"year":12,"points":13,"comments":14,"rec":28,"s":29,"top":17,"kw":315,"maker":10,"domain":5,"tier":18,"attempts":35,"strip":316,"url":9,"mix":317,"praise":102,"objection":118,"sub":20},31164799,[23,24,25,26,27],"030105030101013003301030303010010",[31,32,31,32],1794036619567]