I use zeptomail. Took maybe 10 minutes including reading their instructions on how they want the DNS configured.
For marketing, we are using Zoho CRM. I set up a webhook to Zoho that I trigger on account status change that updates the Zoho CRM. I don’t keep it in sync the other direction since that is not interesting for my use cases. The business and marketing people can then just set up whatever trickle campaigns or newsletters they desire directly from there. For transactional email from the app (and Supabase auth) I use zeptomail from Zoho as well.
You only need to grant permissions for newly created tables. When you alter a table it does not lose any permissions.
There was some talk about Postgres 18 this summer but I don’t think I have seen anything official. Postgres 19 is about to be released though so Supabase will still be behind the latest.
Are they real users or synthetic ones you use just for testing? If the latter then you should be using a staging environment for that purpose so as not to mess up your real user statistics.
You could consider adding triggers that fire off events to Zapier to update or insert rows into a google sheet. Maybe Zapier has an integration with Supabase already, I don’t know.
Not that this is a new feature (no automatic grants) and will be defaulted for existing projects later this summer.
I used to use the pattern to process millions of events a day. It scales pretty well, but at some point I had to switch to a proper message broker (I used NATS) so the work could be shared across workers.
The question was how to monitor logins to Supabase.com without an enterprise plan and you say just built it yourself. But you can’t.
How do you propose to add features to your Supabase dashboard?
Supabase does not use streaming replication for upgrades. They really should. I’ve done this for years while self hosting Postgres. For upgrades I would run the in-place upgrade on my replica then swap the replication stream direction and upgrade my primary. I took a few seconds of downtime in the app to swap the host names. Interesting note on the breaking change in prepared statements since v14. The last time I encountered a breaking change it was still in the v8 to v9 range and it affected just one query I had.
Use the browser debugging tools to watch the network waterfall of the page loading. For the layout are you redefining the space for the image so the page can be rendered before the images are loaded? See if you can find some tools that defer loading of the images below the fold so it appears to the user that the page is rendered quickly. Some sort of just-in-time scheme.
This is not “running your LLM in the database”, it is calling an API.
You can host on cloudflare.
If it is just a personal side project self host the entire thing locally, preferably using a virtual machine or container, and open access to it using a cloudflare tunnel.
Test and comment on that ticket and maybe someone will merge it.
See [https://github.com/supabase/setup-cli/issues/399#issuecomment-4184082349](https://github.com/supabase/setup-cli/issues/399#issuecomment-4184082349)
There already is work on this. It may have been released in the last day or so. I haven’t checked since last week.
You need to update your seed file to match the latest db schema definition. You can still test your data migrations by running the `supabase migration up` command in local dev. I personally like to test them by just running the file inside the Postgres CLI with the `\i` command inside a transaction and rollback as necessary. Once it is satisfactory I run migration up.
I would at minimum make each white labeled customer use their own bucket. This makes for easier bulk delete when that stop being a customer. The folder structure of storage is just an illusion. It is all just part of the file name as far as the storage system is concerned. Also as others have said, you should do some projections of the cost and decide if this is the right solution for your use case. Be sure to include the added complexity of managing the external storage in your comparison.
Does your client computer support IPv6?
See https://supabase.com/docs/guides/api/securing-your-api#examples for an example of how to build out rate limiting for write requests. There doesn’t seem to be a solution for read limiting.
The default API endpoint url is already behind cloudflare. You don’t control it, but it is there. You don’t need a custom url or paid plan for it.
Fo the outbox pattern the `pgmq` extension is great. It provides good primitives for reliably adding and removing events to process. Someone even built and shared a robust workflow processing system on top of it called `pgflow`. You can also use Inngest to process event driven workflow but that is an external service you’d have to pay for (I use it because pgflow did not exist when I started my project).
If your goal is to keep the messages secret from you, the site operator, you cannot have the keys. End of story.
If you have the encryption key then it is not hidden from you. If you can render it in a view then you have the key. The only solution is end to end encryption where the message is encrypted on the client and decrypted on the client and the customers are the only ones with keys. Look up how Signal or WhatsApp solve this.
You’re asking if your solution is reasonable, but we cannot tell you unless we know the problem you are trying to solve. What are you accomplishing by encrypting that column when you can just see it from the view anyway? From whom are you protecting the column contents? As for using the vault you will have to put your query into a security definer function. There’s no way to get the REST api to reference it.
What exact problem do you want to solve here? Encryption at rest?
Can you show the result of running `nslookup` or `dig` on your .co hostname? This was an issue a couple of weeks ago which has since been resolved.
My advice is to avoid enums in Postgres unless you really really need them. The only case I find them acceptable is if you need to sort by a column of those values. Even then it is limited in that you can only append to the list of values. You cannot remove or reorder them. Use a relation table instead. I agree with the advice others have given.
There is no limit, you just pay per project based on the size of the resources you select (disk and cpu and RAM). The cost of the pro plan includes $10 of credits towards your first project which exactly equals how much it costs to run the second smallest machine.
Curious why you would write code for production without any error checking?
Sounds like OP wanted the database api call to throw an exception on a FK error instead of having to check the success status of the api call.
When they say “extreme” it really is that. Most of us mortals will never get to that scale. We can get by with a single node and lots of RAM and IOPS. About 10 years ago I was pushing hundreds of millions of events per day into tracking tables, while still running reporting and other regular application queries. I did this on a single 12-core server (and an identical replica for failover) with gobs of RAM and ssd cache drives for ZFS running FreeBSD.
What’s your location? Did you check the status page?
Check this project out: https://github.com/psteinroe/postgres-conductor It basically wraps pgmq with some well defined patterns for coordinating tasks.
They’ve had some issues recently but they haven’t affected me so much. The orchestrator runs on their infrastructure but everything else runs within my own application and database. I recently came across this project and I think it is a worthy contender: https://github.com/psteinroe/postgres-conductor My only issue with it is it needs along running worker process and I run everything on serverless architecture. I might work up a way to use it anyhow, because I like not having many intertwined dependencies whenever I can avoid it.
I use Inngest for all my durable tasks. I implement web hooks in my front end and submit the work to Inngest. Once accepted I return success from my endpoint.
What do you mean “persisting”?
They are all available as ARM images. That’s how the local development environment runs on modern Macs.
They have an S3 compatible API, but you shouldn’t consider it to actually be S3.
Folders are an illusion. The `/` separator is just part of the object’s name. It is only useful for you as the user to group them. You could just as well have used any other symbol.
I see some chatter about DNS among the Supabase community helpers who hang out in Discord. Maybe check there.
You can access the supabase storage using S3 protocol. You cannot bring your own S3 storage buckets to use with supabase.
No. You cannot bring your own storage tobsipavase. You will need to modify your code to use the AWS S3 directly.
The scanner is following a POST form button? Maybe stick a captcha on that screen or a delay before the button is valid.
This was just asked the other day. https://www.reddit.com/r/Supabase/s/lLaU8m488S
There is discussion about this problem in the Supabase Auth documentation, so yes, others have experienced it. Short answer: use the GET request to display a form that does a POST to trigger the final action.
Yes. Just use the Supabase SSR library to integrate authentication into your app and the Supabase JS library to register your users and query/update the database. Ignore all other features Supabase provides.
You do that once per migration file you are going to create. A migration file can have as much DDL in it that you want. Now that you mention declarative schemas, ignore this advice.