
Ask HN: What is your goto stack when building a MVP and why? - jennoo
I&#x27;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&#x27;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 &#x27;future&#x27;.<p>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?
======
legostormtroopr
Web app: Django+Postgres+Bootstrap locally done with Docker, deployed with
Heroku.

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.

~~~
Valk3_
Just curious, what are better alternatives to desktop apps? And why is python
+ Qt bad?

------
quickthrower2
If I were you I’d use the stack you are most comfortable with if it can
satisfy your requirements.

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.

------
timtamboy63
Rails + Postgres for MVP. Very quick to prototype (you can build a CRUD app
with a few commands) and fairly flexible. Then when you want to scale you can
add a JS framework if you need and use Rails for the API piece.

------
AlchemistCamp
For me it's Elixir + Phoenix because it's what I build fastest with. While
it's not the very most performant stack in the world, it's built for scaling
and can handle far more users than anything I've built with has gotten.

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](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.

------
tanin
Heroku Postgres + Heroku + Any framework that you are comfortable with

For me, it's Play + Vue (shameless plug:
[https://github.com/GIVESocialMovement/sbt-
vuefy](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.

------
mgamache
Mostly pick one with a big community that other are using for quick
prototypes. And (as others have said) ignore scaling unless scale is what you
are prototyping. Use SQL to start. (MySQL/PostGres/Etc..) It's better to
denormalize if you need scale then have to normalize noSQL data if needed at
the app layer (maybe that's up for debate?).

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.

------
badsavage
Clojure is great for fast prototyping I usually start with Boot + System
[https://github.com/danielsz/system](https://github.com/danielsz/system) and
the holy grail: [https://github.com/danielsz/system#the-holy-
grail](https://github.com/danielsz/system#the-holy-grail) It is a full-stack
template with hot-reloading on both sides.

~~~
xcubic
I've been wanting to learn clojure for a while but for someone in webdev who
never coded in a functional style, I never could grasp it. Do you have any
good resource to start with clojure?

~~~
django77
Try this: [https://www.braveclojure.com/clojure-for-the-brave-and-
true/](https://www.braveclojure.com/clojure-for-the-brave-and-true/)

------
sergiotapia
Phoenix + Postgres, railsy enough to get it done quick and room enough to take
the same codebase to a million user throughput. I wouldn't have it any other
way.

------
danroc
Interesting that GraphQL did not come up.

For me, the fastest and most fun is: Postgres + Postgraphile (generates a
GraphQL server based on your PG schema), with Vue/Nuxt on the Frontend. Use
Dokku on a DigitalOcean droplet for the backend, and Netlify for the frontend.

I am not a professional developer, though. I found the combo above really fun,
simple, and easy to work with.

------
xhgdvjky
I would highly recommend completely ignoring scalability for your MVP. Choose
tech you enjoy writing/learning.

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.

------
d--b
JS + node + whateverDB.

You'll need javascript for the frontend, so that's a given. Since you're using
javascript, you might as well still use it for the backend. Node with
express.js is super simple/fast to deploy and will scale ok.

For the database, just pick the one you're most familiar with...

------
p0d
I have a saas sideline I have been selling for 10 years. Some time ago I
settled with the toro php router, mysql, jquery and bootstrap. I do most of my
coding in Sublime over ssh i.e. my test sites live in containers on a little
core2duo desktop. Each container has it’s own Sublime. I can spin up any
sublime, from any project, from any machine on my lan. As it’s internal go for
a weak but performant ssh cipher or you will get too much latency. Copies of
the same containers are used in the live environment. I have a container
running Gitlab for versioning.

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.

~~~
ekr
You might want to replace that core2duo with an ivy bridge laptop or a similar
device, which you could find for ~£50 (maybe with a broken screen). The power
consumption will drop by more than half.

But if you don't run the system 24/7 then it's not worth it.

~~~
p0d
Funny you mention power as it was on my mind recently. The box hits 60w at
full use so it is not a major concern.

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?

~~~
ekr
Assuming that it's well built (i.e. it comes from a major manufacturer and
it's not a cheap Chinese product), that worry is completely unfounded.

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.

------
billconan
I use mongodb, I found it is quick for prototyping. But I'm worried about race
conditions, because I think its transaction is limited. But for my current
stage (MVP), it seems to be fine.

I 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.

------
ReD_CoDE
We were planned to use these technologies to build our MVP with scale-up in
mind too: Instead of OpenID and JWT we wanted to use Redis. For front-end:
React.js + ES6. For back-end: PHP 7 (Laravel 5+) and Phyton 3. For the
database: MySQL 8 (MySQL improved a lot after this version) + Redis. Flutter
for MVP. And Kotlin and Swift for the final product.

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?

------
jellevdv
Gatsby starter + Firebase For Mobile: react native + firebase

People always complain about Firebase being expensive, but how many apps
really make it to that phase that it becomes?

------
wingerlang
Plain HTML, PHP I learned 10 years ago and a text file for a database, as
simple as possible or else I will lose interest before getting my environment
even setup.

------
Foober223
C++ and postgress. In theory it should be the worst choice for fast
prototyping. No interactive development like lisp. Forces types on you. No
awesome web framework.

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.

------
ecf
I haven't seen Meteor.js mentioned here yet, which is a shame. It's great for
quickly building out MVPs due to their out-of-the-box real-time functionality.

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.

------
christiansakai
If you don’t know what to use. Use Javascript

~~~
repsilat
I'm a Python/C++ programmer and I think this is good advice. There are a lot
of JavaScript programmers around, JS engines are fast and the tooling is
great. I have rarely had an opportunity to share frontend and backend code,
but it does happen.

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.

------
taf2
Nginx- unicorn- rails - MySQL + redis

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

------
eko24
Web: Create React App for the front-end and NodeJS+ExpressJS+MongoDB/MySQL for
the backend. Any MVP could be delivered under one week.

On the other hand - I really love what other folks saying. As for myself, I'm
thinking about trying out some Django/Rails setups

------
gnur
I've recently re-discovered Google app engine, together with firestore for any
persistence it's truly a low friction MVP environment.

I usually use it together with go and Vue for the frontend.

------
droptablemain
Digital Ocean droplet with LAMP stack. Lumen for the API and Web components
with Polymer for the front-end

------
pbiggar
We're building a new tool which makes it really easy to build backends, and
MVPs are particularly easy. We literally built someone's product with them
during a one hour onboarding earlier.
[https://darklang.com](https://darklang.com) (or email me: paul@darklang.com)

~~~
mpoteat
I can't find any code syntax examples on the website.

------
villgax
Node.js(If needed) + jQuery + Theme + Firebase & Heroku deploys

------
BjoernKW
HTML, Bootstrap and GitHub Pages.

------
leksak
No-one using React?

~~~
MattLeBlanc001
Can someone explain why OP is downvoted?

I'm new to react and thought it would be used in MVP's.

Can someone explain please

~~~
theworld572
Most likely because developing a web app using a react frontend and an API
backend adds a significant amount of work for arguably little to no benefit,
especially not at MVP stage.

