6 ms·
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?
- billconan 7y agoI 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.
- christiansakai 7y agoIf you don’t know what to use. Use Javascript
- repsilat 7y agoI'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.
- grayhatter 7y agoPlease, god, no...
- pbiggar 7y agoWe'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 7y agoI can't find any code syntax examples on the website.
- xhgdvjky 7y agoI 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.
- timtamboy63 7y agoRails + 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.
- sergiotapia 7y agoPhoenix + 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.
- quickthrower2 7y agoIf 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.
- legostormtroopr 7y agoWeb 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_ 7y agoJust curious, what are better alternatives to desktop apps? And why is python + Qt bad?
- tanin 7y agoHeroku 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.
- droptablemain 7y agoDigital Ocean droplet with LAMP stack. Lumen for the API and Web components with Polymer for the front-end
- villgax 7y agoNode.js(If needed) + jQuery + Theme + Firebase & Heroku deploys
- gnur 7y agoI'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.
- leksak 7y agoNo-one using React?
- MattLeBlanc001 7y agoCan 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 7y agoMost 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.
- amoerie 7y agoI found React to be very nice for interactive HTML mockups. But if it's mostly CRUD, just server side rendering is probably the fastest road to a working product.
- AlchemistCamp 7y agoFor 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.
- wingerlang 7y agoPlain 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.
- BjoernKW 7y agoHTML, Bootstrap and GitHub Pages.
- badsavage 7y agoClojure 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 7y agoI'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 7y agoTry this: https://www.braveclojure.com/clojure-for-the-brave-and-true/ https://www.braveclojure.com/clojure-for-the-brave-and-true/
- Foober223 7y agoC++ 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.
- p0d 7y agoI 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 7y agoYou 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 7y agoFunny 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 7y agoAssuming 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.
- mgamache 7y agoMostly 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.
- ecf 7y agoI 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.
- taf2 7y agoNginx- 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
- jellevdv 7y agoGatsby 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?
- eko24 7y agoWeb: 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
- ReD_CoDE 7y agoWe 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?
- d--b 7y agoJS + 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...
- danroc 7y agoInteresting 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.