
Ask HN: Fastest/easiest framework to build a web application in 2017? - ryanSrich
What are the current recommendations for rapidly building a web application? Back in the day it used to be Rails. It seems like Phoenix is picking up steam.<p>Are there any other full-stack frameworks that take you from nothing to something fairly robust in a few hours?
======
codegeek
A similar question was asked just 3 days ago:

[https://news.ycombinator.com/item?id=15685905](https://news.ycombinator.com/item?id=15685905)

For full stack opinionated frameworks, there are a few like Laravel (PHP),
Django (Python), Rails (Ruby), Phoenix (Elixir). They all come with batteries
included for the most part. Then there is node/expressjs ecosystem if you are
into that.

Then you have micro backend frameworks like lumen (PHP), Flask (Python),
Sinatra (Ruby) which can be used to build APIs etc.

For front end javascript, you have react, vuejs and angular as the top 3. You
also have elm (compiles to js) and then some other players like mithril etc.
Good old jquery is still out there.

For more realtime stuff, you can use websockets (socket.io library etc),
google firebase, pusher etc

~~~
_jdams
The shell of a web app/website can be built with white background on black
text without any viewing library at first, right? So, would it make sense for
a beginner to just pick one of the few frameworks you listed above
Note+Express/Laravel/Django/etc. and just get to work on what it means to have
a CRUD?

I feel like most tutorials always complicated things by trying to add too much
at once -- to a fault, I've never been able to learn Node/Express and build a
working app where I could add a record, delete it, update it, etc. Once it
gets to "ROUTING" I kind of lose it, unfortunately. Haha.

I would probably be better off with Wordpress for most website needs,
anyway...

~~~
dabockster
The core WordPress software is amazing. The plugin developers and community
are another story. I've had cases where WordPress plugins have unlisted
dependencies, bundled plugins that completely alter the WordPress Dashboard,
build systems that go against established WordPress software patterns, etc etc
etc. The majority of the community seems to be fine with this as they treat it
like self-hosted Squarespace (set it, forget it, don't need to learn
programming, contract any programming that does need to happen as cheaply as
possible).

~~~
stephenr
> The core WordPress software is amazing

In that outsiders who see the code are amazed people still _proudly_ ship this
glorp?

~~~
dabockster
I meant in the sense of creating a small self-hosted blog. I wouldn't dare use
it in a setting where money is on the line.

------
whalesalad
Rails, without a doubt. Don’t waste your time on Django and all the Node stuff
is just a mountain of distractions.

(I’ve been doing this for over a decade. At one point I was a Django zealot
and avoided Rails like the plague. Boy was I wrong)

~~~
matt_wulfeck
Can you explain why a python developer should make the switch to rails for web
apps?

The difference between Django and rails is pretty small from my oberservation.
They have similar ease of use and performance characteristics.

~~~
chaostheory
Been in the same boat. Started with Python but transitioned to Ruby / Rails
for web dev.

Django is a good framework. Ultimately why people choose it or something else
is about your own taste. The reason I didn't choose it is that Django give
users more freedom i.e. configuration over convention which for me leads to
[https://en.wikipedia.org/wiki/The_Paradox_of_Choice](https://en.wikipedia.org/wiki/The_Paradox_of_Choice)
(Maybe things have changed?) It's strange because Python is the opposite in
terms of philosophy. Rails goes the other direction and is very opinionated
which is also strange considering Ruby's philosophy is the opposite i.e. 10
million ways to do the same thing.

The next issue is community consensus. Python doesn't seem to have it. (Again
things may have changed.) You can see this with packaging and the 2x vs 3x
war. Not sure if Python has finally standardized packaging yet but it's hard
not having a good package system everyone uses once you get exposed to ruby
gems, npm modules, and even maven.

For the record, I'm not saying Python is bad. Just giving reasons for why I
personally do not use it unless I'm forced.

------
saluki
I would still recommend Rails or Laravel(PHP).

Both are similar so choose the one you know/fits you best.

nothing to something:

Laravel you can go from zero to auth + dashboard in like 5 minutes. There are
lots of packages to speed things along.

Some of the items I'm recommending are paid, but they are well worth the value
they provide and support the creator of Laravel and has enabled him to work on
Laravel full time and hire another full time developer to work on Laravel and
these products.

There is also Laravel Spark that's basically SaaS in a box, it's $99/site but
worth it for a head start.

Laravel has a really great community and great tools that make it super
nice/fun to use.

Laravel Valet, quick and easy local dev env. for OSX.

Laravel Forge, it's a SaaS that will spin up servers on (Digital Ocean, AWS,
+others) and allow quick deployments plus easy SSL setup through LetsEncrypt.
(There is also envoyer.io for zero downtime deployments.

Laracasts.com for learning.

~~~
zerr
But Laravel documentation is really bad, isn't it? Or is it the same for other
frameworks as well? I mean the official textual documentation.

~~~
saluki
Laravel documentation is excellent.

They spend a lot of time on the documentation.

------
imhoguy
You mean an app in a weekend? This works for me Vuejs/Bootstrap/Rails/Docker.
Thanks to Rails's Webpacker you can keep all project code in single git repo.
Everything is nicely integrated like Rails test framework compiles JS/ES6 on
the fly before integration tests are run. DB migrations are a must in
potentially evolving app. Other elements of my stack: bootstrap-vue, Devise
(RoR), PostgreSQL, Guard(test loop), Ansible (for general server tasks).

------
always_good
There's no real answer to this question. Use a stack a few times in a row from
scratch and it's now the most prudent stack for you to use on your next
project hands down.

Also, focusing on "rapidly building" possibly over-fixates on Day 1 when it's
Day 60+ where your stack choice is really going to matter once you need to
respond to changes in business requirements.

However, there are a few high level decisions I'd consider pretty
uncontroversial:

1\. Relational databases like Postgres tend to be ideal for fast development
since you can respond to requirement changes by atomically migrating your
entire data layer to a different schema. This is pretty hard in NoSQL
databases for example. You can also encode constraints in the data layer and
then the application layer can just depend on them always being true instead
of trying to encode them into the application layer.

2\. Keep the application server as stateless as possible. For example, use
something like S3 instead of going the tempting route of saving to the
filesystem. A filesystem dependency is convenient on Day 1 but now you cannot
spin up more than one server nor launch an application off of that machine.
For similar reasons, it's also nice to host your database in the cloud like on
RDS.

------
ng-user
What are you good at? It'll be tremendously faster to build a web application
using a technology or framework you're already familiar with than it will be
to LEARN and then build. It sounds like you're looking for something like a
MEAN stack generator or the like, check out Yeoman if you're into JS
development.

------
sidmitra
Depends on what kind of web app you want to build. If you want a single page
app, then React + a rest framework (like Django Rest Framework) seems to be
popular. If you want a normal server rendered CRUD app, Rails or Django might
be fine.

Also depends on who will maintain this app in the future. The more esoteric a
stack, the harder it is to find other devs(or they're expensive).

The ecosystem of pre-built modules(eg FB integration) so you don't have to re-
invent the wheel. Python seem to have a really good ecosystem of libraries
ranging from datascience to crypto.

What are you performance requirements? Do you need sockets? Django now has
channels that provide you with some of that.

The answer as always is "it depends". I personally recommend sticking to what
you know best(unless you're using this as a learning opportunity) and work
with whatever the community prefers in that language.

------
busymichael
Since you are asking about "rapidly building a web application" I think you
also need to consider your hosting platform.

If you use a framework that has full support on one of the big PaaS services,
you can save a lot of time configuring and maintaining your production and
development environments.

For my most recent web app, I chose Python/Django on Google's App Engine. I
spent less than 15 minutes configuring the development environment and new
deploys take almost no time. I also spend very little time maintaining the
production environment. GAE also has a lot of built-in debug tools (logging,
stackdriver) that have made managing my application simpler.

There are a lot of such services now, including on AWS and in Azure.

~~~
jetti
That is, IMO, one of the big areas that Phoenix falls flat on. Sure there are
buildpacks that you can use for Heroku deploys but AFAIK there is only one
hosting service that delivers a truly easy PaaS deploy process for Phoenix
apps and that is Gigalixir (and from what I hear they aren't cheap).

------
buttminer
For speed of development, you want the most normal/boring stack there is, in
combination with what you're familiar with.

Note that if there is more than 1 engineer, it is absolutely worth it to work
with common technologies. Elm/Elixir are not common technologies (though
people love talking about them).

Node + Express for the backend is super simple. Mongo or MySQL/PostgreSQL you
will have no problems with (though I am biased towards relational databases)
React for the front-end is also simple, very well known and easy to hire for.

If your application is more basic or more CRUD-oriented (as most apps are),
Ruby on Rails has always been a solid choice and will continue to be a solid
choice for years to come. There is also a very large pool of people who are
very well-versed with it.

------
matt_s
If your goal is fastest to get a production ready MVP built, go with Rails or
another similar mature stack in a different language. Chances are the majority
of problems you encounter will have been solved by someone.

If you want to learn something new or want to be on the hype curve, don't
expect to have something production ready fast. Expect to have challenges
learning how things work beyond a blog/to-do list tutorial for new-to-you
tech.

------
santa_boy
It really depends on what you already know and your level of interest in
learning something new.

I can still crank out a pretty neat Web App in Code Igniter over lunch!

But, nowadays, I use Meteor which makes things very efficient while making an
old hag look cool too :-) (Meteor allows you to leverage the great work
available in the node community quite seamlessly)

------
fiftyacorn
I'd be interested in views on fastest to develop with - and not relative to
what you are most experienced at

~~~
ehllo
I think your expierence in a system/framework or programming language is a key
factor in "fast" development and to be honest, the question for the "easiest
and fastest" framework is totally wrong and you won't get nothing out of this
question. All answers will come from people with different expierence levels
in programming, frameworks, projects and many other things - all answers are
biased towards the expierence of the person who answers your question.

~~~
fiftyacorn
I disagree.

Im primarily a Java monkey, but used django and django REST in a few side
projects and was developing much faster. This includes picking up python3 as i
went along. The end result was i wished Java had its own version of django.

------
atrilumen
On the front end: Choo is really solid and very little to learn.

[https://github.com/choojs/choo](https://github.com/choojs/choo)

------
togusa2017
Flask (python) very minimalistic but quick and nice documentation .

------
zerr
One thing to consider - which one has a superb documentation?

------
philippz
Frontend: VueJS (Javascript)

Backend: Laravel (PHP)

------
davidjnelson
Next.js/react/postgraphql/postgres/beanstalk.

~~~
huangbong
My stack of choice as well. The graphql part definitely adds to the learning
curve for new devs but I think it’s the future. Checkout github.com/apex/up.
Now you won’t even need the beanstalk part. All you need are RDS instances.

------
miguelrochefort
Elm or Eve

------
leoharsha2
MeteorJS

