Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Ask HN: Which stack will get my MVP API off the ground fastest?
18 points by fastbeef on Oct 18, 2019 | hide | past | favorite | 30 comments
I have an idea for a service as a side business and need some kind of E-commerce API for it. The main feature is it’s going to produce one-off artifacts and none of the off-the-shelf solutions I’ve looked at really fit.

Basically I need a way to stand up an API with an /price/ endpoint and a /orders/ endpoint that run a bit of logic, put stuff in a database and trigger the payment processor flow. Easy-peasy except I have analysis paralysis over what to build it with and where to host it.

I’m comfortable with “classic” .net and dabbled in Node.js. I’d love to build it as an .Net Web API but the prospect of cloud hosting scares me (plus azure is freakin pricy).



I'm biased but I'd go with .NET if you actually want to get the thing built. Obviously use a new stack if you want to use it as a learning experience.

With .NET Core and Postgres you can get something stood up within a few days and host on a cheap Linode, Digital Ocean or another provider's box for $6 a month or so. That should last you scalability wise until you have enough money from it to do something else and gives you type safe, performant code.


This was my main plan, is hosting .Net Core easy to do on a bare-bones image like DO or Linode? Or is it worth to pony up for a Azure App instance?


It was a while ago now (I can't remember the last time I ssh-ed into the box) but I set up my blog using this guide [0].

I just logged into Digital Ocean to check, I'm running a single 512 MB memory droplet with a 20GB disk for $6 a month and apart from getting familiar with Linux (especially managing user permissions correctly), setup was easy, I run an Nginx reverse proxy in front of a Kestrel instance but I know people have said you don't even need Nginx.

I also used Let's Encrypt for a free SSL certificate and setting that up to correctly refresh on a CRON job was the hardest part of the whole thing.

I've no doubt the site [1] would fall over if it ever got anything like the HN hug of death but this would be easy to plan for assuming organic growth, I imagine there are fairly easy ways to set up load balancing for droplets on DO and moving the database onto a separate droplet etc should give you enough headroom for scaling.

The code [2] is way outdated now and awful quality but it's on GitHub.

Others who have more experience may say it's worth learning a certain cloud feature or serverless stuff but my gut feeling is it's better to get the thing out there and worry about that sort of stuff when you get there.

Edit: It's worth mentioning that [0] talks about developing the site on Linux, though I did that just to get a feel for Linux it's not at all necessary and much easier to do the development on Windows with Visual Studio then all you need to do is:

  dotnet publish -c Release -r linux-x64 
To get a published site to run on the Linux droplet/machine.

[0]: https://www.hanselman.com/blog/PublishingAnASPNETCoreWebsite...

[1]: https://eliot-jones.com/

[2]: https://github.com/EliotJones/LightBlog


Whichever you know best


This is the only correct answer.


Personally I would choose ASP.Net Core, hosted on a Microsoft Azure App Service with continuous integration from AppVeyor.

Benefits - Azure App Service free tier is awesome. AppVeyor have a 14 day trial that supports deployment directly from Git to Azure and .Net Core is awesome.

Here’s a blog I wrote recently which covers this exact implementation -

https://www.simongilbert.net/xunit-ci-azure-appveyor-aspdotn...

In terms of a database implementation, Azure’s NoSQL table storage is super cheap and awesome, as covered here -

https://www.simongilbert.net/dependency-injection-aspnet-mvc...


Can’t really go wrong with python + Django (or flask if you want to stay minimal). Sounds like you’ll need auth, so Django should support that out of the box.

Both will integrate easily with Postgres, and for flask, take a look at the peewee ORM.


It won't be quite as fast to get off the ground as Django since it's not batteries included, but as an async Python fan I like to spin things up with aiohttp + Postgres like here: https://github.com/francojposa/aiohttp-postgres or here: https://github.com/francojposa/aiohttp-auth

The upside is that aiohttp's built in server can be put up in production with a lot more confidence than Django's built-in server, meaning one less layer to configure


fully agree. I wrote a pretty complex API within a couple of days in Django + Django Rest Framework. I did not know how to build web applications or APIs before. Great experience.


What’s the easiest/best way to host python+flask?


I recommend using Dokku to save money! It’s the open source version of Heroku. You can deploy by adding one 2 line config file to your repo, the you “git push dokku master” and it builds and deploys your website in a few seconds.

You can use a digital ocean or light sail instance to host Dokku for way cheaper than Heroku and you have more control of the machine. Downside is Dokku is made for one server, so you can only really scale to like 64 cores before you need something else.

Most apps will never need more than one server realistically, but you have to determine that for yourself!

I use it for a Flask app. FWIW, I believe digital ocean has tutorials and an image to use to get Dokku off the ground fast!


Easiest? Probably heroku after you get past the initial boilerplate - but can quickly become expensive.

Most cost efficient would be to Spin up a cheap droplet in digital ocean, install docker-compose with a Postgres service and python image. In the python image, just boot up a Django server on port 80. If you need https, youll need to add something in front of Django, like nginx to handle ssl termination.

App engine could also be a very quick and cheap way - you get ssl, and domain for free, but you do need to buy into their way of doing things, which has a bit of a learning curve .


I'd use Gunicorn instead of Django dev server.


Yes, definitely for production use. Getting started though the dev server is fine for testing.


Apache + mod_wsgi


Usually, I cannot finish what I have started because of debating over which shiny new framework/stack I need to use. I overoptimize things and always try to code for worst case. I cannot resist to think about hundreds of users, peak performance, hn traffic of death etc. Eventually it never finishes or I loose interest.

Best thing you can do is to make something that just works in fastest way possible. Anything that can print out text will work. You will always have a chance to make it better once it starts to get some traction.


Stop wasting time debating and just use .NET, don't overthink things.


So many side projects I could have simply done over the years if I wasn't trying to figure out which LAMP/Rails/etc framework would get me there fastest... despite my not knowing PHP/Ruby/Python/etc


Whatever you feel most comfortable with.

As for .NET hosting prices, I don't understand why you need complex hosting. A smallish instance paired with SQL Server RDS (both of which can be hosted on Linux or Windows) should suffice.

Keep in mind that both AWS and Azure offer a free tier when you're starting up:

https://azure.microsoft.com/en-us/overview/startups/

https://aws.amazon.com/free


Whatever you know best.

"But deployment" deployment is cheap.

"But hosting" hardware is cheap.

"But time" time is _not_ cheap.

You don't need to screw around and learn another language/framework/ecosystem to get an MVP off the ground. You need to be able to hit the ground running and never let off the gas. This means you need to be able to change/adapt/feature what you need to. That takes brain cells. So does learning another language/framework/ecosystem. Don't make it harder than it needs to be.


.NET Core Web API is absolutely perfect for this and the fact you already have some .NET experience makes it a no brainer in my opinion.

Just get started knocking out a prototype running locally and break the analysis paralysis, you'll have no end of hosting options to choose from later. You'll be amazed what a 5 dollar a month Ubuntu server from Digital Ocean or similar will handle running .NET Core. Azure is obviously an option too but don't rule out AWS.


PostgreSQL with PostgREST might be enough for your needs if you’re mostly reading/writing to the DB. Can run on your own server, cloud, Heroku, etc.


Check this out: https://www.notion.so/gug/Todo-cafe7661e92b4fc1aebb7bcb3c103... I think node.js and Flutter can get you your MVP in one week assuming you can clearly articulate your idea.


found this to convert json to sql creates:

http://pojo.sodhanalibrary.com/ConvertJsonToSQL

and your selects, updates etc

http://convertjson.com/json-to-sql.htm


Plenty of cheap asp.net hosts, so don’t worry about cost. You don’t need to use Azure.


There is no framework that can match the feature set and the development speed of RoR.

If you are not familiar with ruby, go with a language you are familiar with. There is a clone in every major language. It’s just that RoR is the “original”.


This is kind’ve a bait question. I mean the “no duh” answer (as others have already mentioned) is “whichever you are most comfortable with”. I’m confused as to what other answer you could want


I would start with a data model then you can use this if you want to convert to c#: http://json2csharp.com/


For a MVP and to validate your business idea you could put something together with webhooks/ifttt.com/zapier.com/googleSheets.


node




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: