Ask HN: Choosing an entrepreneur's stack in late 2018?

19 points by rufugee ↗ HN
Hi HN. I'm a CIO by day, entrepreneur by night. I used to write a lot of code, but the last few years have been dealing with coordination of many projects post-acquisition and haven't kept my hands as dirty as before.

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 ] thread
(comment deleted)
Server, web, and 2x mobile is a very tough requirement to meet. If it's just CRUD stuff I'd settle on ReactNative for mobile and use either clojure or js (both have the same reach in this case, but arguably clojure gives you a more unified experience).

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

Definitely CRUD and won't be pushing the envelope on mobile...fairly basic app. Thanks for the info!
ReactNative appears to be too much of a risk for the majority of the time. Think about if somebody recommended Azure as the absolute default way to build a basic* CRUD app, instead of building a backend.

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

For me personally Rails for the backend and web frontend. React Native for the Mobile Apps.

If you have experience with a specific stack and are or were happy with it then you should take that one.

Take a look at the recently announced phoenix framework live view
I highly recommend vuejs for the frontend. I can't imagine I would make a webapp without it.

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.

What c++ framework if any do you use ?
I wrote my own c++ framework out of tcp socket.
It depends on your exact requirements. If it's something crud based go with an established framework like Django or Rails. Both of these have mature communities, ample tooling, and aren't going anywhere soon.

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.

I wrote a blog yesterday about the technologies that we consider as the best to build a MVP https://ideatostartup.org/blog/idea-to-startup/the-best-tech...

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 have to admit...I'm not the biggest fan of javascript (largely based on old history) and the node.js craze has passed me by...but I'm open minded. I'll definitely take a look. Thanks for your response.
And I have to admit that I am one of the biggest fans of JavaScript, so I may be a biased. :)

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.

Understood and well-reasoned. I am not completely against javascript...but would probably opt to use typescript if going down that path. However, I'll definitely consider your comments and the links you passed along.

Thanks.

Simple and to the point! My only out right disagreement would be on state management. If you have a GraphQL api, that means you are probably using Apollo. Just use apollo-link-state for your local state!
Honestly, even though it has its problems, Meteor is relatively simple framework that will even spit out mobile apps for you. It's probably the least effort (i.e. lines of code) to get a halfway decent app out, and it's scaled ok well as time has gone on. It has a bunch of weird quirks though especially in how it manages data.

https://www.meteor.com

They even offer a hosted product now, so you won't have to worry about the ops side of things either.
I'll give this a look. Thanks very much!
Be aware that MDG is now almost entirely shifting their attention to GraphQL and Apollo. I don't think Meteor.js will be maintained much longer.
Thanks. Care to comment on what problems it has?
You might look closer at react-native-web. It's early days and React Native can be painful at times however it does offer the idea of using one codebase for both mobile and web. It does require some care, flexibility and thought in design and development.

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

Backend: .NET Core Web API

Frontend: Vue

Mobile: PWA if possible

What did you use to write code in? If you're starting from scratch or starting from some existing form of knowledge even though it might be rusty, it's still in there. All technologies have weight to learn them. When you're bootstrapping something in the wee-hours and you just want to get shit done stick to tried and true instead of re-inventing the wheel. The majority of apps are CRUD. In this case Rails, Django, maybe Express/Node will do more than fine. Only use a whole JS front-end framework if your use case needs it for day one. There's a lot of overhead to learning them.
I'm a fan of Laravel for the back end and vue or bootstrap for the front end for quick MVPs.
Depends what you want to build. Give more details on your idea. You can implement core components and outsource rest.
Backend API: .NET Core

Web Frontend: AngularDart

Mobile: Flutter

Is serverless too bleeding edge? I am grubbing around for something similar with limited IT skills; know almost nothing about node.js world regrettably. I see serverless django etc. being mentioned more often.
I used serverless for the back end of VidHug (https://VidHug.com) and I've been happy with it. Was there a compelling reason to do so (other than to learn something new?)? I don't know. I also learned ReactJS, among other things.

Just be honest with yourself that learning something new and launching fast (in the interests of entrepreneurship) are not aligned with each other.

I am in a similar boat, going to try and kick off a side project during this xmas break. As others mentioned, you should probably consider reducing scope and picking one platform to MVP on. I was also planning on doing a multi-platform project, but after some thought, it felt like doing the MVP on mobile first would be best (for the project I have in mind, it felt like I could get more features, faster, into a mobile prototype. might be different for yours though). So I think I am going to try out Flutter, for a few reasons.

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/

You sound a lot like me (not a designer). Definitely going to look into flutter plans for the web. Thanks!
If you're choosing PostgresSQL, I would like to recommend 2 things: One is GraphQL and another one is Hasura, for real-time GraphQL queries. This will make your project really lightning fast.

Reference Links: 1. https://graphql.org/ 2. https://hasura.io/

Backend: GraphQL + TypeScript with Prisma on top of a MongoDB/PostgreSQL Frontend: React / React Native + Apollo Client

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.

I'm in a highly similar role, and doing MVPs for billionaire investors and CXOs who want to push and test their side-projects on a monthly basis. My answer would be: the "correct stack" (the one to have maximum impact with minimum time commitment) highly depends on the business idea itself: is it database-heavy, network speed critical, big data, AI requirements, related to crypto, related to offline businesses, .... Efficiency of languages and frameworks mostly depends on the libraries of the language, not anything else. I'd be happy to jump on a call with you, let's connect, email me at jakobm@mit.edu and I'll share my LinkedIn and references!