Ask HN: Choosing an entrepreneur's stack in late 2018?
I have a few ideas I'd like to build MVPs for. I'm trying to decide what the best components are to include in my stack. My requirements are a web backend (including PostgreSQL support), a web client, and mobile clients for iOS and Android. I should be able to develop this from Linux as much as possible, but I have a Mac I can jump to as necessary.
I'd like to avoid as much complexity as possible in the stack so I can focus on the business idea instead of spending hours worrying about tooling, etc. Dart (with flutter) seemed appealing at first for this, but comments like this (https://news.ycombinator.com/item?id=17708671) as recent as four months ago don't really bolster confidence there.
If you were building a MVP from scratch and didn't care about using what you know (were willing to learn new tech for a better experience) what would you choose and why?
34 comments
[ 3.4 ms ] story [ 89.0 ms ] threadBut if you're pushing the envelope on mobile I don't think you're gonna pull this off to be honest. Consider reducing scope if possible.
>Consider reducing scope if possible.
This. I don't know why this lean mentality is lost on startups now, when only a few years ago we had all learned the lessons of trying to provide everything to everyone at MVP. This new mentality which is actually old mentality recycled, is anti-MVP.
If you have experience with a specific stack and are or were happy with it then you should take that one.
My backend is in c++, because I'm more fluent in it than any other languages. For database, I'm using mongodb. I heard bad sayings about it, but I decided to stick to it, because I like its programming interface, I think it's easier than using sql.
If you're looking to simplify as much as possible from your own perspective, consider using something like Next.js so you only have to learn one language. But you'll have to make other choices, so it's a trade off.
I wouldn't go 2 native clients on mobile, but perhaps ionic framework instead.
If you are into JavaScript, you should also check out : https://2018.stateofjs.com to know which JS technologies in general developers prefer the most.
I will give you some background about why we chose these technologies:
After working with several startups, we realized that almost all startups face one common problem:
They have to deliver the best product using the least amount of resources.
So, we were looking for technologies that would help us :
1. Build apps quickly using the least developer resources - (Save time and money) And 2. Build apps that are performant, scalable and reliable. - (Deliver Quality)
And the JS tech stack helps us fulfil both the aims. That’s why we chose it.
Thanks.
https://www.meteor.com
For the API, look to PostGraphile for GraphQL on top of Postgres (and of course, if multi tenant, there is row level security which is the direction I'd go today).
Clients have pushed me more and more in to Laravel. It has a great community and lots of great packages and tools.
(Similar to what railscasts was back in the day) laracasts.com
(Server setup and deployment) https://forge.laravel.com
SaaS (in a box) https://spark.laravel.com/
Envoyer (zero down time deployment) https://envoyer.io
Frontend: Vue
Mobile: PWA if possible
Web Frontend: AngularDart
Mobile: Flutter
Just be honest with yourself that learning something new and launching fast (in the interests of entrepreneurship) are not aligned with each other.
1. I don't like javascript. 2. It sounds like Flutter is working on adding web and desktop support, so it's possible that after I am done with the mobile prototype, that might be ready. 3. I am not much of a designer, so the fact that Flutter integrates easily with material components[1], feels like it will make it easier to get to a half-decent looking MVP. 4. I already know python, so don't really need to worry about server side code if I need it.
Another thing to consider, is if I had just focused on building something, rather than evaluating a bunch of frameworks, I would probably be half-way to a prototype by now. But because my project is more 'side-project' than 'startup idea', part of the fun is just kicking around some of these languages and frameworks. But if you are aiming for more towards the 'startup idea', probably best just to get started with whatever you are most familiar with.
[1] https://material.io/develop/flutter/
Reference Links: 1. https://graphql.org/ 2. https://hasura.io/
Then use 3rd-party services for the "standard" parts of your business logic (like Auth0 for authentication).
This stack allows to move incredibly fast on the front- and backend and really lets you focus on building value-adding features instead of dealing with complexity that comes from e.g. database workflows (Prisma) on the backend or state management on the frontend (Apollo Client).
EDIT: As a side-note, companies like Labelbox.com (raised 3,9 mio seed round) or Hyrecar.com (recently IPOed) are using a similar stack and have been vastly successful with it.