[{"data":1,"prerenderedAt":245},["ShallowReactive",2],{"project-22114560":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":43,"post_text":45,"what":46,"said":81,"maker_in_thread":156,"shape":164,"grid":167,"attempts":206,"same_week":207,"maker_shows":236,"maker_hidden":237,"reader_version":238,"card":239},"22114560","Realtime","Realtime Postgres","title","Show HN: Realtime Postgres","https:\u002F\u002Fgithub.com\u002Fsupabase\u002Frealtime","github.com","kiwicopple",1579666531,2020,62,21,953,3028,32,"notable","infrastructure","realtime database middleware","api",[24,25,26,27,28],"postgres","websockets","realtime","change data capture","elixir","debated",0.033,{"positive":32,"neutral":32,"mixed":33,"critical":34},3,0,4,10,{"idea":37,"docs":39,"execution":40,"privacy":41},{"positive":38,"critical":33},2,{"positive":33,"critical":33},{"positive":33,"critical":38},{"positive":42,"critical":38},1,[33,44,33,33,33,32,33,42,33,42,33,32,33,42,33,44,44,33,42,33,32],5,null,{"problem":47,"audience":45,"pricing":45,"motivation":54,"time_to_build":45,"stack":58,"openness":78,"stage":79,"team_size":80},{"value":48,"source":49,"evidence":50},"Getting realtime database change notifications without using Firebase Firestore","maker",[51],{"id":52,"by":11,"text":53},"22114603","Hey HN, this is an Elixir server (Phoenix) that allows you to listen to changes in your database via websockets. Basically the Phoenix server 1. listens to PostgreSQL's native…",{"value":55,"source":49,"evidence":56},"Replace Firebase Firestore for realtime messaging inside the maker's apps",[57],{"id":52,"by":11,"text":53},[59,63,67],{"value":60,"source":49,"evidence":61},"Elixir",[62],{"id":52,"by":11,"text":53},{"value":64,"source":49,"evidence":65},"Phoenix",[66],{"id":52,"by":11,"text":53},{"value":68,"source":69,"evidence":70},"PostgreSQL logical decoding (pgoutput)","commenter",[71,75],{"id":72,"by":73,"text":74},"22115752","ahachete","Just a quick precision, if I'm not mistaken: this project is not decoding the (version, architecture dependent) WAL stream as it seems to be implied by…",{"id":76,"by":11,"text":77},"22115836","Yes you're right about the logical decoding, thanks for clarifying and I'll make sure I update the docs. For Supabase (when we finally have sign ups), the idea is that you can…","open_source","beta","team",{"praise":82,"objections":94,"requests":111,"questions":133,"alternatives":139},[83],{"value":84,"source":69,"evidence":85},"Good idea with real utility, Postgres as realtime backend",[86,90],{"id":87,"by":88,"text":89},"22115593","1_over_n","This is a great idea, lovely to see something with so much potential utility being turned into a functional product.",{"id":91,"by":92,"text":93},"22114899","shadowsun7","I know I’m late to the party, but I’ve recently come around to the idea of using apps that sit in front of Postgres to provide an API for free. This seems like an amazing…",[95,104],{"value":96,"source":69,"evidence":97},"Exposing the database connection string or public database is a security risk",[98,101],{"id":99,"by":73,"text":100},"22120263","> For the BYO - all we need is the database connection string. Then this means that the database should be publicly accessible. Many would not accept this from a security…",{"id":102,"by":73,"text":103},"22118595","Great. May you ellaborate on the BYO concept? How do you bring it? Or you will just ask Postgres owners to install an agent which will then connect from customers' premises to…",{"value":105,"source":69,"evidence":106},"Managed Postgres providers may not expose WAL or logical decoding",[107],{"id":108,"by":109,"text":110},"22115856","sheerun","As far as I am aware none of popular managed PostgreSQL providers provide access to WAL",[112,126],{"value":113,"source":69,"evidence":114},"Application-level access control per user, like Firebase security rules",[115,119,123],{"id":116,"by":117,"text":118},"22120957","jatins","Ah, okay! My question more on the lines of application level access control. As in how to ensure one user can only modify certain data in a table? For example assuming a social…",{"id":120,"by":121,"text":122},"22124880","mildmustard","Yea, I'd be really interested in this. Part of using Firebase Realtime DB was that you can use Firebase Auth with it for access control and set rules on the database based on it.",{"id":124,"by":117,"text":125},"22119799","Interesting project! One question: Does this have any access control built in? Otherwise, anyone could change anything in database from browser.",{"value":127,"source":69,"evidence":128},"Filtering on subscriptions for specific queries",[129],{"id":130,"by":131,"text":132},"22115969","numtel","I got around the 8000 byte limit by sending multiple notifications in this NPM package: https:\u002F\u002Fgithub.com\u002Fnumtel\u002Fpg-live-select\u002Fblob\u002Fmaster\u002Flib\u002Ftrigger.tpl.sql#L42 Reading the…",[134],{"value":135,"source":69,"evidence":136},"How does the hosted service connect to a user's database (BYO connection)?",[137,138],{"id":72,"by":73,"text":74},{"id":102,"by":73,"text":103},[140,147,152],{"value":141,"source":69,"evidence":142},"PostgREST",[143,144],{"id":91,"by":92,"text":93},{"id":145,"by":11,"text":146},"22115409","I really love PostgREST. This was my early approach to realtime, using PostgREST for CRUD operations: https:\u002F\u002Fpaul.copplest.one\u002Fblog\u002Fnimbus-tech-2019-04.html#tech-stack Not much…",{"value":148,"source":49,"evidence":149},"Firebase Firestore \u002F Realtime Database",[150,151],{"id":52,"by":11,"text":53},{"id":120,"by":121,"text":122},{"value":153,"source":69,"evidence":154},"pg-live-select",[155],{"id":130,"by":131,"text":132},{"comments":157,"answered":44,"key":158},9,[159,160,161],{"id":52,"text":53},{"id":145,"text":146},{"id":162,"text":163},"22116083","That's quite clever, I never actually thought of that. Guessing from your username, this is your package? It's very cool Yes, we will allow filtering on the listener, just…",{"commenters":157,"max_depth":165,"maker_replies":157,"first_comment_mins":165,"lifespan_hours":166},6,24,[168,170,172,174,176,177,179,180,182,184,186,189,190,192,193,195,197,198,201,202,204],[52,33,33,169,11,42],"project\u002Fneutral\u002Fidea",[91,33,44,171,92,33],"project\u002Fpositive\u002Fidea",[145,33,33,173,11,42],"project\u002Fneutral\u002Fexecution",[130,33,33,175,131,33],"commenter\u002Fneutral\u002Fnone",[162,33,33,173,11,42],[72,42,32,178,73,33],"project\u002Fneutral\u002Fdocs",[76,42,33,169,11,42],[102,42,42,181,73,33],"project\u002Fcritical\u002Fexecution",[183,42,33,173,11,42],"22120068",[99,42,42,185,73,33],"project\u002Fcritical\u002Fprivacy",[187,42,33,188,11,42],"22120589","project\u002Fneutral\u002Fprivacy",[124,38,32,188,117,33],[191,38,33,188,11,42],"22120162",[116,38,42,185,117,33],[194,38,33,188,11,42],"22123955",[120,38,44,196,121,33],"project\u002Fpositive\u002Fprivacy",[87,32,44,171,88,33],[199,34,33,175,200,33],"22117142","zubairq",[108,44,42,181,109,33],[203,44,33,173,11,42],"22116042",[205,44,32,173,73,33],"22118610",[],[208,213,218,222,227,231],{"id":209,"name":210,"points":211,"category":212},"22063744","No-Bullshit Games",520,"games",{"id":214,"name":215,"points":216,"category":217},"22073037","ESQLate",505,"dev_tools",{"id":219,"name":220,"points":221,"category":217},"22081419","OneDev",459,{"id":223,"name":224,"points":225,"category":226},"22091603","A set of standard document templates",433,"productivity",{"id":228,"name":229,"points":230,"category":226},"22065333","Screenshot Hero",429,{"id":232,"name":233,"points":234,"category":235},"22077052","sixty5o2",230,"hardware",13,false,"v2",{"id":240,"name":5,"line":6,"ai":237,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":241,"top":18,"kw":242,"maker":11,"domain":10,"tier":19,"attempts":33,"strip":243,"url":9,"mix":244,"praise":84,"objection":96,"sub":21},22114560,0.03,[24,25,26,27,28],"050003010103010550103",[32,32,33,34],1794036585721]