
Ask HN: What's your favorite way of getting a web app up quickly in 2018? - westoncb
I am still frustrated with the amount of incidental complexity required whenever I want to do this. My latest attempt was to use a Digital Ocean droplet with Django pre-installed. I guess the biggest issue there was setting up something so that I could easily deploy my local version to the droplet (ended up using git&#x2F;Github), and ensuring those two environments were in sync. I looked into Docker in some detail about a year ago, and I think it&#x27;s the only pretty good solution for this I&#x27;ve come across—but there&#x27;s a steep up front cost in learning&#x2F;setup etc. (or so it seems).<p>What services and technologies do you use when you&#x27;d like to quickly build a web app which may never be more than a prototype, but may also turn into something real? A big aspect of what I&#x27;m wondering is about automatically setting something up for keeping local&#x2F;production environments in sync, quickly deploying to production, and not having to mess with a bunch of server configuration things, user accounts, security, etc.
======
kristopolous
Vanilla php + html5up + sqlite3.

Everyone else here is trying to be stylish and fancy.

Your customers don't care what language it's in or whether the code is
beautiful.

No cutting edge incomplete frameworks, convoluted tooling, piles of inaccurate
documentation to read, inexplicable cryptic error messages with a bunch of
incorrect solutions on stack overflow, or other incompetently over engineered
bullshit.

Just go as vanilla, basic, and standard as possible.

True speed comes when you don't have to deal with other people's bugs and
poorly designed mistakes.

Don't rely on code written by flocks of people you'd never hire in a million
years.

~~~
eagsalazar2
In many areas of the US (the entire west coast for example), PHP is dead -
plain and simple. Independent of whether it is good or not, selecting dead or
obscure technologies for your clients is completely irresponsible and leaves
them with a maintenance catastrophe just because _you_ like php. Yes there is
a lot of hipster-ism out there in platform choice but there are plenty of
mature, fast, and popular options out there. PHP is _not_ one of them.

~~~
kyriakos
There are many successful companies and start ups that use PHP. The same way
they exist for other languages and platforms.

No start up became a unicorn because of the programming language they used.

~~~
cutler
With the possible exception of Clojure :). See Paul Graham on Lisp as the
secret weapon.

~~~
KingMob
What's the biggest Clojure start-up at the moment? Is it CircleCI?

Wal-Mart is pretty big into Clojure these days, but they were already huge.

~~~
cutler
Here in London there's Funding Circle and uSwitch. The Daily Mail (MailOnline)
also uses quite a lot of Clojure.

------
nooyurrsdey
For some reason people seem to constant doubt Ruby-ists and Rails Devs.

I completely get that other languages have huge benefits over Ruby. Golang
being compiled or Java running anywhere, etc... And ruby is slow, totally
understood.

But if youre talking about getting a functioning webapp up and running
_quickly_... no way anyone is beating a Rails dev in setting one up. The
piping and scaffolding are all built in and the gem ecosystem (for web apps
specifically) is so well maintained and robust that you can drop it in to your
app and get a functioning product with ease.

I know that's a loaded statement bc Rails becomes not so great in other cases
like building speedy backend jobs. But for a small user-facing web app it's
hands down the best.

~~~
fyfy18
I’d say the slowness of Ruby is really over exaggerated. For most web
applications it’s good enough, and the speed of development (how fast you can
ship) almost always outweighs any costs from it being slow.

You can always replace the endpoints that are slow with something written in a
more performant language like Golang or Erlang later.

I’ve worked on all sorts of applications from corporate CRUD to mobile billing
gateways written in Ruby (usually Rails), and in very few cases has Ruby
itself been the bottleneck.

~~~
technion
I think the rise of Mastodon is really pouring some hot water on that meme.
Lots of really small VPSs are running some fairly big instances. Although I'm
only personally using one of them, it's very fast, and the general view is
that isn't unusual.

I get that it won't hit Twitter scale but that matches the majority of "how do
I build a prototype" use cases.

~~~
busterarm
"Twitter scale" wasn't so much a Ruby/Rails problem as it was an RDBMS (write-
many + read-many = road to fail) and writing their own in-house message queue
problem. Starling performed worse than just about everything else out there
(and their Scala replacement Kestrel isn't much better).

One really insipid blog post and thousands of mindless followers later and the
damage to Rails has been done.

That's not to say Rails doesn't/didn't have other issues -- it did. It's just
telling that Twitter is the first example people reach for instead of anything
else.

~~~
jaggederest
Agreed. I've been working mostly in Ruby since 2006, over hundreds or
thousands of apps, depending on how you count, and I have only worked on 2
apps that actually had scaling problems with Ruby. The rest were 100%
improperly designed or scaled databases.

Twitter is certainly of a scale that I would not be using Ruby on the primary
load points. But even billion dollar companies don't often reach that scale.

~~~
jaequery
at twitter’s scale, its not jus ruby, you would also have problems with php,
python, node, and maybe even java. only language that will work well at that
point are languages built for concurrencies such as scala, elixir, and go.

~~~
busterarm
Or you break out your infrastructure into smaller components and move the more
demanding/critical parts of your infrastructure to that other language and
keep everything else you've built!

------
sampl
Quickly? Firebase + React.

Seriously, don’t overlook this combo. Auth just works. Hosting built in, no
backend or database server to maintain. No API, just subscribe to a collection
right from the view. It just works (and is easily swapped for the real deal if
you need it).

I made a guide/boilerplate to show you how (includes auth, CRUD, full text
search, stripe subscriptions):

[http://getfirefly.org/](http://getfirefly.org/)

~~~
KaoruAoiShiho
Too expensive to be worth it. I'm totally fine with outsourcing stuff that is
difficult and third parties can do better, but in this case the amount of
stuff you're playing egregious "cloud" pricing for is too much. Just spend a
handful of days learning one of the open source stacks and you'll be set for
life. It's totally worth it assuming you'll be making more than 1 app ever.

~~~
onion2k
Firebase's free tier is more than enough to play with an idea, and the next
tier up is (100k concurrent users) $25/month ... if that's too expensive then
there's something very wrong with your pricing model. Obviously this assumes
you're not storing much data per user - you wouldn't build a imgur clone with
it - but it's not _that_ expensive for any typical SaaS app.

~~~
roadbeats
Concurrent users are not the only limitation. Your app needs to fit the
bandwith limits as well. I had to shutdown a very simple app with a few users
because of ridiculous billing.

------
hellofunk
Full-stack Clojure with Clojurescript front-end is about the fastest workflow
I’ve ever used. The front-end part in particular with Reagent (a Clojurescript
React library) is a very quick workflow compared to _all_ front-end
alternatives. There are perhaps more valid options for server, but even still,
having the same language in both browser and server is very convenient both
for reduction in cognitive dissonance and automatic transfer of language-
specific data structures back and forth.

Highly recommend.

I should add that on both server and in browser your code base will usually be
a lot smaller than most other languages, which greatly speeds workflow as
well. As an example I once ported an Elm project to Clojurescript and it was a
4x reduction in lines.

Using Heroku to just git push the project works well too. Deploys in seconds.

If your project becomes more, it all scales well. Clojure is quite fast
compared to Ruby or Python, and Heroku scales with the click of a button. You
won’t have to port to a more performant language or host if you suddenly get
popular.

~~~
oreganoz
Does Clojurescript support stuff like hot code reloading? And does Clojure
have any good framework for an actor system implementation?

Because I've been interesting to get an excuse and try Clojure out and what
you're saying is really interesting.

~~~
hellofunk
Clojure has its own very effective strategy for multi-threading, and it is not
the actor model. The language is built for concurrency and much careful
language design was tailor-made for the challenges on modern threaded
applications. Rich Hickey investigated the actor model considerably, and
decided on a different model. In the core language, you have the choice of
using its normal futures/threads with highly efficient and lock-free data
structures, or using core.async, which is a model like Go channels. The latter
is particularly popular in the community and generally the recommended
approach.

Clojurescript offered the first and still (in my opinion) best option for hot
reloading via "figwheel" which nearly all Clojurescript developers use. It
automatically updates the UI as you code it.

Clojure, on the server, being a proper lisp with a real REPL, lets you poke
and inspect and reload parts of the running program with no recompile cycle. A
typical workflow there is to reload individual expressions or functions in the
context of the running program to alter behavior as you develop.

~~~
oreganoz
Yeah, that's nice for multi-threading but it does not seem as good for
distributed systems. This is why I still don't know if I should invest in
Clojure or Elixir.

Can the REPL on the server be used to update production systems with no
downtime?

~~~
hellofunk
Yes you can easily REPL into a live remote server and work with it while it is
running. But more typically, the REPL-driven development happens on your own
machine while you build, and then you just deploy the whole app. But it can be
useful for remote debugging when necessary.

For distributed computing across multiple machines, you are right that the
actor model has an edge there. Most applications don't require that, however.
There is however Onyx and other tools for this in Clojure:

[http://www.onyxplatform.org/index.html](http://www.onyxplatform.org/index.html)

I think the choice between Clojure and Elixir really comes down to how much
your particular idea or requirement genuinely depends on the actor model. The
vast majority of applications don't specifically require that, in which case
you have more flexibility.

~~~
oreganoz
I was just looking into Onyx right now actually, haha. It's the first result
when googling for distributed clojure. Not quite sold on the model, I don't
yet know how the internals work so it feels a bit too magic. But I only got a
quick peek so it would be unfair to dismiss it.

The vast majority of apps don't require distribution but I'd like to use a
model of computation that would support it when needed so as to avoid large
refactoring. And, preferably, allow for code reuse with systems that are
distributed.

EDIT: Watching a talk about the internals of Onyx made by the creator. I gotta
say, I'm liking it more and more.

~~~
hellofunk
Don't forget that with Clojure, anything you would do in Java or on the JVM
using any language, you can do in Clojure. So for example, Scala has Akka, a
powerful actor model. And of course, you can use that in Clojure if you want:

[https://github.com/gaverhae/okku](https://github.com/gaverhae/okku)

(This is just one way to use Akka).

~~~
oreganoz
Interesting, okku seems completely outdated but I'll try to look out for an
Akka integration as it is a really powerful and stable actor model
implementation. Has backpressure and all of the other reactive niceties too.

You might just have converted me to clojure, haha.

~~~
hellofunk
I think most Clojure developers will tell you that it is wise at first to just
use Java libraries directly, if you can. Look at wrapper libraries to see how
the author approached the Java interop, then do it yourself. You are more
likely to attain something that is maintainable, flexible and appropriate for
your individual style and needs than using what someone else built for the
purpose of interop for _their_ needs.

~~~
oreganoz
Yeah, I'll probably do just that. Thankfully, I can research it more in my
spare time.

I think I'll start with a hobby-project and see how well it goes.

~~~
hellofunk
The Clojurians Slack channel can be very helpful if you hit any snags.

~~~
oreganoz
Thanks for letting me know and for the many replies.

------
marcus_holmes
I write the server-side in Go, cross-compile to a Linux binary, and set that
up as a service on a vanilla Ubuntu box (usually Digital Ocean). Deploying a
new version is a matter of sftp'ing the new binary (and any templates, images,
etc) over the top of the old one and restarting the service.

If I need a database then I use Postgres, and the setup for that can be a
pain, so I get it documented/scripted using Ansible.

If I need something more complex than plain HTML on the client side then I use
a Makefile to synchronise Webpack + Babel + React (and the hot reload during
development), and the compiled bundle.js becomes another file to copy over.

I realise it's not very 2018, but to be honest I've kinda lost the will to
live over learning anything more meta at this point.

~~~
dom96
Your start is good but you add complexity on top of it. Install Golang on your
VPS, clone the source code on it and compile it there instead of messing with
cross compilation.

Also use sqlite to avoid the pain of setting up a SQL server, there is no need
for it.

You can then easily get systemd to supervise your binary.

This is how I host all my web apps, the main difference is that I don't use Go
but Nim. If you want a great framework match up then check out Jester + Karax,
see how I developed the Nim Forum using this combination.

~~~
joobus
Why put the source on the VPS? Go cross compilation is much easier then you
make it sound.

    
    
        GOOS=linux GOARCH=amd64 go build
    

Nim can't beat that.

~~~
dom96
That's awesome, I didn't realise it was that easy with Go.

Of course, I would say keeping the source on the VPS is just as easy.

------
cdcarter
Heroku and Heroku Addons are freely available at my company, so it’s the
preferred deployment target. I work on a developer productivity team so being
able to stamp out apps fast is one of our most important requirements.

Heroku has given us a ton of flexibility, and with that we’ve been able to
become very opinionated and standardize on one stack. 12 factor design
patterns (and the opinions of Django-cookiecutter) allowed us to stop arguing
about how to do something and just get it done.

We use GitHub for source control and Heroku Pipelines for CI and testing.
Every push runs functional tests, every PR spins up a “review app” with full
dependencies and test data.

Heroku Postgres is our system of record database. Postgres is stable, fast,
and full featured. With jsonb fields we’re able to store complex structured
build log data and quickly aggregate on it. Heroku Data Clips are super useful
for quick reviews of the data without building a report into an app.

Heroku Redis and S3 are the only other data stores. S3 stores build results
and end user assets, and Redis handles anything in memory. We use Brandur’s
transactionally drained job queue pattern ([https://brandur.org/job-
drain](https://brandur.org/job-drain)) to defer tasks.

The apps currently all render to plain ol HTML and for the most part take a
document centric approach to front end. Additionally, our apps are all API
first and we use CoreAPI to create CLI clients automatically. Those are
usually our administration tools which help make sure we are API complete.

~~~
vkeenan
I'll chime in on the pro-CI discussion and leave the language discussions to
"what's the best front end lang" posts.

I just got done revamping my decade-old PHP experience to full OO, and really
upped productivity with the Slim framework to build a REST API for our app.
I'm using Salesforce platform as the database backend, which is slow but I
encapsulate all the business logic there. That's all cool, but, it didn't seem
like I was hitting the mainstream of productivity.

Long story short, I'm on the Google/TypeScript/Material/Node bandwagon now.
The dev environment is easy, and there's a wide choice of Node deployment
platforms. I believe we can get the kind of deployment productivity we want
with using a CI pipeline based on Github or Bitbucket that squirts commits to
Google App Engine.

------
amingilani
Oh man, do I love this question.

For the stack, Ruby on Rails with React.

But my secret sauce is the DevOps:

\+ GitLab

\+ GitLab CI

\+ Heroku

\+ Git + Git tags

I also add some magic npm scripts to take care of semver tagging. And with my
build:

\+ All pushes are tested

\+ All changes to master are tested and deployed to staging

\+ All semver tagged commits are tested and deployed to production

\+ Also, all database migrations happen automatically.

I documented my entire process by building and deploying a sample app here:
[https://www.toptal.com/devops/effective-ci-cd-deployment-
pip...](https://www.toptal.com/devops/effective-ci-cd-deployment-
pipeline#contract-just-respected-software-architects)

~~~
ai_ia
Can you give me a resource to get started with devops. I have only heard these
ideas, but don't have any clue why at all they are required.

~~~
rhizome31
The idea is to automate repetitive tasks as much as you can because doing them
by hand takes time and is error-prone. Build, deployment and testing are tasks
that are well suited to automation.

~~~
amingilani
This!

I started by automating things that would take too long. At first it was
taking code from my repository and deploying it to Heroku. Then I discovered
that CI services literally gave you servers to run scripts on to interact with
your code after a git push, so I started running tests in these servers.

Fast forward a few years and I automated everything except writing and
maintaining the codebase.

I even run linting tests in CI so no badly written code can even make it to
code review.

------
asadjb
Django web app deployed to Heroku is the fastest way I know of right now.

Django because that's what I know best. I can code a basic CRUD app (which is
basically 90% of all apps I have ever needed to build) in a few hours.

Heroku because a simple procfile and push to a git remote is all that's needed
to launch the application.

I think the best piece of advice I would give is to use whatever you're most
comfortable with. If you use a new technology that saves you 50% on deployment
time, but adds days to the time you need for actual development because you
are unfamiliar with it, is not worth it in my opinion.

Deployment/setup takes maybe an hour or 2 for the kinds of basic app I think
you're talking about. Development is easily days or weeks. Optimizing
deployment over development is optimizing the wrong thing in my opinion.

------
hodgesrm
I use Swagger/OpenAPI to define the REST API, which is fast and makes the API
including the main data types easily visible.

To implement the server side I typically generate Java JAX-RS skeleton code
that can run in Jetty using Swagger codegen. You fill out implementation code
and the app is off and running.

On the client side I generate Angular client stubs using Swagger codegen, then
fill build services and UI components on top. For CLIs or other tools you can
take a similar approach or just write the REST calls directly.

Code generation from an OpenAPI spec makes this process a lot quicker as it
takes care of most of the boilerplate code necessary to process REST requests.
It's especially helpful for making quick changes and also helps you to get to
a stable, easily understandable API which is necessary if you decide to turn
the service(s) into a real product.

Docker is incidentally a godsend for systems with multiple services,
especially if you work in polyglot environments.

------
keithwhor
If you need to build an API quickly we just launched
[https://code.xyz](https://code.xyz) on Thursday. No server provisioning, no
routing, nada, just write a JavaScript function, hit deploy, and you have a
scalable "serverless" backend. You can deliver any type of content. (We have
command line tools available as well, if the web environment doesn't suit all
your needs.)

Our company is called StdLib, we're focused on making API development,
deployment and management effortless - we're backed by both Slack and Stripe
[1].

[1] [https://stdlib.com/blog/stripe-code-xyz/](https://stdlib.com/blog/stripe-
code-xyz/)

~~~
sandis
That's pretty cool! Literally took me 10 seconds to sign up and deploy the
sample function.

~~~
keithwhor
Thanks! That's what we've optimized for. :) Glad you enjoyed it! Let me know
if you have any questions.

------
jacobsenscott
Rails + heroku is pretty much instant. If you want to pay a little little less
a single vps instance can run the web app and the postgres server at the same
time.

~~~
dorfsmay
With a single VPS, you're missing the DB backup that is probably the most
important piece if the puzzle provided by heroku.

~~~
bufferoverflow
Depends on the DB size. For small side projects I do weekly SQL dumps, 7-zip
them, and email as attachments to my GMail, where they get automatically
tagged and marked as read.

~~~
nmca
This guy hacks.

------
sb8244
I use Elixir/Phoenix mainly because I think it is fun and think that side
projects should be fun. If it has the potential to become something more, I
believe that it is a great production language for a company and would stake
my business on it. Usually deploy to Heroku free tier for my up and fast
prototypes.

Frontend will either be React or plain ol' JS depending on how complex the
idea is.

~~~
beckler
Coming from nodejs, phoenix is incredible. Out of the box, phoenix just uses
nodejs to generate all your frontend assets, and channels are incredibly easy
to use. I'm still learning about how elixir works under the covers, but so far
I'm really impressed.

~~~
ai_ia
How much learning curve if One doesn't know Erlang to get speed up in phoenix?

~~~
beckler
You don't really need to know Erlang.

Elixir is like if Erlang and Ruby had a child. It's a functional languages, so
I guess there's a bit of a curve there. Plus you get stuff like macros, which
are incredible, but I thought was some kind of voodoo magic the first time I
encountered them.

There's a pretty decent tutorial on the elixir site, and the phoenix site if
you want to learn.

As for the learning curve, I didn't struggle with it for very long at all, but
your results may vary.

[https://elixir-lang.org/getting-started/introduction.html](https://elixir-
lang.org/getting-started/introduction.html)

[https://hexdocs.pm/phoenix/overview.html](https://hexdocs.pm/phoenix/overview.html)

------
arsalanb
A year ago I would say Flask + Firebase, but now I have began to understand
that that is the quickest way to build a web app FOR ME.

The best tech stack is the one that gets the job done FOR YOU, in the least
amount of time. If it takes me 4 weeks to learn some arbitrary <INSERT NOUN
HERE>.js framework to then be able to do stuff "quickly" then it better cut
down development time by atleast +4 weeks to be worth it. No doubt, some
amount of Yak shaving is worth it for the future (when you already have
acquired a skill and no longer need to spend time learning) but in a scenario
where speed of dev is important, go for technologies that you know and are
comfortable with (which differs from person to person)

Only general piece of advice I would give is to use SaaS tools to do heavy
lifting. Tools like Auth0, Firebase Cloud Functions and authorization, etc can
save you quite a bit of time compared to the learning curve they come with.
Not to mention these products have teams behind them who work round the clock
to make them developer friendly, so if you can't understand and get them
running quick enough then IMO the tool is flawed not the user.

------
ireflect
Here's my template:

Backend in Go, hosted on Gitlab with CI to build it and create a docker image
(also hosted at Gitlab).

Server is a plain Debian server hosted on Digital Ocean, with some light
configuration with Ansible. A single docker-compose.yml brings up the
application along with any service dependencies. Generally I use nginx-proxy
with its letsencrypt companion so I can multiplex several docker web services
and do SSL termination, all from within the docker-compose file.

Frontend in angular, react, or react native.

This is easy, automated, cheap, and not too exotic. I can host multiple things
on a single server if I want, but easily splice them off to their own server
later.

~~~
westoncb
This sounds a lot like what I'm looking for. I haven't looked into Gitlab at
all yet, so I'll to check them out.

~~~
Rjevski
GitLab has been a pain for me lately.

Chose them for a client due to built-in CI (as opposed to Github), but the
HTTP response time on the web UI makes it painful to use - I'm routinely
seeing ~1s response times on pull requests and CI pipelines, not to mention
that the provided CI "runners" seem overloaded and your jobs often stay in a
pending stage for several minutes (can be solved by running your own instance
of gitlab-runner on an AWS box).

Personally I'm moving that project to Bitbucket - they now have CI pipelines
too.

------
callekabo
Not having a server at all is the easiest. I run my front ends on S3 /
CloudFront. Backend is run on Lambdas, with state stored in DynamoDB/SimpleDB
(can't wait for serverless Aurora though!).

create-react-app and aws-amplify gets you really far in a hurry.

I then normally use react-redux, @redux-offline/redux-offline, react-router-
dom, and flow-bin.

Examples: \- [https://gitlab.com/kabo/synchronize-
swatches](https://gitlab.com/kabo/synchronize-swatches) \-
[https://gitlab.com/kabo/hydrant-map](https://gitlab.com/kabo/hydrant-map) \-
[https://gitlab.com/kabo/cryptodo](https://gitlab.com/kabo/cryptodo)

For more backendy stuff I use serverless to manage lambdas.

Easy as :)

~~~
swyx
as a frontend dev new to this stuff - how do you keep your lambdas secure?
literally anyone can see your secrets?

I'm gonna go through your code, thanks for sharing, just wanted to ask in case
you have a big picture insight about how serverless auth/security is best
done. this stuff freaks me out because i know nothing about it.

~~~
callekabo
I'm afraid I don't follow. What secrets are you referring to? Secrets in the
code running on the lambda can't be seen by anyone. If you mean secrets to
invoke the lambda I usually have lambdas be completely open (no auth required)
or have users log in with cognito and use aws-sdk invoke the lambda, which
takes care of auth for me.

------
sfifs
Google app engine is my go to for web apps that need to be used in production
at a small scale while I'm still evolving the functionality. What you
prototype transfers into prod surprisingly well. The best part is I don't
really have to worry about security - I just setup one of the default
available authentication types and define access control in the routes in
app.yaml. You don't have to be worried a hacking group will somehow subvert
your instance if you miss applying a security update or mess up firewalls etc.
If it's an internal app and your company is using Google Apps for business,
you can even restrict access to people logged in to the company domain very
easily.

The persistence layer is a bit problematic at very small scale (think hobby
projects) but if you are willing to spin up a cloud SQL instance which
wouldn't be an issue for paid projects, you get an excellent secure auto
managed environment.

~~~
cdonati
What do you find problematic about Cloud Datastore for small-scale projects?

I work on an open source implementation of it, so I'm always curious to hear
about use cases and opinions.

~~~
sfifs
Basically the lack of straight SQL support. "SQL-Like" means you end up
calling their custom API functions and having to understand its unique API
semantics in sufficient depth to build your persistence layer. Life would be
so much simpler if it simply supported a subset of SQL - ideally with a
standard interface like the Go's SQL.

------
bazjones
The quickest thing to develop in is normally what you know. I find django the
most productive web framework for things that might take off (for purely
static sites I use Hugo and serve the site from S3, and deploy it using
cloudformation - a great combo that lets me bring up a landing page in an hour
or so).

It sounds like deployment is what you want to simplify. While there is extra
overhead in learning to use docker, deployment is one of the major issues it
solves. I spent a day or two learning docker and docker compose, and now I
have a local dev environment I can work in, and I'll be able to deploy to a
host quite simply. Makefiles are an excellent, simple companion to docker, so
it's also worth learning them.

The big benefit of this is that you abstract your code from how to run it. So
today you might like django, tomorrow ruby/language du jour, but all of that
would still be built as a docker container which you'd be able to deploy to
the same host with minor modifications.

Also, to set up user accounts, create storage buckets, etc check out
terraform. The language it uses, HCL, is a trainwreck if you need
conditionals, but apart from that it works well and is simple (too simple,
that's the trouble). So a combination of:

* whatever web framework you're productive with

* built into a docker container

* with makefiles to ease administrative tasks

* terraform to configure a cloud backend

is a very powerful combination. But yeah, more stuff to learn. At least this
approach means you can swap out the web framework for any other language and
nothing else really needs to change.

~~~
westoncb
This is a quite a bit in-line with my thinking. Probably best to go ahead and
spend a little time figuring out Docker (and the best way of using it with
some hosting service... I'll check out terraform).

------
chuckdries
I'm surprised nobody is talking about Express for the back end. Maybe it's
because I hail from the front end world, but I'm already so comfortable in
javascript I'm faster in it than if I had to learn anything else.

For the front end, I like Vue because it's just react with less boilerplate.

~~~
dyeje
It blows my mind that there still isn't a polished ORM for the node.js /
Express ecosystem.

~~~
billdybas
Datastore Agnostic:

\- JS-Data - [https://github.com/js-data/js-data](https://github.com/js-
data/js-data)

SQL:

\- Sequelize -
[https://github.com/sequelize/sequelize](https://github.com/sequelize/sequelize)

\- Bookshelf -
[https://github.com/bookshelf/bookshelf](https://github.com/bookshelf/bookshelf)

\- Objection -
[https://github.com/Vincit/objection.js](https://github.com/Vincit/objection.js)

\- TypeORM -
[https://github.com/typeorm/typeorm](https://github.com/typeorm/typeorm)

NoSQL:

\- Mongoose -
[https://github.com/Automattic/mongoose](https://github.com/Automattic/mongoose)

\- Thinky -
[https://github.com/neumino/thinky](https://github.com/neumino/thinky)

~~~
oreganoz
Yeah, well, what else did the romans ever do for us?

~~~
mateuszf
Aqueducts?

------
andrei_says_
Rails still rocks, ruby is still beautiful and elegant, Heroku is still
incredibly easy to deploy to. Vuejs is a good option for complex data driven
ui.

~~~
burlesona
This is my go-to as well, incredibly easy and fast to get going but also
scales reasonably well.

The only caveat I’d say is I prefer Roda over Rails for APIs and simple
projects.

~~~
andrei_says_
Do you happen to use rodauth with rails? And sequel?

------
DatabaseGuy42
My answer is probably seen as unconventional on Hacker News, but keep an open
mind and you'll be pleasantly surprised.

I suggest you sign up for a free account at
[https://apex.oracle.com/](https://apex.oracle.com/) to try out Application
Express (APEX). It's a free, web-based development tool for building modern,
responsive and secure web applications.

It's a mature product that has existed for around 18 years, and it has a long
list of features, check out the list here:
[https://apex.oracle.com/en/platform/features/](https://apex.oracle.com/en/platform/features/)

Since all these features are built in, you don't need to go shopping for the
usual mix of libraries, build tools, external services, etc. For 95% of what
you want to build, it's all there already as part of the framework.

The best thing is that you can get started and be developing web applications
within minutes on this platform, without writing a single line of code. Even
though you start out with no code/low code, you can add as much code as you
want and go to any complexity later. The framework doesn't stop you from going
"full code".

There's also a great, friendly and vibrant APEX community that shares
experiences, develop plugins and tools, etc. See
[https://apex.oracle.com/en/community/community-
resources/](https://apex.oracle.com/en/community/community-resources/)

Also, if you are worried about vendor lockin (any more than AWS or Azure or
Google or whatever "framework du jour" locks you in), it should be noted that
you can download and use APEX for free on your own infrastructure (or a
DigitalOcean droplet or whatever). Also, APEX can run on the Express Edition
(XE) of Oracle, so you can build and deploy web apps without ever having to
pay Oracle a single dollar.

~~~
mirko22
Oracle and free in same sentence is laughable to say the least, everything
they touch turns into money grabing venture, and even if free now there is no
guarantee it will be free tomorrow.

~~~
DatabaseGuy42
The fact remains that Oracle has not charged a dollar for APEX for the last 18
years and counting.

------
DanHulton
If you have the luxury of picking your stack, and don't mind using modern,
clean PHP, try Laravel and Forge.

Laravel is a solid framework, and Forge handles the deploys, even going so far
as to be able to deploy automatically when you push to master. Plus, you can
use Laravel Spark to build an application framework base, with user login,
teams, payment, all that written for you.

If you're not able to pick your stack, well, Ansible is pretty easy to learn.
You can use Vagrant for the local dev, and ansible-vault for production
secrets management. Deploys become a single command line, and that includes
when you want to push an environment update.

~~~
Implicated
I'll second this.

Laravel + Laravel Homestead (Pre-configured Vagrant VM) + Laravel Forge [2]
(Server config + deployment processes) makes my life _too_ easy.

It doesn't even have to be a PHP/Laravel project for this process to _really_
make your life easy.

The Homestead VM has the same services installed and configured the same was
as the forge server. Nginx (or Apache), mysql/mariadb, postgres, sqlite,
node/bower/grunt/gulp, redis, memcached, beanstalkd, elasticsearch, go, etc

Homestead has pre-built commands to make it _very_ easy to add new
sites/projects, does the port forwarding for you, handles the shared folders
easily. Forge's UI allows you to not have to ssh into the server for things
like restarting nginx/mysql/postgres, 2 click let's encrypt SSL certs,
configure/restart queue workers (via supervisord), configure cron scripts and
schedules, deploy via git with custom deploy scripts. You can create
databases, create database users and manager their permissions. Create
firewall rules and manage daemons.

I spend all day in the PHP/Laravel ecosystem so it works for me - but I find
myself pushing non-PHP products through the same pipeline most of the time
because it's so easy and just works.

1\.
[https://laravel.com/docs/5.6/homestead](https://laravel.com/docs/5.6/homestead)
2\. [https://forge.laravel.com/features](https://forge.laravel.com/features)

------
abhi21284
I use Django cookie-cutter([https://github.com/pydanny/cookiecutter-
django](https://github.com/pydanny/cookiecutter-django)) to quickly create a
production-ready Django project with docker enabled. For Frontend, I use
normal Django templates with
intercoolerJS([http://intercoolerjs.org/docs.html](http://intercoolerjs.org/docs.html)).

It can be deployed on any docker machine with docker-compose.

------
innomatics
Django, Docker and AWS ECS and ELB.

Absolutely worth the effort to learn how to build a Docker image and put
together bash scripts to push the image and update an ECS service. We have a
base project which includes nginx and uwsgi set up to simply serve the Django
app and static files on port 80.

Having an ECS Docker cluster with spare capacity greatly assists getting new
projects up and running quickly, especially if we can run the test site under
an existing domain managed in AWS. Then we can just add new rules on an
existing ELB and piggy back on the SSL certificate.

With this workflow we spend the time getting a good image running locally
(with local environments vars/secrets) and we know the deployment side is
taken care of, and can be scaled if and when is needed. This also has the
benefit of forcing dependencies and environments to be fully documented from
the start (in the Dockerfile).

The next step, if the project gains traction is to move the Docker
build/push/service update into CI space. We've moved away from ansible now
largely, there's a use case for more complex setups for sure but am interested
in K8 capabilities to help there.

~~~
jsmeaton
May I ask how you’re managing secrets with this setup? For example, the secret
key or database URL.

Our current setup deploys an env file which is sourced before starting the
process. I’m less sure how this translates to a production docket deployment.

~~~
slow_donkey
Docker shouldn't affect your secrets management because secrets shouldn't be
baked into your image anyways. I tend to expose them as environment vars and
currently use Kubernetes to expose a keyvault url/password so the app can
automatically grab all the secrets

~~~
jsmeaton
We manage them with env vars now. But we use salt (encrypted) to deploy a
secrets file onto the server which is sourced before the app is started. With
something like ECS I didn’t know if you could feed it an env file, and if you
could, how you could make it available.

------
csytan
Python3 + tornado + peewee + sqlite3 + vuejs hosted on Digital Ocean.

I've been using this combo in production for
[https://www.cozycal.com](https://www.cozycal.com) for a year with no
problems.

Likes: \- More control than hosted environments \- Dirt cheap

Dislikes: \- More responsibility than hosted environments

------
meesterdude
It's still totally rails.

I mean... I can start a new project, create some models/tables and relations
between them, and deploy it to heroku with admin login and decent interface
and file upload... in half an hour?

and... this little project I create in half an hour, can be scaled up to
handle tens of thousands of requests a second. Or wrapped with a native
navigation and served up to mobile/desktop users, or integrate with any number
of apis and services. And I can put it down for 5 years, come back and
(almost)instantly know how to continue working on it; development in rails
often has a certain obviousness to it. You spend time solving the interesting
problems instead of the boring ones.

But the real kicker, is doing it in rails is enjoyable and effective; one
person can deliver similar software that takes multiple teams many months to
do in megacorps.

I've also had a number of managers hiring for phoenix/python/java stacks tell
me they have a hard time finding the sort of developers they like working with
outside of rails. I found that surprising - but rails does have a culture of
effectiveness and happiness that other stacks do not share.

Anyway, If you have an idea and want to get something working but that can
also carry you beyond prototype; Rails is a great choice. A complete
development framework, well documented, great community, strong history,
designed for enjoyment and effectiveness; that checks all the boxes for me.

------
greenyouse
Serverless + managed cloud services for heavy lifting (cognito, dynamodb,
cloudsearch) + basic logging, alerts, tracing stuff

static site or React on frontend

Pretty quick to roll out and free to run if the app never takes off. If you
need to scale later, you can build your own serverless versions of some cloud
services to save money.

~~~
dharma1
wonder why this isn't getting more love?

------
apexkid
Oh man no Java lovers here. I believe with the entry of Spring boot and Spring
roo project which provide scaffolding and convention over configuration model,
this just might be able to compete with RoR ecosystem in terms of speed and
robustness.

Take a look: [https://projects.spring.io/spring-
roo/](https://projects.spring.io/spring-roo/)

------
Jdam
1) Spring Boot on Google App Engine free tier

2) Managed Postgres on GCP/AWS

3) Frontend framework of the day, like React or Vue.

4) Take 1-2 hours in the beginning to set up ci/cd (like Circle) to make
things 10x more convenient.

~~~
friedman23
>4) Take 1-2 hours in the beginning to set up ci/cd (like Circle) to make
things 10x more convenient.

Can you expand more on what you do here?

------
klenwell
Google App Engine free tier with Python Flask. I have my own starter repo:

[https://github.com/klenwell/hip-flask](https://github.com/klenwell/hip-flask)

For a more full-featured boilerplate kit, see:

[https://github.com/gae-init/gae-init](https://github.com/gae-init/gae-init)

------
0xCMP
The easiest thing to do is Heroku. They've really nailed it down and the
+$2/month for their basic instance is easily worth it if you don't want to
spend the time getting everything setup.

Automation requires infrastructure and infrastructure is cheap only if you
know how to set it up.

I run ~3 side projects using Heroku to host a Django project with a GraphQL
API talking to Heroku Postgres and Netlify the host the ReactJS frontend. I
serve the API on heroku's free domain and put the react project under
app.projectname.com and use token auth to talk to the API.

Deployments are super simple. Including updates to and managing the database.

~~~
isuckatcoding
Sorry What did you mean by $+2? I see $7 for their hobby instance..?

~~~
matt2000
I'm guessing he means "$2 more than a $5 droplet that you maintain yourself."

------
giancarlostoro
Usually CherryPy, Mako and MongoDB. Its how I won TADHack Mini 2018. I was
able to focus on getting things to work more than how they work. CherryPy is
older than Flask and OO based. Mako is a performant templating library that
Reddit used and still might. MongoDB is just a document database so schema
that changes isn't a big deal aka perfect for prototyping.

However I am making a shift to using D so I am learning DiamondMVC which is
inspired by ASP .NET MVC and takes full advantage of Vibe.d and all the rest
of the D ecosystem is available to me as a result. If I need something done in
a weekend CherryPy and Mako with any DB.

If I wanna get something quick that I wont have to worry too much about
scaling then D with Vibe.d or D with DiamondMVC is great. The best part about
D is there is no crazy learning curve like Rust and it is very highly
performant. Also the VS Code plugin is nice enough to make me productive
enough.

------
d_burfoot
Reading this thread is making me want to write a blog post titled "Technology
Fragmentation is Making Us Stupid and Wrecking Our Careers".

Every hour a developer spends learning a new language/stack/framework hotness
is an hour that could be better spent studying something real, like
mathematics, CS fundamentals, or UI design.

~~~
finaliteration
I used to chase the latest framework/language/hype machine and realized I was
spending way too much time just playing catch up (this was especially the case
with JavaScript/Coffeescript/Livescript/TypeScript...).

Now I’ve firmly put myself into focusing on one or two languages and learning
them well, even as the “newest kid on the block” comes around that claims to
want to replace every back-end language under the sun. It’s allowed me to
focus on things like design patterns, integration development, and learning
about infrastructure and good architecture principles, which I feel have added
a lot more value than listing fifteen different “hot” skills on my resumé or
whatever. I’m also a lot happier not having constant development information
overload.

I get that keeping up with trends is a good thing to do, but sometimes you
need to just ignore the chaos going on and plant yourself in one ecosystem for
awhile just to take a breather.

------
sebringj
GatsbyJS with Netlify has auto deploy with git. I have not had an easier way
to combine all the things I need for web as React is just bad ass, GatsbyJS
has no webpack setup, Netlify combines hosting and deployment together and in
a team if you need and it has cloud functions. I'm sorry if this sounds like a
commercial for Netlify as I have no connection but I really like how it snaps
together so easily.

------
djbelieny
Meteor JS with Meteor UP [https://www.meteor.com/](https://www.meteor.com/)
and [http://meteor-up.com/](http://meteor-up.com/)

------
aroman
frontend: create-react-app

frontend hosting: surge.sh (free)

backend: node + socket.io (usually on a separate domain with CORS)

backend hosting: heroku (free)

database: MongoDB

database host: mlab (free)

everything in TypeScript, of course, because when you're in a hurry, you
simply don't have time for your code to not be typesafe! (actually though, TS
is a maaaaajor time saver, especially for smaller projects!)

------
slow_donkey
Imo Docker doesn't have too high a learning curve at the start. It's just when
you move up to docker compose, Kubernetes that it can be overwhelming.

My opinion is that when you're starting out, just go with a PaaS like Heroku.
You can simply maintain a separate dev/prod branch and it'll automatically
update the server.

All the issues you mentioned can be solved it just takes some investment
somewhere (time if you do it today yourself / money to pay a PaaS or someone
else to do it).

We personally use Kubernetes to solve these issues since we get stateless
builds and simply have environment variables that change things like database
connections, api keys, etc between our various environments. But again this
took a few weeks to setup.

------
callumprentice
It may be too simplistic for most people’s needs but I’m a big fan of
[http://surge.sh/](http://surge.sh/) for publishing simple, static sites.

~~~
lucasverra
we love netlify also

------
golergka
Rust + Diesel + Tokio.io + Postgres. I don't do web frontend (just apps and
bots), and this stack took a LOT of time to get used to, but now I enjoy full
static typing, perfect ORM-ish abstraction level (Diesel is kind of unique in
that regard), built-in integration testing so it's compatible with SQL
migrations and functions in Postgres and pretty good perfomance.

~~~
Dowwie
Could you elaborate on what you mean by built-in integration testing? I am
using Rust now, full time, and can't wait for better testing support. There
are RFCs to do just this. However, the current built-in testing situation
leaves much for improvement.

~~~
golergka
Oh, I should've worded it better. It turns out it's pretty easy to set up
Diesel to test your application code together with setting up a lock Postgres
database. I had to put it up myself, but overall I just copied the approach
Diesel uses for it's own integration test: have a test subproject and set up
the database in it's custom compilation script.

[https://github.com/diesel-
rs/diesel/tree/master/diesel_tests](https://github.com/diesel-
rs/diesel/tree/master/diesel_tests)

Now, every time I alter application code and/or SQL migrations, I immediately
test them together automatically.

------
roadbeats
I used Go and Elm most recently for building listenparadise.org a few weeks
ago. Go is productive, simple and fast, and Elm also felt like that to me. You
can read about why I quit JS in favor of Elm at
[http://azer.bike/journal/elm](http://azer.bike/journal/elm)

------
dannyw
I think Dokku solves a bunch of your pain points:
[https://github.com/dokku/dokku](https://github.com/dokku/dokku)

~~~
matt2000
Dokku is _preeeeeetty_ good but you kind of end up messing around on the
server eventually to get things working, or fix things, etc.

If you're into that, or have CPU/RAM requirements that would be prohibitively
expensive on Heroku then give it a try (I run it for a couple things on a
cheap but powerful dedicated machine). If you're just doing something simple
it's probably not worth it, just get a hobby dyno and go that route.

------
mariushop
MeteorJS (Node) + React for
[https://eddtor.com/editor](https://eddtor.com/editor), really quick (1 month
from idea to launch), more recently going for Go full stack (server side +
template/html package for front-end). After staying on the bleeding edge of
Javascript ecosystem for about three years, I missed the simplicity of a
reliable server-side language + the battle tested JQuery (I know, right?!)
plug-ins.

~~~
iopuy
Spoken like someone having spent sometime with passportjs.

~~~
handbanana
Care to expand?

------
rutierut
\- Vue.js

You can embed the Vue js file in your page, add <script></script> and you're
ready to get started, no limits every feature is available. Of course for
anything other than the most simple stuff you'll want some structure in your
app so I use vue-cli which sets up the basic stuff.

\- Cloud functions

Can be as simple as writing one in your browser in the azure/GCP/AWS console
and as "complex" as using for example the serverless framework to deploy.

That's it!

------
brobinson
Rails + Postgres (+ Heroku if you need hosting)... same as 2008

------
victor106
Frontend:- React/Vue/Angular

Backend:- Spring Boot with Kotlin

I must say I am so impressed with what Pivotal did with Spring Boot. It’s
amazing.

~~~
nicostouch
It's so not fast to develop with though. I used to use it exclusively for
years just cos that's what I knew. Switching to Rails now because Rails blows
it out the water for speed of development. I still have a lot of love for
Spring Boot just because of the power/flexibility and how incredible it is as
a framework and marvel of engineering. But starting a spring boot app vs.
starting a rails app is night and day in terms of how far along you already
are with a Rails app especially if you use something like
[https://bullettrain.co](https://bullettrain.co)

~~~
GlennS
As someone who really, really hated previous versions of Spring, and had vowed
never to work with it again, is Spring Boot different enough to be worth a
look?

~~~
sv12l
Yes it is.

------
vinc
Vue + Rails 5.2 + Postgres + Dokku

With Bootstrap and Devise (auth) and many other ruby gems / npm packages, we
can prototype a project extremely quickly with this stack by simply following
the conventions of the community and trying to avoid writing too much custom
code.

------
dredalious
Two part answer 1/ how do I built it 2/ how do I run it.

The run part became easy the last few years: Dockerize all the things, run
them on AWS ECS with Fargate (and add whatever else you might need, e.g. ELB,
S3, SQS, ...), no servers to setup or maintain.

The built part, that actually became harder... You need to figure out the best
tools for whatever problem you're trying to solve, and the list of tools keeps
growing. I default to very conservative standards, because I'm familiar and
productive with them: Java (Spring Boot), Vue.js and PostGRES, with sometimes
a bit of Node or Python and some ElasticSearch or DynamoDB thrown in the mix.

------
appdrag
If you need an instant Backend (database + api builder) but also a CMS in the
cloud you can check our combo:

Cloud Backend:
[https://cloudbackend.appdrag.com](https://cloudbackend.appdrag.com) and Cloud
CMS: [https://appdrag.com](https://appdrag.com)

It's a fully serverless solution, nothing to install on your side, you can do
everything in the browser directly. and we have a free tier :)

Also we have no lock-in, you can export everything in a ZIP, static files, db
backup in mysql format, API source code in your language (Node.js, Python,
Java, C#, Go, ...)

------
dudleypippin
Django running on Zappa
([https://github.com/Miserlou/Zappa](https://github.com/Miserlou/Zappa))

~~~
bazjones
Thanks, this looks awesome. I didn't know django apps could run on lambda.

------
tmlee
Looking for a self hosted solution that works like heroku, consider
[https://github.com/dokku/dokku](https://github.com/dokku/dokku)

Been using that to host small projects here and there of late. Works well for
keeping the app 12factor, and worry less about Devops

------
radus
I like to use Vue included as a script tag with flask on the backend. Slightly
outdated seed project:
[https://github.com/radusuciu/quickvue](https://github.com/radusuciu/quickvue)

I like it because it allows me to get started without thinking of any build
steps.

------
sunstone
I also use Django and Postgres. For deployment (keeping things in sync) I use
Git :)

Set up your bare repository at say /root/myapp in your cloud server then clone
this to your local dev area. Then clone it again to your cloud server django
directories say /web/myapp . Finally git ignore you settings.py file so it can
be different in each server.

This can actually scale up to reasonably sized prod/test/dev/local_dev cloud
server setup by using appropriate branches though I know the traditionalists
would be squirming in their seats.

------
0x4f3759df
1) ASP MVC .NET Core 2 project 2) Get a linux vm 3) Write a WSL Script to push
to linux vm (lftp + sshpass)

~~~
rchowe
ASP.NET Core in a (Linux-based) Docker container and Amazon Elastic Beanstalk
works pretty well.

------
ljm
It tends to depend on what I'm setting up but these days I've shifted from
Heroku onto services like now.sh and Netlify (not to discount Heroku as a
viable option here) when I just need to get something online, quick and dirty.
There's less commitment which is ideal because you're not going to know the
full requirements for your app until you've begun to flesh it out more, so you
can buy yourself some time to figure that out as you go along (e.g. what
happens if you go for microservices?).

That said, never mind 2018...there are a whole load of joys (and horrors) that
fresh devs these days won't ever really understand the same way because
nothing like Docker or Heroku existed even just a decade ago.

You know, paying £3 a month for a shared hosting plan with 100MB disk space,
and PHP4, phpmysql, Apache at your disposal.

Downloading FileZilla and deploying by dragging and dropping the new folder
into the client, making sure to overwrite.

Debugging by using the same client to edit files and add logging in
production.

Having to write htaccess rewrite rules for 'pretty' URLs that any developer
today will think is just default behaviour for a web framework.

Having to use SVN and CVS, if using version control at all...

It's not like you can't still do any of this, it's just that dragging
`index.php` into an FTP client isn't the default advice for deploying a simple
site any more. For better and for worse.

~~~
stnmtn
I just started at a new job where using filezilla to drag and drop changes is
what has been done... It was previously one other dev working on it and after
a week of there being me and him there were already a couple of major
conflicts that happened. I set up git on the server so at least now we can do
"git pull" like a real web company

I don't know how you guys did it 10 years ago, I couldn't even last 2 weeks
with that system

------
brillout
On the framework side:

If you need an ORM and you don't need any interactive views then Django is a
good choice. (Interactive views are views that are stateful in the browser: an
interactive graph, an interactive table, a To-Do list, etc.)

If you need interactive views then you'll have much easier time using a
React+Node.js framework such as Next.js
([https://github.com/zeit/next.js](https://github.com/zeit/next.js)) or
Reframe
([https://github.com/reframejs/reframe](https://github.com/reframejs/reframe)).
And if you need an ORM you can use one of the many Node.js ORM such as
[https://github.com/typeorm/typeorm](https://github.com/typeorm/typeorm)

If your site is static then go for a static site generator such as
[https://github.com/nozzle/react-static](https://github.com/nozzle/react-
static). ("Static sites" are webapps/websites that are HTML-static: The HTML
doesn't need to be dynamically generated at request-time but is static, no
server is required, and your app can be statically served.).

Disclaimer: I'm Reframe's author.

------
NightlyDev
Three second setup of PHP sites with atomic updates and automatic DB
migrations:

Pre-built LXD image with MariaDB, nginx and PHP. Git for deployment.

Provisioned and live in three seconds with support for rollbacks, migrations,
atomic updates and zero downtime.

Should work well for most other scripting languages too.

------
TimLeland
All you need is Laravel and Laravel Forge. Here is more detail on what I use
[https://timleland.com/side-project-tech-stack/](https://timleland.com/side-
project-tech-stack/)

------
notamy
Elixir / Phoenix backend, React.js frontend. Nothing has beaten it in terms of
development speed for me.

------
tiangolo
I created a project generator to solve that for my use cases:
[https://github.com/tiangolo/full-stack](https://github.com/tiangolo/full-
stack)

It allows me (and the teams I work with) to go from clean Linux to web app 5 -
10 min while keeping best practices and allowing the system to scale.

It's all based on Docker and Docker in Swarm mode clusters (setup included in
docs) Backend with Python Flask Interactive docs with Swagger/OpenAPI HTTPS
automatic handling with Let's encrypt handled by Traefik Asynchronous tasks
with Celery Front end with a modern SPA (Angular, React, Vue) Relational DB
with Postgres, although I'm also using a modified version with CouchDB (I'll
create a project generator with that later) CI/CD intergraded And more
stuff...

------
slimshady94
Nodejs + Angular + Heroku. Surprised to see only 3-4 nodejs comments till now,
compared to many more Go comments. Has the tide turned, is Go the new nodejs?
:(

~~~
iopuy
asking the same question i've asked all js-centric responses above... how do
you handle authentication?

~~~
slimshady94
I use passportjs without thinking.

------
juskrey
Clojure + pedestal on backend, ClojureScript + either om.next for complex
projects or reagent for simple

------
Andrenid
The size of this discussion and the sheer number of different ways this can be
done is mind boggling.

I'm all for having choices and I'm glad we're beyond choosing between
FrontPage, Dreamweaver, and Notepad, but no wonder new people to web
development are so overwhelmed.

------
simonw
If I need a database I use Django on Heroku. It's free for up to 10,000
database rows and inexpensive should you need to grow past that.

If I don't need a database (or any persistent storage) I use Zeit Now,
deploying Python apps (Django, Sanic or Uvicorn) via a Dockerfile.

------
pbreit
Web2py (Python framework) includes an Ubuntu (and other) setup scripts plus a
Fabric fab file for one command deploys that works pretty well. Web2py comes
with a bootstrap welcome app that gives you user mgmt, authentication, admin
and DB access with about a click.

~~~
tim333
I've web2py on digital ocean. A good thing is it's multi app so if you want
another you click new and have a new hello world almost instantly. Setting up
www.myhello-world.com and linking it takes about 5 min.

re

>A big aspect of what I'm wondering is about automatically setting something
up for keeping local/production environments in sync, quickly deploying to
production, and not having to mess with a bunch of server configuration
things, user accounts, security, etc.

The config, accounts default to secure useable stuff

Auto is sync doesn't really happen but its a matter of clicking "pack all" on
local web2py and then "upload" on the one on the server.

On the minus side it doesn't have that many users.

------
bo1024
I have trouble understanding where all this demand for webapps come from. As a
browser of the web, the only webapps I use are Google's email, maps, and docs.
What are all these webapps for and why doesn't HTML (maybe with a touch of
javascript) suffice?

~~~
nlawalker
I have a slightly different question - many of the answers in here make it
sound like creating and deploying a new web app is practically a twice-a-week
kind of thing for quite a few folks. What kinds of things are people so
frequently creating and putting up in a hurry?

~~~
z92
A large portion of the apps are intranet thing, instead of Internet. Business
apps that are used in house.

Plus almost all websites are a kind of web app. And these have a complex
backend for managing the content. While we browse the front end.

------
factsaresacred
Zeit Now, without a doubt.

1\. npm install -g now

2\. run 'now' command in the folder containing your app files

The files are uploaded, your app is deployed and your clipboard contains the
URL. So simple it's like cheating.

[https://zeit.co/now](https://zeit.co/now)

~~~
Kimitri
I was expecting to see more of Now in these comments. I don't have any real
experience with it but it did seem like it would make deploying as simple as
possible. Care to share any of your experiences with it?

------
faitswulff
Pure JS and GitHub Pages. Dead simple deploy, static pages, no dependencies
other than browser compatibility. The web is fun and easy again.

------
hayksaakian
Heroku is still a great choice if you're willing to pay to never think about
infrastructure.

On the other hand if you're willing to ask for help there are plenty of
freelance IT admins who would set up a digital ocean box with the DIY
equivalent of Heroku.

~~~
jpochtar
Not trying to be snarky but... how is it cheaper to hire a freelance IT person
to set up something for you, and help you when it breaks/changes, than $7/mo
for Heroku?

~~~
ceejayoz
The issue with Heroku is it _rapidly_ gets more than $7/month if you hit _any_
sort of scale.

~~~
hellofunk
Absolutely. We went from free tier to about 100/month in nearly no time with
Heroku. It’s worth it though. Heroku takes care of all sorts of stuff, and
that fee is still cheaper than hiring a sys admin for a small business.

------
georgecalm
I’ve been happy with Dokku hosted on DigitalOcean with the Postgres plugin for
persistance and the Grafana plugin for stats gathering (optimizing for
validated learning). I have a base image of that on DO for new projects. (Also
Dokku Postgres takes care of cron-based encrypted backups which it will
happily store on DO Spaces; in case anything happens to your server) I use
Node on the backend with a simple passport-based session cookie auth and the
apollo GraphQL server for APIs. I use nuxt for isomorphic (progressive?) vue
components along with the Apollo vue module to communicate with the GQL
server.

------
FahadUddin92
If its a basic app with CRUD features, I use WordPress. Else PHP (LAMP stack)
and JavaScript (MEAN stack) are great options.

------
closed
The last couple prototypes I put up for work were using Flask and Vue on
Heroku. I've been really happy with both how quickly they went up, but also
how understandable everything is even a year later (they are only used
internally).

The piece I wouldn't mind cutting out is heroku. If you do end up going the
docker route, docker-machine is nice for being able to quickly put things up,
"push" updates to digital ocean:

[https://docs.docker.com/machine/examples/ocean/](https://docs.docker.com/machine/examples/ocean/)

------
pageandrew
Rails + whatever framework works for the desired frontend

------
Rjevski
Django or Flask, backed by PostgreSQL, both on Heroku.

Once you scale you can look into doing it manually with AWS when the cost
savings start to become worthwhile (Heroku ends up being quite expensive for
high traffic).

------
AngeloAnolin
This is what I use when I want to prototype something really quick.

VueJS

Surge.sh

Firebase (if there's a need to store data)

I think I already have a pretty established workflow when starting things up,
due to numerous stuff I have built previously. Hence, the process of doing
things multiple times (and making some tweaks to along the way) seems to make
it really fast and straightforward.

My take is that just do repetitively what you feel comfortable at and at some
point, you will reach a level where everything feels so easy and natural.

------
tuxidomasx
Amazon Web Services free tier, elastic beanstalk running node.js, S3 for
static files and stuff or basic web page hosting

or

Google Cloud free tier, Google App Engine running node.js, google cloud
storage for static files and stuff or basic web page hosting

both are git-compatible and deployments are as easy as : "eb deploy" or
"gcloud app deploy"

for front end stuff, if its just a prototype i just copy a bootstrap 'live
preview' design that i like, and jquery stuff together.

------
Method-X
I'm using Meteor with React and Semantic-UI-React. Not everything has to be
realtime with Meteor; use Meteor.methods() instead. For most projects, I can
definitely recommend using this stack.

[https://www.meteor.com](https://www.meteor.com)

[https://react.semantic-ui.com](https://react.semantic-ui.com)

[http://meteor-up.com](http://meteor-up.com)

------
madhadron
> A big aspect of what I'm wondering is about automatically setting something
> up for keeping local/production environments in sync, quickly deploying to
> production, and not having to mess with a bunch of server configuration
> things, user accounts, security, etc.

Here's the simplest operational approach that I have yet found. Use Amazon RDS
to run PostgreSQL as your production database. Architect your system to be
one, static binary that is its own web server, contains all web assets
compiled in, everything. It takes its configuration from a very small number
of environment variables.

Start a CentOS VM. Copy the binary to it. Write a systemd service definition
that sets the appropriate environment variables and runs the service as a
dynamic user (so you don't have to worry about setting up accounts on the VM).
Copy that definition to the VM and run `systemd daemon-reload` to make that
service available. To deploy a new version, copy static binary of the new
version to the VM and restart the service.

That glosses over lots of details, but it's your starting point for thinking
about this. Every deviation adds operational complexity and has to pay for
itself in reduced effort elsewhere.

~~~
49bc
Most languages don’t support static binaries. Other than Go I can’t think of
any that make it easy.

~~~
madhadron
Yup. It's a pain. A first compromise is to have the language runtime
installed, and create a single file for your code and assets, such as a heavy
JAR for JVM based languages or an egg in Python.

------
dfitzpat
My preferred solution is Waxx [https://www.waxx.io](https://www.waxx.io) \- It
is Ruby and very fast. Mostly functions, no classes. Deploy like this:

waxx deploy stage or waxx deploy prod

The deploy script can be as simple as:

cd /path/to/folder && git pull && waxx migrate && waxx restart

Disclaimer: I am the author of Waxx and I wrote it to be as simple as possible
yet still high performance and flexible.

~~~
GordonS
First time I've heard of it - how would you say it compares with Rails? Is
there much of a community behind it?

~~~
dfitzpat
There is not much community yet. It is pretty new. It is very different than
Rails. It is more of an RPC/Rest system than an MVC system. In my testing on
FreeBSD with Postgres it is close to 10x faster than Rails. It is a bit faster
than Go and a bit slower than Node. It is quite simple to write and the code
itself can be read in a few hours (at most). I'll be posting some sample apps
this summer.

------
lastofus
After setting up server instances from scratch by hand multiple times over the
years (and spending several hours each time), I finally bit the bullet and
learned Ansible.

I can now take a bare VM image on DO/AWS to a fully functioning Django app.

I ended up modifying: [https://github.com/jcalazan/ansible-django-
stack](https://github.com/jcalazan/ansible-django-stack)

------
zitterbewegung
I use Django and jQuery on top of a pythonanywhere. A bunch of people say that
you need PostgresSQL and MySQL setup. Or that you need gunicorn behind a nginx
setup . I just don't do those things and run Django with Debugging off on
pythonanywhere.com or on a VPS like Amazon Lightsail.

If you only need a static site though I have used Cactus but Jekyll could
work.

------
sbhn
If I’m doing static html, even with minimal javascript perhaps even making an
Ajax call client side, I am happy to use github pages or gitlab pages. See
here a 2 min video setting up a static html website with gitlab pages.
[https://youtu.be/kvZ9teaA5zI](https://youtu.be/kvZ9teaA5zI)

------
jgzomo
WeDeploy is less well known but offers a great (and growing) near-SaaS for
building and deploying fully-featured web apps quickly. Surprising utility and
my personal choice. I recommend checking it out and giving it a shot. Plus,
the team there is responsive and always ready to listen to and meet user
needs. Anyone else tried WeDeploy?

------
cdnsteve
After reading most of the comments im really suprised to see folks still using
vm servers and managing the stack themselves. Seems like high enough overhead.

I know cost is on peoples minds so why not serverless? Haven't seen anyone
mention aws lambda or gcp cloud functions. You get a massive free tier , like
2 million requests and free db...

Anyone doing this?

~~~
swyx
yeah i feel like im so disconnected. there's literally one comment about aws
lambdas, and a couple about firebase but pple still go "oh its so expensive"
when in reality their stuff will almost never bust the free tier

------
GijsjanB
React, Express, Postgress, Nginx all in Docker containers managed with Docker
Machine on a Digital Ocean box. It may not be the most simple/quick solution,
but with some copy/pasting I can get something up rather quick and it's super
flexible. Need OCR? Add a Tesseract container. Need a fileserver? Etc.

~~~
iopuy
how do you handle authentication?

~~~
raarts
Don't know about GP but in a similar setup I use keycloak.

~~~
cbzbc
Looks good - though it does introduce a dependency on java.

------
CyanLite2
The “new” Microsoft stack is incredibly productive.

For $0 and less than 15 minutes I can spin up an ASP.NET Core app with Angular
6 with a free private git repo in VSTS. CI/CD fully setup to deploy to a free
Azure App Service, for a few extra bucks per month I get deployment slots to
separate out my dev/test/prod deployments. LetsEncrypt for SSL. Another $5 a
month I get a fully managed SQL database that connects with my built in
ASP.NET Core Identity to manage user logins, forgot passwords, etc. Auto-
Healing, SSL, Backups, Geo-replication, AutoScale, DNS, CI/CD, cross platform
IDEs, and feature/bug tracking are all included. So if my app gets hot I just
pay more money to allow it to scale up and nothing else on my stack has to
change.

All this in 15-30 minutes from my MacBook without fooling around with docker
files, virtual machines, or Kubernetes.

------
Grue3
I wrote about it on my blog (that was in 2014 but nothing really changed since
then).

[http://readevalprint.tumblr.com/post/101841449553/its-
alive-...](http://readevalprint.tumblr.com/post/101841449553/its-alive-the-
path-from-library-to-web-app)

~~~
chunkyslink
I hope you are being sarcastic when you say, nothing really has changed since
then.

~~~
Grue3
I'm saying this regarding my architecture. If I started again, I'd probably
use the same technologies. And, I mean, everyone else is recommending Django
and Ruby on Rails which are even older so why would you pick on my comment
specifically?

------
kangaroodingo
meteorJS([https://www.meteor.com/](https://www.meteor.com/)) seems to be one
of the easiest framework you can use for building a web app quickly and pretty
straightforward to deploy so you dont spend too much time is learning/setup
etc...

------
nikdaheratik
For me, it's Laravel + Git(hub) + Bootstrap/AdminLTE/Whatever frontend.

But I already know this stack and I already have a server setup that can just
let me fork a new app into one of the subdirectories or subdomains. If you
want something public facing, there are only so many corners you can cut as
being pwned is much more embarassing than having a prototype crash and burn
during a demo.

Frameworks are good in that they let you make something fast + powerful
without having to worry about alot of the details once it is setup. The
problem is you have to tackle the learning curve for the setup. Finding
something with good documentation is the best way to handle this even if it
takes more work to learn than you want to spend on a "throwaway" project.

------
o1lab
Deriving an application using the best of frameworks - I believe is still very
arduous. Yes, [ROR, Django,..] have helped but they kind of have been stagnant
in their ease of deriving an app for many years.

Hence I am using a home-brewed stack on Express (Node.jS) + Nuxt (Vue.js) +
MySql + Google App Engine.

This is based on Xmysql - which is absolutely a zero configuration way to
derive REST APIs.

Xmysql : [https://github.com/o1lab/xmysql/](https://github.com/o1lab/xmysql/)

I plan to make internal framework open source in coming few months.

It has built in features of regular frameworks + Authentication +
Authorization + ACL + Payments (Stripe) + Microservice (google-cloud
functions) + Pubsub (background jobs)..

------
janklimo
Rails app started from a solid template deployed to Heroku takes minutes. This
is what we use for all projects:
[https://github.com/lockstep/rails_new](https://github.com/lockstep/rails_new)

------
qwtel
I've used [https://github.com/apex/up](https://github.com/apex/up) and I like
it a lot. With your AWS credentials configured in the environment, it boils
down to running

    
    
        $ up

------
nreilly
I find Linode/whatever with dokku and Django to be pretty quick and
consistent. I have a dokku instance internally for testing, and do production
deploys in the same way. It uses heroku buildpacks via herokuish which makes
deploying anything straight forward.

    
    
      Create Ubuntu VM (with applicable config (ssh keys only, automatic security updates, turn off cruft)
      Install dokku
      Install PostgreSQL plugin for dokku
      Install letsencrypt plugin for dokku
      Create app in dokku
      Add remote in git repository locally
      Add buildpack triggering things/stuff to let Django run in this environment (gunicorn, collectstatic stuff, etc)
      Git push dokku
    

Edit: formatting

------
diehunde
Why not using something already stacked like google App Engine? You can choose
the language and not worry about the deployment. Or AWS Elastic Beanstalk?
Same thing. Everyone here seems to be posting their favorite stack when the
question is about simplicity and quick iterations. I mean, my favorite stack
would be a rails app running on docker and that would take me 1 hr to setup
but only because I've done it dozens of times. If I didn't know how to
configure an easy sync pipeline, I would go with the solutions I mentioned
before. They both have wizards to guide the process the first time and you
have a clear view of the costs.

------
jypepin
The fastest way to get a web app running, for free is Rails + github + Heroku,
imo.

It's very fast to scaffold a new app, with diverse options you'd want
(react/vue/other stuff). Host it on github, create a heroku app and push it.

~~~
hellofunk
What do you mean host it on github in the context of using Heroku, which would
be your host? How is github involved?

~~~
jypepin
Heroku has a github integration to handle CI and automatic deploys[1]. This
way you can, for example, have your app deployed to heroku automatically when
you update master, etc.

[1] [https://devcenter.heroku.com/articles/github-
integration](https://devcenter.heroku.com/articles/github-integration)

------
sharno
I was mostly using with React and firebase for fast prototyping. Then I
started using more of Flow to have some type safety. But overtime I started
looking for a stronger type system that would allow me to experiment and build
stuff easily. I feel like I started getting good enough with Purescript to
build stuff fast, couldn't have the time yet to build a big thing to compare
how fast my work flow is compared to react. But I'm sure that I spend far less
time debugging in Purescript than react, and bugs are mostly logical bugs that
could be prevented with better types structure and testing with Quickcheck

~~~
sharno
I'd like to hear though from someone who's using F#, asp core with fable for
example and know how the productivity is and the maturity of libraries.

------
pkphilip
The Crystal-language based Amber Framework
([https://amberframework.org/](https://amberframework.org/)) is a good
framework to use if you want to ramp up a web application with a backend
database and a full MVC stack in next to no time.

It also helps that it is an extremely fast framework.
[https://github.com/tbrand/which_is_the_fastest](https://github.com/tbrand/which_is_the_fastest)

Other frameworks like router.cr, Raze etc are faster performing, but getting
started with a db middleware etc will take a bit longer.

------
ttiurani
For my last project for a new business website, I just used Github pages w/
Cloudflare for SSL, all free.

Because the site needed a unique brand look n' feel, I opted out of Jekyll and
used Foundation 6 as a base and node-sassed my styles with npm scripts and
custom svg:s. For cache-busting I run hashmark with postbuild. Then I just
write HTML.

Development is easy, things work nice, site is very fast and it looks great.

Moral of the story: starting with just static HTML and CSS is the right choice
a lot of the time. Don't complicate things before you need to. And when the
need to, only make dynamic those parts that can't be static.

------
dawie
+1 for Meteor

Also look into Bubble for really quickly getting something up and prototyping
an idea.

------
bobbydreamer
Firebase + NodeJS ::Firebase takes care of the authentication that's a big
plus and good videos in youtube(David east, Jen person, Chris esplion,
Traverse media) ::Firebase provides you hosting as well with HTTPS.

------
paulmendoza
Bubble.is - I can code all the languages needed to code my own site but Bubble
made my latest project (sigparser.com) way quicker to develop than if I had
tried to use one of the existing frameworks. If it was a really large project
Bubble might not be what I use but for something smallish needing users and
calling some APIs it was great.

I wrote this about my experience.

[https://medium.com/@mendoza.paul/sigparser-creation-story-
bu...](https://medium.com/@mendoza.paul/sigparser-creation-story-bubble-is-
net-core-aws-lambda-api-gateway-1667213bf0cb)

------
Diesel555
I have a Django / Angular cookie cutter project that I use to start all my new
websites.

The first thing I do is update them to the newest versions on the basic
website, save that as my new cookie-cutter, then make the website.

------
coreymaass
I build many of my web app prototypes on WordPress. I give a talk about it:
[https://wordpress.tv/2017/06/05/corey-maass-rapid-web-app-
de...](https://wordpress.tv/2017/06/05/corey-maass-rapid-web-app-development-
on-wordpress/)

I had another idea last Thursday and had a prototype completed by the end of
the weekend. WordPress takes care of ORM, routing, user management, admin and
most of the features every web app requires. This leaves you to develop the
actual unique selling proposition.

------
meain
The simplest way that I find to get an webapp running is by using
[parcel]([https://github.com/parcel-bundler/parcel](https://github.com/parcel-
bundler/parcel)) for bundling the frontend and using a python
[flask]([http://flask.pocoo.org/](http://flask.pocoo.org/)) server for
backend. I don't think it could get any simpler than this. Now if I have a
database, I usually go with mongodb along with pymongo.

------
dvko
Go + HTML + CSS. Doesn't get much easier than `mkdir my-app` and you can
sprinkle over fancier tech if and when you need it.

My specific Go toolset consists of the following packages:

* urfave/cli

* gorilla/mux

* html/template

* keyselhightower/envconfig

* database/sql

* rubenv/migrate

------
geekuillaume
I wrote a NodeJS API "Kickstarter" to create my REST API quick and deploy them
to Kubernetes (or Docker) easily: [https://github.com/geekuillaume/nodejs-api-
kickstarter](https://github.com/geekuillaume/nodejs-api-kickstarter). For the
front-end, I use React-boilerlate: [https://github.com/react-
boilerplate/react-boilerplate](https://github.com/react-boilerplate/react-
boilerplate)

------
victords
I've been getting into serverless computing for a few months now, and it's
been a pretty good experience, and generally hassle free.

The only downside I saw was learning a bit of cloud formation to automatize
the stack creation. But I guess if you want a quick prototype/deploy you might
as well do it manually and learn it later.

I really recommend you to take a look at AWS's serverless products:
[https://aws.amazon.com/serverless/](https://aws.amazon.com/serverless/)

------
catfood
I don't do anything special for prototyping, I just use what I normally do if
I were creating the real thing.

> django-admin startproject > copy+paste my webpack config for React >
> copy+paste my general management scripts into the package.json (mostly
> scripts to build the client, and if working locally also start a server)

Then if I want to deploy it, I just install nginx and gunicorn and again
copy+paste my configs for those.

If I want to use mysql it's not too much trouble, takes 10 mins to get it up
and running and my application hooked up to it.

------
nsx147
Yii2 with aws lightsail bitnami LAMP...mysql in the lightsail instance or RDS,
nothing new or crazy but I know it and can get it done extremely quick.

If the webapp takes off, I can figure the rest out later.

------
hopsoft
Rails (server side rendering) + Heroku.

------
Zaheer
Check out [https://aws.github.io/aws-amplify/](https://aws.github.io/aws-
amplify/)

I haven't actually used it but looks pretty cool

------
nikhildaga
We use React + React Native + Nodejs + GraphQL to build web and mobile apps at
[https://ideatostartup.org](https://ideatostartup.org)

------
vfulco2
I love dokku for simple deployments. Even a blind truffle pig can do it on DO.
Good for a bunch of microservices. Only issue at the moment is slapping Hugo
on the raw domain.

~~~
cbzbc
How do you work with testing local changes outside dokku ? Because the one
thing I've found with a docker setup is that I write increasing amounts of
stub code to avoid going through the docker rebuild/redeploy cycle when doing
development.

------
franzwong
If your problem is about deployment, how about writing in Golang? You can
build linux binaries even your machine is a Mac. Then you can just scp the
binaries and run.

------
jimnotgym
I'm experimenting with Anvil[0] at the moment. It's a bit like a web version
of Delphi or Visual Basic. You build everything in Python. The front end stuff
gets compiled to JavaScript. You can publish your app in a click. There is a
built in database service, authentication and integrations with Google docs.
It has a lot of potential.

[0]:[https://anvil.works](https://anvil.works)

~~~
hnrodey
Anvil is pretty sweet and had a well reviewed Show HN post a few months ago.
Price is a little steep unless you plan to get serious, quickly.

~~~
jimnotgym
I don't disagree, but do bear in mind

1) not everyone is a start-up. Established businesses also hand to put up web
apps

2) you can use it for free with some limitations

3) Some other cloud services can work out quite expensive defending on your
use case. Vs a Linode bare metal server, yes it is pricey, vs Heroku maybe
less so?

------
danielecook
I like flask and I also like to use boilerplate or skeleton projects. These
are projects that have a fair amount of infrastructure set up (testing, views,
user accounts, even admin stuff). There are a lot of them set up on github
with varying degrees of added features. I’ve begun to maintain my own for the
sake of saving time.

The only challenge is setting up the appropriate infrastructure for
deployment. Fabric works well for that.

------
Blackstone4
Not sure if there is a much quicker way than using a solid monolithic such as
Django or Ruby on Rails.

I'm used to React.js and TypeScript/GraphQL server on the backend. I would use
Netlify to quickly deploy React.js and Apex Up to deploy the server to AWS
Lambda. Apex Up doesn't really use AWS Lambda in the normal way. It will
create a reverse proxy and each AWS Lambda function is like a mini server a la
Heroku.

------
cascada
I use Rust and my own templates

------
honzajde
Yesterday I setup my blog on Hugo. Very happy with that. Hugo is written in go
but you only need to write markdown and deal with single config file. I
managed to find theme that supprts overlay for images and various other
options for images. Simplicity is the name of the theme. There are also themes
with ready up forms, might be enough for your particular scenario.

------
sidcool
I m pleasantly surprised to see Go so many times.

------
motohagiography
Flask hosted on pythonanywhere. Recommend highly.

------
memonkey
1\. flask-base for back-end

2\. create-react-app for front-end

3\. digital ocean for hosting

I just cp files from local to server and use a couple different bash scripts
for dev vs prod.

------
goofballlogic
I try not to do this as I never bought into the idea of evolving a prototype
into a production app.

My first prototypes tend to be in create-react-app with session-storage (state
dies with browser session). I publish this as entirely static content on
Amazon S3 (via CloudFront).

After that if the use case seems solid I choose the appropriate tech for the
job

------
moltar
Heroku, I don’t think it can be any easier.

------
sbr464
create-react-app + netlify on the frontend. For the backend services,
kubernetes on gcp with Ambassador from Datawire. It’s an extremely solid and
easy to use gateway based on the Envoy load balancer. I have a few templates
I’ve created that has reduced creating a new app/service down to a few
keystrokes.

------
rbongers
For every language, every framework, people are going to have their own
favourite ways to actually make sites fast.

I'll say though, surge.sh is the fastest way to get up static sites and zeit
is the fastest way to get up webservers. One command to deploy without any
configuration and you're done.

------
dvfjsdhgfv
Quickly? Laravel Voyager. You can set up a functional app with several tables
and relations between them and different access levels for different users -
all this without one line of code (I'm not counting the artisan commands
here). It's the shortcut of shortcuts.

------
Kimitri
I work at a Drupal shop so I'd probably just go with Drupal. Working with what
you know is the fastest way to get stuff done. Drupal 8 is also quite a bit
more elegant than the previous versions and the developer experience is pretty
good nowadays.

------
goofballlogic
I try not to do this as I never bought into the idea of evolving a prototype
into a production app.

My first prototypes tend to be in create-react-app with session-storage (state
dies with browser session).

After that if the use case seems solid I choose the appropriate tech for the
job

------
mooreds
This might be of interest as well, since many web apps (but certainly not all)
are CRUD apps:
[https://news.ycombinator.com/item?id=16508965](https://news.ycombinator.com/item?id=16508965)

------
togusa2017
BOX: Digital ocean

API: flask + MySQL / Redis

UI: create-react-app

Use docker pre-build instances for MySQL or Redis or Nginx

If you have extra time in hand

Nginx --> flask

------
vesche
Flask & SQLite running behind an Apache reverse proxy on an AWS Ubuntu server.

------
shapiro92
.net core + vanilla js + azure + mssql (which is non visible if you stick to
the framework) no need for FE framework unless you want a SPA. you can get
free credits on azure and deploy via VS code/studio in a click.

~~~
userSumo
i am interested in something like this, if i can ask a few questions,

\- is azure beginner friendly, for someone who has never done web app before?

\- how does azure pricing and support turn out compared to other services
mentioned around here?

\- would it be easy as well to use PostgreSQL or some other database?

------
cel1ne
Kotlin, gradle, closure and tachyons.css.

I wrote a short buildscript for that setup that i copy.

~~~
markholmes
Tachyons is really underrated. Not having to write CSS - and more importantly,
not having to debug the CSS you write today in five years - is really great.

~~~
metaos
I've been using the Tachyons style since IE6 on my platform - never looked
back! [https://meta-os.com/](https://meta-os.com/) It shrinks the total amount
of CSS & style enormously as well.

------
ejjpi
I'm surprised noone mentioned ASP.NET yet. With Visual Studio Code + .NET Core
you have a completely free environment/framework that can run web applications
on both Linux and Windows in minutes.

~~~
GFischer
I'm a .NET fan but there's still some friction. There's Azure free tier to be
sure, but I'm not sure about the backend - CosmosDB?.

------
rcarmo
I use my mini-Heroku PaaS
([https://github.com/rcarmo/piku](https://github.com/rcarmo/piku)) and
Redis/Postgres as a back-end

------
aculver
Hey Weston, with regard to servers and deployment, I think Heroku is a very
turn-key solution. These days you can have a default `app.json` in your
project and use it to click a button to deploy your app to a totally new
development or production server including any databases and third-party add-
ons you need provisioned for the app. It's pretty magical. For CI, I use
Codeship. The combination of those two vastly minimizes my responsibility for
infrastructure.

On the development side, I still think Rails is an excellent choice, but I
also felt a lot of the same pain you're expressing, but instead of with server
configuration, I started feeling it more specifically with the redundancy of
putting together the same libraries over and over for each app.

To try to revive the joy of creating new projects, I created Bullet Train
([https://bullettrain.co](https://bullettrain.co)), which I describe as "Rails
on Rails". It's an app template with authentication (Devise), authorization
(CanCanCan), subscriptions (Koudoku), teams, invitations, OAuth integrations,
etc. all wrapped in a consistent theme with a full feature-level test suite.

It also has a powerful code generation/scaffolding engine for pumping out CRUD
views and controllers for the web, API endpoints, API documentation, and soon
it'll handle your Zapier integration as well. (Posted a demo video of this
here at
[https://twitter.com/andrewculver/status/934251715175395328](https://twitter.com/andrewculver/status/934251715175395328))
It also has a thin layer of conventions on top of vanilla Rails, like
namespacing the public vs. account sections of an app. It's stuff that most of
us were doing previously, just slightly different from app to app, and this is
an attempt to standardize so we can build other magic on top of it.

As a demo, a few months ago I used Bullet Train + Heroku to build and launch a
simple Trello clone in two hours: [https://bt-
cardboard.herokuapp.com/](https://bt-cardboard.herokuapp.com/) . It's limited,
and I haven't come back to it since, but I thought the end result was a
powerful example of what you can get done quickly when you're using the right
tools. (I have a video recording of the entire process which I'll upload to
YouTube if anyone is interested in seeing it.)

Anyway, I wouldn't normally peddle my wares on HN, but the whole point of
Bullet Train is to try to achieve new levels of developer productivity and
happiness, which seemed relevant to the question you were asking. There's
nothing quite like this in the Python world (I'm frequently told by Python
developers,) but there probably should be, and I imagine it's just a matter of
time before there is.

------
luord
Gitlab-ci and Google app engine works for me as far as deployment goes. I
won't discuss language/stack because the fastest there is "whatever you're
used to."

------
harel
For anything above basic level: Python/Django for backend, React front end.

Really basic (dynamic) stuff: Python/Django, straight up HTML/CSS

Static - Html/CSS with a sprinkle of vanilla Javascript.

------
naranha
VueJS with CouchDb. Especially for prototypes you end up rewriting everything
multiple times. With classical orm-sql you lose way too much time with writing
the boilerplate.

------
ricardonunez
The most recent one I created was with Laravel hosted on Fortrabbit. If you
want it to be even easier, try Laravel Spark. It is really easy to launch
something simple.

------
tomtimtall
Pythonanywhere and flask, with git used to deploy. Fairly simple and I have
not hit any performances or scale issues for any of the minor app apps I have
made.

------
stanislavb
Ruby on Rails. You can't beat its development productivity given that you need
web app. In the end, as others have said, it will be whatever you know best.

------
samueldavid
Heroku and node with any frontend framework of the moment

------
Cofike
Docker containers are a breeze on heroku. The only issue is some wonkiness
trying to ssh into the running container. Have yet to get it to work.

------
rosencrantz
Google appengine. Just push the button, more or less.

------
deadcoder0904
If its just frontend web app, then Create React App (or React + Parcel)

If it is a complete web app, then Create React App (or React + Parcel) + AWS
AppSync

------
kowdermeister
For me, the fastest way to prototype is Glitch.com.

\- It's instantly deployed

\- Supports GIT

\- Automatic npm installs when editing package.json

\- You can access your virtual environment in an browser CLI

------
CryoLogic
ember new my-app

Yes Ember is still great. Ember data has gotten bloated though so I say pull
that shit out IMO unless you are really used to it.

Ember v3.0 is all modular now, so you can just strip out modules until you get
down to Glimmer. Versus React or Vue where you start with basically nothing
and build upwards.

Exact opposite philosophy, but way faster for building 90% of CRUD apps.

------
eibrahim
emberjs + rails, I even built a starter template that can get a SAAS app up
and running quickly and I built hyperlogs.com with it.

ember and rails are SUPER optimized for rapid development. You don't have to
spend the next 3 weeks configuring a React app so it builds right :) . Not to
mention the next time you do it, it will be different :).

------
CamTin
django-rest-framework + Bootstrap + plain JS frontend (not necessarily SPA-
style, but can be)

I presume that some of the fancier new frontend options would be an easier way
to consume a vanilla RESTy backend. Doing things this was also has the benefit
that I can just hire somebody to write me a new frontend, since that's not
really my forte.

------
catchmeifyoucan
Angular, host on S3 and serverless backend with AWS Lambda.

Build a client, write your routes and your good to go. Also scales really
well.

~~~
iopuy
how do you handle authentication?

~~~
catchmeifyoucan
You can do signed cookies, validate in your lambda function the credentials,
and then return a signed cookie. A little dirty, but quick and enough to lock-
down

------
chrischattin
Rails still wins hands down when it comes to speed of development. I don't
think anything else even comes close.

------
21stio
just learn docker and kubernetes, it just takes a couple of udemy courses.. it
will make everything sooo much easier

------
dustingetz
[http://www.hyperfiddle.net/](http://www.hyperfiddle.net/)

------
h4kor
Django on Heroku. Use Heroku CLI 'heroku local web' to run locally and push to
production via git.

------
rurban
Dancer in perl or Sinatra in Ruby. No DB, either a simple hash with proper
locking or plain text files.

------
keyle
Firebase + VueJS or NodeJS + VueJS.

------
sidcool
Firebase and Angular hosted in GCP.

------
zaro
Feathersjs + React or Angular

deployment with Docker which makes is easy to go Kubernetes if things scale
up.

------
petraeus
Digital Ocean, Laravel 5.6, Bootstrap 4, and git you can have a working site
up in 2 hours.

------
jaequery
fastest for me is just plain Sinatra and postgres. this is the gold standard
of simplicity imo. and hosting for me is taken care of with Docker and an
instance on Digitalocean. deployment is literally rsync and docker-compose up.

------
humbleMouse
I just make a spring boot seed application and use it whenever I start new
projects.

------
ahallock
Apex Up, Express.js, and DynamoDB for the API, and then React for the front-
end

------
iopeak
At [https://asyncy.com](https://asyncy.com) we are working to remove the
unnecessary complexity of applications by choreographing microservices. We are
just a couple weeks from private Beta. Would love your feedback and testing.

------
jhowell
For me, I dig Spring Boot and Elastic Beanstalk. It's just:

mvn install; eb deploy

------
cosbgn
Bulma.io, MLab, flask, nuxt and zappa.io and netlify for deployment.

------
ericintheloft2
Rails. Nothing comes close for me in terms of speed of development.

------
premrajnarkhede
Flask(python) + SQLAlchemy(Any relational db) + Angular/React

------
megasquid
Docker, Django, Caddy, Postgres, Digital Ocean.

Absolutely LOVE Django cookiecutter.

------
sAbakumoff
As always jQuery HTML and CSS will quickly set up everything

------
mmargerum
Vue + Vuetify + go

------
vishnu_ks
Django + DigitalOcean + Vue.js(If necessary)

------
Manintheb0x
Outsystems PAAS www.outsystems.com

------
epynonymous
golang, amber (templates), gorilla mux, material-components-web, postgresql

deployed on aws or lightsail

------
wsaryoo
flask + vue

------
paultopia
flask + heroku + flask-sqlalchemy to talk to the easy postgres heroku gives
you

------
jcpst
zeit.co 's "now". So simple, no cost to get started.

------
ciocan42
Next.js + Prisma graphql

------
halis
Express + React + Redux

------
powerslacker
AppEngine + Go + Gin.

------
wbillingsley
Play for Scala

------
tomasulo
create-react-app and netlify.

------
jgzomo
WeDeploy.

------
xstartup
As someone who operates a consultancy which has deployed more than 5000+ web
apps in the last quarter alone.

We exclusively use AWS Lambda, DynamoDB or if the app is complex, we use
Amazon RDS.

For search - AWS Elasticsearch

Our preferred stack is Go + VueJS.

WHY GO?

It's much easier for our senior developers to ramp up a team of 10 developers
on Go than say Python or Ruby. Suprinsgly, we have a few guys who are Go
experts, they unblock all other developers when it comes to best practices or
some weird bugs.

WHY VUEJS?

It's has been a lot easier for us to introduce this to our frontend developers
than any other thing.

WHY NOT RAILS?

We found it difficult to make SPA apps in Rails and ramp period for developers
is much higher than Go + Vuejs.

WHY NOT PYTHON?

I loved Flask but we really need Type checking, we are not able to sleep
without it. And Go has enough of what we need. Yes, we've briefly experimented
with Haskell, OCaml, Scala etc.... but way difficult for new devs.

WHY NOT JAVASCRIPT BACKEND?

We found it much easier to write backend code in Go.

IDE/DEBUGGER

I am a pro-VIM user myself but it's so refreshing and fun to watch new
developers speed up on Gogland IDE and the debugger makes developing in Go
much easier. This is something only old languages like Java or C# has. It's
way more difficult for new developers to pick up Java or C# in our experience.
They've way more features which our developers found confusing. So, Go stayed
everything else was thrown out including Haskell.

VUE CLI

We use [https://github.com/vuejs/vue-cli](https://github.com/vuejs/vue-cli) No
it does not require deep knowledge of webpack. There are just a few guys on
our team who knows webpack/vuejs/javascript inside out in extensive details,
rest of the developers simply use their custom designed/documented template
and it satisfies 100% of our frontend needs. They unblock everyone on our team
if any developer gets stuck with webpack.

DEVELOPERS ARE OUR BIGGEST COST

Keep in mind, we do not have access to the best developers at the budget
price.

TRAINING

We give new developers as much help and training as they need. Our developers
can call the pro guys anytime (even on weekends) and our senior developers
love the respect/rewards they get in return.

COST

AppEngine costs $30 a pop, for 90% apps which receive less than 100 hits a
day, it's expensive. This is where Lambda wins.

CI

Multi-tenant CI is still a pain in 2018. Current workflow with Gitlab sucks.
We wish we could have a simple file in our repo and make 1 curl call to run
the CI without any initial setup. But it will eventually happen.

PAYMENT PROCESSING

If the SaaS product needs multiple payment methods like Stripe, Braintree,
PayPal Bitcoins, Ethereum, Wire Transfer we use
[http://killbill.io/](http://killbill.io/) which is multi-tenant, opensource
and self-hosted. Previously, we were using WHMCS, Amember pro, and Chargify
but it ended up costing way more and was a lot more fragile at the end,
completely failing monkey wrench test and our new developers found it much
harder to wrap their head around 3 different products. A customer has to
simply enter their API credentials for the respective gateway (Stripe or
PayBear or BitPay) and we integrate it in minutes.

BIGDATA

If we need complex large aggregation, we haul in Athena or BigQuery.

Our developers prefer BigQuery but Athena is sometimes cheaper in the long run
and makes it way easier to import/partition your big data.

STREAM PROCESSING

If we need anomaly detection or preprocessing of statistics we use Kinesis
streams.

Because of this setup, we primary run on an army of bootcamp graduates and we
are able to provide really cheap service to non-profits and other companies
who are not able to afford even a dedicated freelancer.

FORGET VALUE, WE WANT TO BE CHEAP

"Cheap" is a wrong word to use as a marketer/sales guy. But yea, since I am
now in technical position, so I remove sales guy hate and wear tech hat,
making our creation as cheap, robust and secure as possible while still
satisfying the requirements.

WHERE IS THE FUN

We drive our major profits from AdTech business (which involves stressful high
tech stuff but it's lot more fun) and consultancy is just to validate our
solutions across a large number of our portfolio customers. We've to ensure,
their setup is as cheap, robust and secure as possible.

IMPROVEMENTS

As I want to improve my strategies and methods as much as possible, feel free
to challenge my choice. It should not just work for 1 developer but an army of
developers and it should make it trivial to add more developers.

~~~
Blackstone4
Interesting to hear you're using Go and Vue.js.

With Go, are you using off-the-shelf web frameworks or libraries or do you
have your own in-house framework/template?

So you said you're deploying 5000+ web apps a quarter. Are those new web apps?
How many web apps are you deploying per dev head count?

~~~
xstartup
_With Go, are you using off-the-shelf web frameworks or libraries or do you
have your own in-house framework /template?_

No frameworks. We use
[http://www.gorillatoolkit.org/pkg/mux](http://www.gorillatoolkit.org/pkg/mux)
and sometimes we need a few more libraries for GWT/ElasticSearch/PostGres. I
know there more performant options but we've found no reason to change so far.

 _So you said you 're deploying 5000+ web apps a quarter. Are those new web
apps? _

Yes, 70-80% of them are new apps. Small apps, not multiple month project,
mostly CRUD. Much easier/faster and cost-effective for us to develop what
we've already done. OId app usually requires adding few routes and shuffling
around the frontend elements or adding some small CSS tweaks. We use a simple
list to accept/reject projects. We never undertake any complex project.

 _How many web apps are you deploying per dev head count?_

These are small apps. We've 1500 developers in a very low-cost jurisdiction.

------
always_good
Heroku + AWS' RDS for Postgres

------
JAdamMoore
create-react-app

~~~
westoncb
That's purely front-end tech if I'm not mistaken. My question here is
primarily about the back-end aspects of a project (especially syncing local
and production environments, etc.).

~~~
paulie_a
Django. Use Cookie cutter and call it a day.

------
Manintheb0x
OUTSYSTEMS.COM No need to thank me.

~~~
tim333
I once wrote to them to ask the cost.

>12 Months Committed Agreement at £15,000 for 150,000 Software Units and 100
active users

Seemed steep for 100 users.

