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'.<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?
Web app: Django+Postgres+Bootstrap locally done with Docker, deployed with Heroku.<p>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.<p>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.<p>Desktop: Python+Qt - but thats old and probably bad advice in 2019.
If I were you I’d use the stack you are most comfortable with if it can satisfy your requirements.<p>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.<p>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.<p>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.<p>Avoid Kubernetes, docker, nosql, lambdas and anything else that’ll complicate things.<p>You want a monolithic crud app that serves up HTML like it’s 2006.
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.
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.<p>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.<p>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.<p>Disclosure: I run <a href="https://alchemist.camp" rel="nofollow">https://alchemist.camp</a>, which teaches Elixir and Phoenix, but this screencasting project was the <i>result</i> of how much value I found in using Elixir for my last startup, not the reason I'm a fan of it now.
Heroku Postgres + Heroku + Any framework that you are comfortable with<p>For me, it's Play + Vue (shameless plug: <a href="https://github.com/GIVESocialMovement/sbt-vuefy" rel="nofollow">https://github.com/GIVESocialMovement/sbt-vuefy</a>).<p>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.<p>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.
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?).<p>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.
Clojure is great for fast prototyping I usually start with Boot + System <a href="https://github.com/danielsz/system" rel="nofollow">https://github.com/danielsz/system</a>
and the holy grail: <a href="https://github.com/danielsz/system#the-holy-grail" rel="nofollow">https://github.com/danielsz/system#the-holy-grail</a>
It is a full-stack template with hot-reloading on both sides.
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.
Interesting that GraphQL did not come up.<p>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.<p>I am not a professional developer, though. I found the combo above really fun, simple, and easy to work with.
I would highly recommend completely ignoring scalability for your MVP. Choose tech you enjoy writing/learning.<p>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.<p>As you learn more about the task, you will be able to decide what kind of tech makes the most sense.
JS + node + whateverDB.<p>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.<p>For the database, just pick the one you're most familiar with...
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.<p>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.
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.<p>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.<p>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.
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.<p>But I decided to build our MVP with ODOO ERP and CMS to test and then when is needed develop our own product.<p>What do you think about this?
Gatsby starter + Firebase
For Mobile: react native + firebase<p>People always complain about Firebase being expensive, but how many apps really make it to that phase that it becomes?
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.
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.<p>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.
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.<p>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.
Nginx- unicorn- rails - MySQL + redis<p>Everything is crud so rails with percona is nice and scalable and easy to deploy.<p>Redis solves all the unsolvable problems... locking, queuing, caching, magic kittens, and it’s easy to operate at scale<p>Nginx - makes it easy to have a robust front end for serving up css / js / images with http2<p>Unicorn is just nice way to run rails apps
Web: Create React App for the front-end and NodeJS+ExpressJS+MongoDB/MySQL for the backend. Any MVP could be delivered under one week.<p>On the other hand - I really love what other folks saying. As for myself, I'm thinking about trying out some Django/Rails setups
I've recently re-discovered Google app engine, together with firestore for any persistence it's truly a low friction MVP environment.<p>I usually use it together with go and Vue for the frontend.
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. <a href="https://darklang.com" rel="nofollow">https://darklang.com</a> (or email me: paul@darklang.com)