[{"data":1,"prerenderedAt":255},["ShallowReactive",2],{"maker-kiwicopple":3},[4,34,57,72,89,107,126,149,172,191,207,226,243],{"id":5,"name":6,"line":7,"ai":8,"cat":9,"year":10,"points":11,"comments":12,"rec":13,"s":14,"top":15,"kw":16,"maker":22,"domain":23,"tier":24,"attempts":25,"strip":26,"url":27,"mix":28,"praise":31,"objection":32,"sub":33},22114560,"Realtime","Realtime Postgres",false,"infrastructure",2020,62,21,"debated",0.03,32,[17,18,19,20,21],"postgres","websockets","realtime","change data capture","elixir","kiwicopple","github.com","notable",0,"050003010103010550103","https:\u002F\u002Fgithub.com\u002Fsupabase\u002Frealtime",[29,29,25,30],3,4,"Good idea with real utility, Postgres as realtime backend","Exposing the database connection string or public database is a security risk","realtime database middleware",{"id":35,"name":36,"line":37,"ai":8,"cat":38,"year":10,"points":39,"comments":29,"rec":40,"s":41,"top":42,"kw":43,"maker":22,"domain":23,"tier":49,"attempts":50,"strip":51,"url":52,"mix":53,"praise":55,"objection":-1,"sub":56},22216348,"PostgREST","An ORM-Like JavaScript Client for PostgREST","languages",14,"quiet",null,67,[44,45,46,47,48],"postgrest","javascript","orm","postgresql","rest api","shown",2,"050","https:\u002F\u002Fgithub.com\u002Fsupabase\u002Fpostgrest-js",[54,25,25,25],1,"Commenter found the library very useful","javascript client library",{"id":58,"name":59,"line":60,"ai":8,"cat":61,"year":10,"points":62,"comments":30,"rec":40,"s":41,"top":63,"kw":64,"maker":22,"domain":23,"tier":49,"attempts":25,"strip":67,"url":68,"mix":69,"praise":-1,"objection":70,"sub":71},22777614,"Supabase Slack clone","Realtime Slack clone using Postgres","dev_tools",29,48,[17,19,65,66],"slack clone","nextjs","0030","https:\u002F\u002Fgithub.com\u002Fsupabase\u002Fsupabase\u002Fblob\u002Fmaster\u002Fexamples\u002Fslack-clone-basic\u002FREADME.md",[25,25,54,25],"API is more verbose than Firebase","example app",{"id":73,"name":74,"line":75,"ai":8,"cat":61,"year":76,"points":77,"comments":54,"rec":40,"s":41,"top":78,"kw":79,"maker":22,"domain":84,"tier":49,"attempts":25,"strip":85,"url":86,"mix":87,"praise":-1,"objection":-1,"sub":88},25882742,"Repository.surf","see metrics for all repositories in a GitHub org",2021,15,64,[80,81,82,83],"github metrics","github org insights","repository stars","issue burndown","repository.surf","0","https:\u002F\u002Frepository.surf",[25,25,25,25],"github org analytics",{"id":90,"name":91,"line":92,"ai":8,"cat":93,"year":76,"points":94,"comments":30,"rec":40,"s":41,"top":95,"kw":96,"maker":22,"domain":23,"tier":49,"attempts":25,"strip":101,"url":102,"mix":103,"praise":104,"objection":105,"sub":106},27002196,"Stripe Sync Engine","Sync Stripe to Postgres","data",11,75,[97,98,99,100],"stripe postgres sync","stripe webhooks","stripe data warehouse","postgres replication","0500","https:\u002F\u002Fgithub.com\u002Fsupabase\u002Fstripe-sync-engine",[54,25,25,25],"Real-time updates via webhooks are an advantage over batch tools","Extra maintenance effort compared with Singer plus a cron job","database sync",{"id":108,"name":109,"line":110,"ai":8,"cat":9,"year":76,"points":111,"comments":112,"rec":113,"s":114,"top":115,"kw":116,"maker":22,"domain":23,"tier":24,"attempts":50,"strip":121,"url":122,"mix":123,"praise":-1,"objection":124,"sub":125},28430439,"Postgres","Postgres Docker image with common extensions",130,28,"curious",-0.2,16,[17,117,118,119,120],"docker image","postgres extensions","postgis","pg_cron","3303100033330011133000003003","https:\u002F\u002Fgithub.com\u002Fsupabase\u002Fpostgres",[25,94,25,30],"Running multiple processes in one container is poor practice and hard to health-check","database docker image",{"id":127,"name":128,"line":129,"ai":8,"cat":93,"year":130,"points":131,"comments":132,"rec":13,"s":133,"top":134,"kw":135,"maker":22,"domain":140,"tier":141,"attempts":25,"strip":142,"url":143,"mix":144,"praise":146,"objection":147,"sub":148},33931971,"Pg_CRDT","an experimental CRDT extension for Postgres",2022,296,38,-0.02,6,[136,17,137,138,139],"crdt","yjs","automerge","offline sync","supabase.com","legend","05300500510000000000000003100010350500","https:\u002F\u002Fsupabase.com\u002Fblog\u002Fpostgres-crdt",[145,29,25,29],5,"Support for both Yjs and Automerge is the right direction","Postgres MVCC may struggle with frequent CRDT updates","postgres extension",{"id":150,"name":151,"line":152,"ai":8,"cat":61,"year":153,"points":154,"comments":155,"rec":13,"s":156,"top":157,"kw":158,"maker":22,"domain":140,"tier":49,"attempts":25,"strip":164,"url":165,"mix":166,"praise":169,"objection":170,"sub":171},34695306,"Supabase Clippy","ChatGPT for Supabase Docs",2023,37,12,-0.04,41,[159,160,161,162,163],"chatgpt","supabase docs","pgvector","embeddings","documentation search","0050150130310330530500051001153330330030","https:\u002F\u002Fsupabase.com\u002Fblog\u002Fchatgpt-supabase-docs",[167,155,25,168],8,7,"Useful idea and clever name","Keyboard shortcut cmd+\u002F does not work on non-US layouts or without cmd key","documentation assistant",{"id":173,"name":174,"line":175,"ai":8,"cat":9,"year":153,"points":176,"comments":177,"rec":113,"s":178,"top":39,"kw":179,"maker":22,"domain":23,"tier":24,"attempts":25,"strip":184,"url":185,"mix":186,"praise":188,"objection":189,"sub":190},35501718,"Supavisor","a Postgres connection pooler written in Elixir",149,49,0.09,[180,181,21,182,183],"postgres connection pooler","pgbouncer alternative","multi-tenant postgres","connection pooling","3000030000003005333333051333550500013333","https:\u002F\u002Fgithub.com\u002Fsupabase\u002Fsupavisor",[134,187,25,29],18,"Elixir and BEAM suit this kind of tool well.","Lacks routing of reads and writes across nodes.","connection pooler",{"id":192,"name":193,"line":194,"ai":8,"cat":9,"year":153,"points":195,"comments":145,"rec":40,"s":41,"top":196,"kw":197,"maker":22,"domain":23,"tier":49,"attempts":25,"strip":202,"url":203,"mix":204,"praise":205,"objection":-1,"sub":206},38592314,"supabase-grafana","Official Grafana App for Supabase",13,68,[198,199,200,201],"grafana","prometheus","postgres monitoring","supabase metrics","05050","https:\u002F\u002Fgithub.com\u002Fsupabase\u002Fsupabase-grafana",[50,25,25,25],"Useful for teams wanting a Grafana dashboard for Supabase metrics","monitoring dashboards",{"id":208,"name":209,"line":210,"ai":8,"cat":93,"year":211,"points":212,"comments":213,"rec":113,"s":214,"top":30,"kw":215,"maker":22,"domain":23,"tier":141,"attempts":25,"strip":220,"url":221,"mix":222,"praise":223,"objection":224,"sub":225},40028111,"index advisor","PostgreSQL index advisor",2024,417,97,0.02,[216,217,218,219],"postgres index advisor","hypopg","pg_stat_statements","postgresql indexes","5000010311030000201000003135335330000005","https:\u002F\u002Fgithub.com\u002Fsupabase\u002Findex_advisor",[145,187,25,168],"Useful tool; Supabase team delivers","Automatic indexing ignores write costs and tradeoffs","database index advisor",{"id":227,"name":228,"line":228,"ai":8,"cat":93,"year":211,"points":229,"comments":230,"rec":113,"s":231,"top":77,"kw":232,"maker":22,"domain":23,"tier":24,"attempts":25,"strip":237,"url":238,"mix":239,"praise":241,"objection":242,"sub":233},40514089,"Serverless Postgres",159,61,-0.12,[233,17,234,235,236],"serverless postgres","scale to zero","s3 storage","orioledb","1313010300000331000330103101000030513550","https:\u002F\u002Fgithub.com\u002Fkiwicopple\u002Fserverless-postgres",[29,240,25,167],17,"Nifty idea conceptually","Not truly serverless by common definition",{"id":244,"name":128,"line":245,"ai":8,"cat":93,"year":246,"points":94,"comments":30,"rec":40,"s":41,"top":247,"kw":248,"maker":22,"domain":23,"tier":49,"attempts":25,"strip":251,"url":252,"mix":253,"praise":254,"objection":-1,"sub":148},43655920,"CRDTs in Postgres Using Automerge",2025,71,[136,17,138,249,250],"realtime sync","conflict resolution","3005","https:\u002F\u002Fgithub.com\u002Fsupabase\u002Fpg_crdt",[54,54,25,25],"Efficient in-memory merging via expanded datum",1793991246256]