5 ms·
Hey HN, Supabase is an open source Firebase alternative. We're building the features of Firebase using enterprise-grade open source tools. We're particularly fo
by kiwicopple 6y ago
Hey HN, Supabase is an open source Firebase alternative. We're building the features of Firebase using enterprise-grade open source tools. We're particularly focused on scalability. We take proven tools like Postgres, and we make them as easy to use as Firebase.
Supabase had an Alpha launch [1] six months ago. This time we're more stable and feature-full. For the past 2 months we've run benchmarks [2] and security audits and we're confident to take on production workloads.
Our current feature-set includes a realtime engine [3] on top of Postgres, auto-generated APIs using PostgREST [4], and Auth with Row Level Security, OAuth, and magic links [5] . We have a full dashboard, with built-in SQL Editor (full Monaco editor) and a Table View (like Airtable) [6].
Next we are focused Storage & Functions, as well as the local development experience - making sure developers can go quickly from dev to prod.
A few of the team will be here to answer any questions - my cofounder @awalias and @steve-chavez from PostgREST, @inian, and @1_over_n
[1] Alpha launch - https://news.ycombinator.com/item?id=23319901 https://news.ycombinator.com/item?id=23319901
[2] Benchmarks - https://github.com/supabase/benchmarks https://github.com/supabase/benchmarks
[3] Elixir Realtime engine - https://github.com/supabase/realtime https://github.com/supabase/realtime
[4] PostgREST - http://postgrest.org/ http://postgrest.org/
[5] Auth: https://supabase.io/docs/guides/auth https://supabase.io/docs/guides/auth
[6] Dashboard: https://supabase.io/docs/guides/database https://supabase.io/docs/guides/database
- nwienert 6y agoReally nicely done beta page, and the product is something that's needed to exist for a long time now. I remember talking with the RethinkDB guys before they closed and being worried they were making a bad decision not getting a cloud service in place earlier, so good on doing that. I have two points of feedback: 1. How open source is it? I didn't get a great feel from the beta page, but will you make it as easy as setting up a docker container or helm chart? I'd suggest that if you want to align incentives as best as possible, consider one of those new-fangled OSS licenses that has the most recent updates closed-source, then auto-open sourcing after a time period. That way you can give away a really nice, well-packaged version for free, not worry about Amazon, and still capture a big chunk of revenue from bigger clients who need the newest. 2. What are your plans/thoughts on denormalization [0]? Liron is a friend of mine and we've had interesting discussions on this since way back, I'd encourage you all to reach out to him, and consider it strongly. The "holy grail" for many years now has been obvious: a subscribable DB engine that handles denormalization. I hope you guys achieve it. Good luck! [0] https://lironshapira.medium.com/data-denormalization-is-broken-7b697352f405 https://lironshapira.medium.com/data-denormalization-is-brok...
- kiwicopple 6y agoThese are great questions. > will you make it as easy as setting up a docker container or helm chart? Yes, likely docker-compose in the short term (for our "local emulator"), and then something more prod-friendly later. Licensing is always a tough decision - we build client libraries for every tool we use, which are MIT licensed. Tools we build ourselves (like the Realtime server), are licensed under Apache 2.0. As you point out, we've started with our hosted platform because we feel this is important (as a business). This par is not yet public (also for security) and we may have to license it with a BSD license when we do open source it. > a subscribable DB engine that handles denormalization One of my favourite topics, and something we've been thinking about for months. It's incredibly hard to solve, especially when you add in Row Level Security and conflict resolution. Our current thinking is some sort of client store, using CRDTs that infer types from the database. We have some ideas for this but it's very early days. I'd love to talk to Liron - I'll reach out.
- robertlagrant 6y agoJust make sure cloud companies can't just host your solution and make easy money from it. The Timescale licence is worth a look.
- sixdimensional 6y agoI like the direction you guys seem to be taking here with Supabase. Regarding the comment about subscription-based DB engine and denormalization, I posted this [1] on the post about Materialize although I don't think anyone read it. I am right there that there is a new unified data architecture evolving and I think it is difficult but doable. CQRS and event-sourcing are core elements and the decoupling of the database continues. I also believe Flow Based Programming [2] and reactive programming (observables on top of streams of events) are other key concepts. I've worked on federated database query engines and it turns out that federation has some relationships to this problem. I recently saw this article about Netflix's approach to federated GraphQL (which to me feels like API composition) and found it interesting [3]. I don't know if anything of this helps you but hope it might :) I don't claim to be an expert here but if you're interested in talking more, my email's in my profile. [1] https://news.ycombinator.com/item?id=25285890 https://news.ycombinator.com/item?id=25285890 [2] https://wiki.c2.com/?FlowBasedProgramming https://wiki.c2.com/?FlowBasedProgramming [3] https://netflixtechblog.com/how-netflix-scales-its-api-with-graphql-federation-part-1-ae3557c187e2 https://netflixtechblog.com/how-netflix-scales-its-api-with-...
- michelpp 6y agoCongratulations! As a long time fan of PostgREST I love seeing a well thought out product take flight and support their community at the same time by openly hiring key open source members who have done great work.
- kiwicopple 6y agoWe're huge fans of PostgREST, and Steve has been amazing - building in performance and security improvements as fast as we can identify them
- swyx 6y agoexcited about Storage and Functions! for storage, a common pain point is whether or not images (or video) hosted in storage will be CDNified for fast delivery. my dream wish is that there'd be an easy option to specify whether an image should be put on that optimized path, so that when i access it i know whether i'm getting the CDN or the origin version. itd also be nice to do things like specify dimensions or compression quality (basically making it an image optimizing CDN) for functions - both scheduling and durable functions would be cool :) both are tricky things to do right for local dev. wishing you all the best!!
- kiwicopple 6y agoall great ideas swyx. We'll start with something basic for storage (probably min.io), but hoping to solve some of these more advanced scenarios once we're up and running. > scheduling and durable functions would be cool :) agreed!
- Scarbutt 6y agoThe "Stripe SaaS starter" example seems to be missing.
- kiwicopple 6y agothanks for the heads-up - will fix. It's on Thor's github right now: https://github.com/thorwebdev/nextjs-subscription-payments https://github.com/thorwebdev/nextjs-subscription-payments
- mstade 6y agoI saw Supabase mentioned in another thread and signed up for the alpha. It's really cool stuff, kudos! We are currently writing an application where we already have auth set up using AWS Cognito. I haven't been able to find any documentation about it, but is it possible for us to keep using Cognito while still integrating with Supabase and taking advantage of the very nice row level security features, or would we essentially have to roll over to use Supabase for auth as well? Also, let me just say that it's a huge selling point for us that you're running with Postgres, thank you!
- kiwicopple 6y agothanks for signing up so early mstade > is it possible for us to keep using Cognito while still integrating with Supabase and taking advantage of the very nice row level security features Yes, this should be possible, as long as the JWT secret is the same, so that your database (and PostgREST) can determine the user. We can help to figure this out if you want - perhaps in a github discussion? https://github.com/supabase/supabase/discussions https://github.com/supabase/supabase/discussions
- mstade 6y agoAbsolutely, many thanks for the swift response and the relevant link! Keep up the great work!
- johnx123-up 6y agohttps://github.com/supabase/realtime https://github.com/supabase/realtime looks very interesting. Can this be used to replace Debezium & Kafka for syncing Elasticsearch?
- kiwicopple 6y agoYes, it could be a replacement - we will add "connectors" to tools like kafka/elastic (and other systems) in the future
- hamandcheese 6y agoThis looks really cool, but one thing I can't find an answer to is: how do I manage database migrations from version control?
- dcsan 6y agoGood question! not OP but one of the projects here provides a full PG api if you are self-hosting. Presumably the plan is to provide a similar but secure API for supabase hosted instances in future? https://github.com/supabase/pg-api https://github.com/supabase/pg-api
- kiwicopple 6y agoYes, you're right. Eventually we will be adding migrations and a better local dev experience. For now you can use any tool you'd usually use with postgre - dbmate, seqlize etc