Ask HN: What is your goto stack when building a MVP and why?
I've been fiddling with a idea sometime and I want to turn it into a product. I first want to build a MVP. I can't make a decision stack I am going to use. I find it difficult to make the difference between taking too much and too little account of an untenable and scalable 'future'.
Do you consider SQL for your data layer or settle for NoSQL solution, or maybe for something like firebase? How do you think serverless functions can contribute to a MVP?
39 comments
[ 3.0 ms ] story [ 79.8 ms ] threadI might eventually switch to postgresql, but I don't know how to deal with data migration once my database changes. I want the program design to be stabilized first.
I will not use firebase, it will be very expensive. I have tried aws lambda once to create myself an email redirect service. I found it hard to debug.
If I were starting a new product I'd look into TypeScript. Haven't used it, but I hear a lot of "I tried it and it was a clear improvement" which I think is a good sign. I would also look into whatever the big companies are pushing as their storage layer of choice, though I'm normally a Postgres guy. Would give me peace of mind to still talk to it with SQL though.
Right now you don't have enough info to make a good performance decision, so you might as well choose a stack that will encourage you to complete the project.
As you learn more about the task, you will be able to decide what kind of tech makes the most sense.
Otherwise choose what would be easiest to learn. E.g. if you know python but not web python, learn a python web framework instead of moving to NodeJS.
I’d probably keep it simple for an MVP and use a cloud managed SQL database, a popular stack like rails or something equivalent and use minimal client side JS (not a SPA) because that’ll reduce your time to getting it done.
Use cloud services to save you headaches as much as possible: managed databases, VMs preloaded with Linux. Cheat by chucking cloudflare in front of it to get SSL, unless your cloud can do the letsencrypt for you.
Avoid Kubernetes, docker, nosql, lambdas and anything else that’ll complicate things.
You want a monolithic crud app that serves up HTML like it’s 2006.
With Django you get a lot straight out of the box, including: user management, admin dashboards. For an 1 or 2 person built MVP I wouldn't even bother with a JS frontend, just Django forms & Bootstrap templates and full HTTP/POST forms. It simplifies everything and removes a point of failure.
You can get a solid functional system working very, very quickly. Which you can deploy to Heroku for $0 while you iterate, which can be converted to production ready system for as under $50/month depending on what you need.
Desktop: Python+Qt - but thats old and probably bad advice in 2019.
For me, it's Play + Vue (shameless plug: https://github.com/GIVESocialMovement/sbt-vuefy).
The real time sink is not development. It's ops. Configuring server, making sure it's secure and online at all time, rotating logs, backing up database regularly, no-downtime deployment.
I'm using SQL because it's more flexible than a NoSQL solution. You don't need to plan in advance how to model your data. Just add a new index, and it works decently enough. I can also modify data without building a specialized admin UI.
I usually use it together with go and Vue for the frontend.
I'm new to react and thought it would be used in MVP's.
Can someone explain please
Usually for the MVP, I'll just stick with a traditional back-end MVC app and take advantage of all the Phoenix generators. As it gets a bit bigger, I might bring in Vue components on specific pages.
Once an app is really getting larger, I might bring in TypeScript on the front-end. I pretty much stick with Postgres the whole way unless there's a really compelling reason to do otherwise.
Disclosure: I run https://alchemist.camp, which teaches Elixir and Phoenix, but this screencasting project was the result of how much value I found in using Elixir for my last startup, not the reason I'm a fan of it now.
But I'm so familiar with the language and tool chains I can prototype extremely rapidly. With just a few minimal sane decisions, the prototype can be "web scale" buzzword compliant.
The core2duo box cost £25 and I love it. It’s also a file/plex server. Duckdns has also been a great friend. As well as nginx, lets encrypt and basic auth. Keeping in mind this is my test system.
But if you don't run the system 24/7 then it's not worth it.
I would be more concerned leaving a laptop power supply on 24/7. I’m not sure if my concern is unfounded, what do you think?
A modern power adapter is at its core just a transformer and a regulator. Three transformer itself is a passive device, it's the regulator that will use a bit of power that will turn into heat, but any well built one will have no risk of overheating. The heat is proportional to how much power the laptop is using, (i.e. under how much load it is on average).
Modern laptops use very little power, so I'd say there is little cause for concern.
C#/.net It's the one I know the best and supported for both fast prototyping (.net MVC apps) and scale [Linux and Windows]. Desktop Apps / Mobile / AWS Lambda etc... I use MSSQL for my data, but have used MySQL in the past.
Things can get a bit bogged down once there are a certain number of components that chain update each other and Meteor still primarily uses Mongo, but neither should be a problem for a MVP.
Everything is crud so rails with percona is nice and scalable and easy to deploy.
Redis solves all the unsolvable problems... locking, queuing, caching, magic kittens, and it’s easy to operate at scale
Nginx - makes it easy to have a robust front end for serving up css / js / images with http2
Unicorn is just nice way to run rails apps
People always complain about Firebase being expensive, but how many apps really make it to that phase that it becomes?
On the other hand - I really love what other folks saying. As for myself, I'm thinking about trying out some Django/Rails setups
But I decided to build our MVP with ODOO ERP and CMS to test and then when is needed develop our own product.
What do you think about this?