________________________________________________________________________________
We did a write-up on the tech stack and some of the approaches we considered for sharing code between our Platform and the Self-Hosted versions here:
https://supabase.com/blog/2021/11/30/supabase-studio
We aim to get these to parity with each other, excepting some billing/server management features.
A big shout out to Sentry who do served as a good model for us (
https://develop.sentry.dev/sentry-vs-getsentry/
)
Any more details you are willing to share on how the shared code is imported and extended on the platform side?
We have a similar split, and currently use lerna to publish a collection of individual packages that get imported and extended on the other side.
we still have a lot of cleanup before I'd use this as a model, but the rough strategy we employed is:
1. Hide sensitive code behind an API 2. Open source everything else (regardless of Platform/Self-Hosted 3. Use env vars and feature flags to determine what is visually displayed
The docker-compose for self-hosted is the same stack as every project on the Platform which helps.
You, Ant and the others are killing it. Looking forward to the security updates coming to Realtime. I know that was a blocker for myself and a few others.
thanks for the kind words. We just released realtime updates (about 20 mins ago) - we have a few launches this week and that's the one I'm most excited about
Link:
https://supabase.com/blog/2021/12/01/realtime-row-level-secu...
How long until we get functions running? Absolutely love the product btw, can't make the switch until we have functions tho :)
tbd on the timeline here - we know that there are already platforms (like Vercel, Netlify, Deno, CF Workers) doing amazing work here, so we're spending more effort on the under-served problems.
Would love to know your use-case, or why you'd prefer Supabase as a Function provider over one of the existing players? It's helpful for us to design the system around any weaknesses/difficulties you're facing
For me, the BaaS philosophy is to simplify development by using an "all-batteries-included" platform. I know some people use Supabase just for the free postgres or other things, but I don't like to use multiple providers for a single simple project. That's why it makes no sense to me currently to use Supabase until there is no functions.
makes sense, and seems to be the most common reason when we ask (along with using other/preferred languages). thanks for taking the time to share
Been using Supabase for a while and love it. It’s got that feel of a really well thought out service where things just work how you’d want it to and new features arrive that you actually want and make life easier. It’s one of a handful of companies I saw and immediately wished I could invest in.
This announcement doesn’t really matter to me since I really like having a hosted service. But it’s good to know it’s future proof - ie if Supabase go out of business or a project takes off and I want to self host with all the good stuff then I can.
> _But it’s good to know it’s future proof - ie if Supabase go out of business or a project takes off and I want to self host with all the good stuff then I can._
Until you dig into the code base and realise that self-hosting isn't something that is sustainable, at all, the minute you need a bug fixed, or run into a limitation, without the original authors or solution partners around to support your specific installation.
Most proprietary software shops tend to have business continuity clauses and solution partners. So, on-paper, one could self-host those too in case their business goes under.
Agree. Maybe they may consider going the crowdequity route for their next raise.
Been using SupaBase for a couple of months now on a side project and it’s very nice. I’ve used Firebase extensively and it’s so nice to have a similar offering using SQL for the DB layer. Good to see them sticking to the open source ethos.
Firebase has some strengths, but I profoundly dislike its NoSQL databases. I started learning web dev ~6 years ago with non-relational dbs but now I'm in the camp that 98% of new projects should start with a relational db. Eager to try Supabase on my next project.
NoSQL was overhyped. SQL is awesome.
The main problem with Firebase is the lack of search capabilities which is ironic considering Google is the parent company. The fact that they haven't shipped this is probably down to backing themselves into a corner with the DB architecture they've chosen.
And still point customers to a competitors...
https://firebase.google.com/docs/firestore/solutions/search
Ahhhhh! I had to make partial search indexes for anything I wanted to be searchable as the user typed, so infuriating and unbelievable
Oh god. I'm dealing with this now. Whole project on firebase. Implementing my final feature before launch (full text search). Any last words of wisdom before I drop off the face of the earth for a month trying to get this working?
So I wrote a little function that iterates over the searchable text (in this case it was full names and user names) and adds each fragment/token to a collection and then did a match on that collection in the query. Anything the user might type to find the thing has to go in that child object so you have to tokenise to give yourself every version of what they will be searching as they type.
So my name would go in as
S
Si
Sim
Simo
Simon
Simonb
Simonbar
Simonbark
Simonbarke
Simonbarker
B
Ba
Bar
Bark
Barke
Barker
Etc
Etc
Failing that just dump everything in to an elastic search instance and call out to that for search. It’s not too hard to keep and ES in sync but it’s also more expensive sadly
For those who need a clickable link to the project:
I wanted to use supabase for one of my pet projects, but, unfortunately, the egress fee is just way to high, $0.09 per GB. I am not sure if it is viable for any serious project.
can I ask which cloud provider you use?
we're currently on AWS so it's a bit hard for us to price lower, at least until we go multi-cloud
I suspected that you were using AWS as the cloud provider.
I went with Hetzner instead, and I manage my servers by myself. I have been looking for providers in case that things do get serious with the project, as I do not have the experience in system administration, but I could not find any good offerings with reasonable egress rates, as the project does transfer large amounts of data.
thanks for the feedback. Hertzner are a great option.
I hope companies like cloudflare/backblaze/etc can continue making noise about the AWS egress rates to put pressure on them, although it looks like they will remain high for a while and so our hands are tied.
Thanks to cloudflare, they recently expanded the limits on the free plan.
https://aws.amazon.com/blogs/aws/aws-free-tier-data-transfer...
I think if Supabase allows us to attach our own S3 accounts, then we can take advantage of the expanded Free tier
R2 isn’t really a separate cloud but it may be a potential option.
Agree. Else, they'd have been my default choice.
you pump more than a GB of data out of your db in a month?
I might have as well, but the egress fee also applies to the object storage.
Just installed via the developer quickstart
https://github.com/supabase/supabase/tree/master/studio#deve...
but getting a connection refused error.
I'm assuming it's because of the db. Any advice / guide on setting that up?
sounds like the docker-compose was unable to start?
Awesome, was waiting for when they'd open source the UI and not just the backend.
They already did:
I would really like to use supabase as an alternative for Firestore. Sadly, row level security on realtime, which is the killer feature of Firestore, does not exist.
we just released this:
https://news.ycombinator.com/item?id=29404222
Did they add cloud functions?
Last time I checked they were working on it.
They posted a blogpost announcing that a few minutes ago.
I don't know who designed their website, but I found it very hard for me to read the pricing section on my MBP.
No eslint?