Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Personally big on Rails (use it at work every day). But, my last MVP I did with TS/Next/Mantine/Supabase/Vercel.

Reasons:

- I've been using Rails as an API only, so having to grok views felt like a waste. My React skills made me feel that learning how to make complex views in my backend was a waste of time.

- One type of bug I hate is ensuring my API calls have the right schema. With Supabase and TS in the frontend, this is a non-issue: export types from db schema and all frontend requests are typed.

- Supabase is something for sure: I had been eyeing it for a while now, and it did not disappoint. Getting endpoints - even with realtime updates/subs in the frontend - after just defining a schema is magical.

- Auth is super simple with RLS - all this uses my SQL knowledge and makes me double down on it, which seems like a sane choice given it's been around for decades.

- Mantine gives me a large list of prebuilt components. This isn't exclusive to this stack but would highly recommend using something like this instead of just Bootstrap or Tailwind on its own.

Overall I'm happy with the results, feels way faster than my React/Rails workflow. Way less time in the backend (models, migrations, presenters, etc), more focus on tweaking the product.

Con: does not move me in the direction of using Python more. Feel like this is going to be a must-have for AI-powered components.



Same, Next.js, Vercel, Prisma, Supabase. I push to my GitHub repo and the site is live and deployed in less than a minute.

With the stack you can use the same language, DTOs, libraries, etc.. both server and client side.

Server side rendering ensures a graceful handoff between server rendered state and the resulting app state on the client.

I’m also using MUI which includes all the components you need for a front end app.

I also just really like react/JSX, very strongly typed coupling between the html and JavaScript. Makes it very easy to refactor and pull out new components with confidence.

I really think this is the best stack for an MVP CRUD app right now. Interested to hear of anything better.


This stack is pretty incomplete for most MVPs, as unless you're building something trivial like a landing page, you'll probably at some point also need libraries or a custom implementation for:

- Validations

- Translations

- Error and request logging and auditing

- Security (CQRS, CORS, CSRF)

- Permissions and a way to integrate it with your authentication (does supabase handle this? don't know)

- Email sending

- Background jobs

- Caching

- File uploading

- Rate limiting

- ...

Every time somebody suggests "just" Next.js, just "Remix", just "flask" or just [insert minimalist framework] I think they're either building something pretty trivial, or wasting a lot of time on rebuilding or integrating things you get for free with batteries included frameworks.


(supabase CEO)

We wouldn't be the best fit for all of these, but here are some:

- Validations: handled already by Postgres and if you use JSONB you can use pg_jsonschema[0]

- Translations: probably won't ever be part of our stack, but for multilingual FTS we offer the pgroonga extension[1]

- Permissions: we offer AuthN (email & social logins, MFA, SSO) [2] and AuthZ with Postgres RLS[3]

- Background jobs: pg_cron [4]

- Caching: For images we have a smart cache [5]. We'll extend this to database queries over time

- File uploading: supabase storage [6]

[0] pg_jsonschema: https://supabase.com/blog/pg-jsonschema-a-postgres-extension...

[1] pgroonga: https://pgroonga.github.io/

[2] AuthN: https://supabase.com/docs/guides/auth/overview

[3] AuthZ with Postgres RLS: https://supabase.com/docs/guides/auth/row-level-security

[4] pg_cron: https://supabase.com/docs/guides/database/extensions/pgcron

[5] smart image cache: https://supabase.com/blog/storage-image-resizing-smart-cdn#s...

[6] supabase storage: https://supabase.com/storage


I mean, yeah you need more libraries, but I wouldn't list Formik/mobx/react-i18n/Sendgrid when talking at this level of abstraction.


That stuff isn't "hard" per se, and some of that stuff isn't even needed for a MVP, they're good to haves or only really required when you've got 100s of users (product dependant of course). If the MVP doesn't get there either iterate product or bin it


None of these are difficult per se. Multiple of them, working seamlessly together, having them tested, documented and battle tested is a bit more difficult.

Then you think about all that time doing this could have been spent in actual business logic and it makes no sense to me anymore.


The post is literally about building an MVP. Remix isn't a minimalist framework - it's a full stack web framework.


Maybe next js instead of supabase?


Next.js is more about frontend, but Supabase is more on backend. I cannot see any conflicts of the two, they can work with each other flawlessly.


Meant to say Nest.js sorry


This is a really nice stack and what I’m using together with a colleague right now.

Do you use the serverless functions available with Vercel/Supabase? If so, I’m curious how you choose when to go with each provider.


I use vercel functions for this side-project bc they worked out of the box. Just least friction tbh not sure if optimal.


Ah you comment about MUI reminded me to include Mantine, also big productivity driver.


Wish I could afford vercel


Super generous free similar product is netlify... you get 300 build minutes per month, I've never even gone above their free tier haha


Unless something has changed, they explicitly disallow any website that facilitates for profit commerce. Granted I don't think they closely monitor it unless your bandwidth is over a certain threshold. However, Cloudflare Pages is free and unlimited FWIW but I doesn't seem as nice or fast as Vercel.


Remember we’re talking about MVP. Moving this stack to a VPS would only add a day.


> Con: does not move me in the direction of using Python more. Feel like this is going to be a must-have for AI-powered components.

This is why too many companies build on Python... some thought that maybe someday they will need some AI something, and they hamstring themselves from the start with inferior tooling.


I'm glad I came across your comment, I'm planning a 2-week project for learning purposes and I thought rails backend with react/ svelte would be the fastest way to prototype.

My ruby/ rails experience is very limited compared to my JS experience; I really just started experimenting with rails. I'm blown away by the magic, JS frameworks feel like toys in comparison. I also like that Rails is omakase.

Based on your experience, would you suggest trying rails or going the full JS stack route?


I was faced with this decision a month ago and started building my models and views in Rails 7. Late night tinkering with views, then trying out ViewComponent I went 'dude wtf am I doing, these apps are so easy to build in React'... Next.js with Supabase has been a breeze. Setting up db with auth and getting realtime updates and object storage with minimal setup (TS fn calls) was mind-blowing.

Caveats: setting up Supabase auth takes a bit of reading docs, using the js helpers correctly and configuring RLS, but after that it just works.


imo rails without react and leveraging hotwire is going to be the next big thing in web dev. react is a huge increase in complexity for not much appreciable gain. you are not facebook and don't have facebook's needs. rails is nimble by itself.


I'm a fan of this too, and it honestly confuses me that people would do a Rails API with React for a MVP.

If you're already doing the backend in rails, it's hardly any more work to just do hotwire with server side rendering at the same time, and you can switch to a SPA later (if you really do need to).


Most people in this thread are not suggesting a stack for an mvp. They’re just listing their favorite stacks, that’s it.

There’s a comment of somebody saying that just Postgres and Go. How on earth is that a good stack for building an mvp?? You’ll have to write a shit ton of code or glue together 10 thousand libraries.


it's also not a ton more work to pivot and turn the rails app with hotwire into an ios/android app with a minimal amount of work. and yeah you can also sprinkle react in if you need some component or two or even do the api that way and drop into a full SPA if you really need that. but at that point you are doubling the amount of work on the frontend for little gain in my view.

I liked the idea of react and have used it but i don't feel like it improves the situation enough for 95% of the sites out there to justify it and the enormous extra work there is in getting state/routing/etc to jive with the backend. I'm hoping strada, if it ever comes out, will be a large improvement to turbo native and at least provide a very compelling alternative react native.


I would love to learn more about this. As a complete beginner though I tried to find resources for full-stack Rails and unfortunately there is nothing much there that teaches you the new front-end or shows how to build an MVP.

Compared to that JS ecosystem perhaps has too much :)


Hotwire is pretty new but there are some guides out there. it's a progressive enhancement thing generally so you build it normally and then sprinkle in the extra stuff.

1000 foot overview: https://boringrails.com/articles/thinking-in-hotwire-progres...

a tutorial: https://www.hotrails.dev/turbo-rails

a video tutorial: https://www.driftingruby.com/episodes/hotwire-introduction

probably a good paid option: https://pragmaticstudio.com/hotwire-rails

and then there is the main site: https://turbo.hotwired.dev/

cheers!


Thank you!


I'd stick with rails unless you have a complex front-end where UI responsiveness is of the essential (i.e., highly graphical-interactive). React is many levels up in terms of complexity.


Rails and React are doing completely different things in the stack; I don't understand this argument (having worked with both, but never getting good at Rails)

React is purely about managing the frontend and user interactions. Many apps are very heavy on this. For a lot of things I've built, I think Rails would have been overkill. Even for ones that use a database, I find node.js/express/prisma much easier to work with (until you get into migrations). Activerecord's story around migrations is the best I've used.

But for an MVP you don't really need to worry about that.


Mantine is such a good library, especially when compared to Material, Semantic, etc. I’ve used it with a couple projects and have been very impressed.


What's RLS? Row Level Security?


Correct. We suggest using Postgres Row Level Security if you use the Supabase APIs + Auth: https://supabase.com/docs/guides/auth/row-level-security

You don't have to use RLS if you BYO middleware, but the RLS approach give you the option to do `frontent <-> backend` (vs `frontend <-> middleware <-> backend`)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: