I'm sure I don't have to explain the sheer amount of choices (analysis paralysis, yay!), but wanted to hear how other FE devs are doing it. Below are the options I've looked into:
- Supabase
- Nhost
- Xano
Would love to hear from anybody who has experience with the above choices. Any pros/cons of each? Doing research and wading through the BS is tough, especially with lots of conflicting information I'm coming across.
p.s - I know the best answer is "just choose one and build!", but I'm more curious to hear some anecdotes about what others are liking/disliking
Web applications that can be broken into pages (displaying data) and forms: Laravel (default choice), Livewire
Do I need to have full interactivity on the frontend (Ex. Map, Media player,…): Svelte or Vue
Is it a project that I won't maintain: React (it's easier to find devs).
Do I have time to develop the backend for the SPA: Lumen, Express.js or a micro-framework in one of the languages I like (go,…)
No for the above: I used to go with Firebase. But I've look at others and they're pretty much the same thing.
When I was using Firebase, I've always coded defensively to avoid relying on its features. With React, I've built a layer of functions that interact with Firebase, then built my business logic out of hooks that use those functions. Moving to my own backend can be done with just reimplementing this layer. React-Query was my backup for the realtime capabilities of firestore.
Pros:
- The team is very approachable and responsive.
- Hasura is awesome! Especially the relationships. It took a while before it clicked but I don't see myself going back to joins. Also permissions are really powerful.
- Nhost stack allows you to do more complex stuff than with Supabase.
Cons:
- The documentation can sometimes be a bit unclear. Comparing to Supabase they can really improve on this.
- Deploying migrations can be a pain. Took a while before it clicked.
- Not a big community (yet). But they are growing.
Supabase. Pros: affordable, production ready, and seems relatively quick to get up and running. Cons: Some have mentioned security concerns around how they handle auth, and potential complexity around having lots of application logic at the DB level
Nhost: Seems like a really great Supabase alternative, strong focus on graphQL. Con: they are new with a very small team which always concerns me in the case they need to suddenly shut down in the future
Xano. Pros: Probably the quickest to get up and running and delivering JSON to the frontend. Cons: full "no code" solution as opposed to "low code". They do advertise as being turing-complete and able to do anything code can do, but full no-code always gives me pause for a production application passed an MVP
(Supabase maintainer) Just to sure: supabase is secure, audited, pentested, and well-maintained.
You can use it as a Postgres database, connecting to it in a "traditional" way. Or you can use it with some additional tools that we provide on top, so that you don't need to worry about middleware. Both are as secure as each other, but they require you, the developer, to take responsibility for your application security.
The latter relies on Postgres Row Level Security: it's built into Postgres and isn't novel to Supabase (but we are one of the few who really advocate for it because, well, we love Postgres and we're postgres-maxis)
we have several starters [0] to get you started. Eventually you will need to become famliar with any auth system you adopt though. We chose RLS, because it's incredibly flexible and compatible with other tools.
But there are a plethora of other tools if you don't want to take that route. If it works with Postgres, it also works with supabase.
[0] https://supabase.com/blog/supabase-bootstrap
Thanks for the link, will definitely check that out
React on the frontend
Node.js on the backend
Postgres as the database (managed by RDS)
Works pretty well!
Db: sqlite3
Inspired by Uncle Bob's "just write them to plain files and we'll upgrade to a db later [which never happened]" case