Why Magic is Superior to Supabase
Tags: lowcode
Published: 2024-07-08 13:29:39

[Supabase](https://supabase.com) is a toy No-Code and Low-Code framework, allowing you to wrap your database in CRUD API endpoints in some few seconds.

The problem is that once you need to go beyond CRUD, there are no real alternatives to coding. I've written extensively about the problems originating from this in a [previous article](https://ainiro.io/blog/supabase-versus-magic-you-win), but basically it's a rubbish idea, that looks great on stage when demonstrating stuff - But never actually works in real world solutions due to complex use cases and rich requirements.

In the following video I demonstrate three things you can do with Magic that you cannot do with Supabase.

1. Joins on tables
2. Declaratively adding business logic without coding
3. Manually coding once you need to without having to create _"edge functions"_

{% embed https://www.youtube.com/watch?v=tRo5_V2Hfqk %}

Notice, there's a million things you can do with Magic that you cannot do with Supabase. The above is just a tiny little teaser to give you an idea.

## PostgREST was a bad idea

Supabase is entirely based upon PostgREST. PostgREST was a dumb idea. Sure it solves CRUD for you, but regardless of how many CRUD solutions you've got, you will never be able to deliver working software. The reasons for this is because every app requires custom business logic that goes beyond CRUD. Examples can be for instance

* Write to the log when some item is created
* Send an email when some item is deleted
* Invoke a 3rd party service when some item is updated
* Update multiple records at the same time
* Etc, etc, etc

With PostgREST none of the above is even possible in theory. This culminated in Supabase having a sobering realisation a year ago that they needed to create _"edge functions"_. For the record, adding edge functions to Supabase, is kind of like fixing your car with duct tape and chewing gum.

And once you're in _"edge function land"_ there's no no-code or low-code helping you out. You're basically just exhanging your IDE with a worse implementation in exchange for a CRUD API you'll never be able to actually use for anything intelligent. About the only real value you'll find in Supabase that actually provides any value what so ever, is automatically taking care of authentication and authorisation - But so does every other No-Code and Low-Code framework on the planet - Including Magic!

## What's an Edge Function

Edge functions basically works like an interceptor layer between your PostgREST API and the client, adding one additional network hop, resulting in reducing scalability and making your app slower. In addition, it results in increasing your app's attack surface, making it more likely to be hacked.

And if you want to access your database directly from the edge function, why use Supabase in the first place anyway? After all, it's just a worse implementation of Azure functions and AWS Lambda functions, that you can buy on a per invocation price, resulting in paying 5 cents per month, for something Supabase would charge you $25 for per month.

Fixing these problems, basically implies implementing everything that traditional cloud platform providers have, such as AWS and Azure. For Supabase to deliver a fix for the above problems, implies there's nothing separating them from Azure and AWS anymore, besides possibly price. If price is an issue though, you can buy a droplet at DigitalOcean for $6 per month, allowing you to host hundreds of databases and thousands of web APIs.

And while we're at at, I bet you can find Docker images you can deploy to your droplet wrapping [OData](https://github.com/odata), allowing you to create your own Supabase in your own droplet, accessing MS SQL, MySQL, Oracle, and literally every single RDBMS that ever existed - And do so in some 5 minutes, equally fast as you can register at Supabase's website. However, ask yourself why you'd want to do that. OData might be less crappy than PostgREST, but it's still crap ...

Facts are, PostgREST was a bad idea. Supabase was _founded_ on PostgREST. This is because they had no idea about real world requirements, because of a lack of experience with software development. Basically, they were a bunch of junior devs, thinking they had found something cool - Which is an oxymoron by itself once you realise that solutions such as PosgREST has been around since the late 1980s.

> It was a bad idea in 1980, and it's still a bad idea in 2024 - But it looks great on stage, because you can rapidly create a ReactJS client, wrapping your CRUD API, providing high _"bling factor"_

Psst, GraphQL suffers from _the exact same problem_ - As in, no business logic, no working app!

## Magic, the fix

If you want a _real_ low-code and no-code solution for your frontend, there's always [Magic](https://docs.ainiro.io/). It doesn't look as cool on stage, and probably not in videos either - But at least _it works_! And yes, we're charging 11 times as much as Supabase, but considering it's 1,000 times better, it's still a bargain.

And once you realise that we're actually a _real_ company, already profitable, not having to worry about your PaaS vendor running out of money, resulting in your app getting rug pulled - I'd say it's easily worth the $298 per month we're charging for a cloudlet.

Don't fall for hype please. Supabase is _based_ upon hype. But once you take away the hype, there's literally nothing left there. Supabase is not low-code or no-code, it's a 10 orders of magnitude worse IDE than what you're currently using. It's also 10x more expensive than Azure functions and AWS Lambda Functions, and provides nothing more than either of the two previously mentioned constructs. In addition, they're burning millions of dollars per month, possibly making them go belly up in a year due to running out of funding. And if you really want the PostgREST crap, OData is probably 1,000 times better.

> But they do have a nice website, I'll give them that 😊

If you're interested in discussing real working low-code and no-code solutions with us, feel free to contact us below.

* [Contact us](/contact-us)