codegeek 6 years ago

A similar question was asked just 3 days ago:

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 6 years ago

    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 6 years ago

      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 6 years ago

        > The core WordPress software is amazing

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

        • dabockster 6 years ago

          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.

      • andrei_says_ 6 years ago

        Last time I tried developing for WordPress I gave up in frustration. What an incomprehensible mess of spaghetti code.

  • quickthrower2 6 years ago

    Top answer to that question:

    "Use the language your team is familiar with! If it is PHP don't hesitate just because it is not "cool".."

    Have to agree with that here too.

  • odonnellryan 6 years ago

    This is a great list, I don't think you missed any that a classic shop would use.

whalesalad 6 years ago

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 6 years ago

    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 6 years ago

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

  • mycat 6 years ago

    Can elaborate more on that?

    Currently I know Python and am using Django.

    I am too lazy to learn Ruby. Is it worth it to learn Ruby just to use Rails?

saluki 6 years ago

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.

  • gerenuk 6 years ago

    Just to add a few more information to your answer.

    Laravel + Mix will help you in getting started with single page app using Vuejs.

    For the jobs, you can monitor them using Laravel + Horizon just like Sidekiq monitoring dashboard.

    Also, in laravel 5.6, bootstrap 4 will be added as a preset.

  • zerr 6 years ago

    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 6 years ago

      Laravel documentation is excellent.

      They spend a lot of time on the documentation.

imhoguy 6 years ago

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 6 years ago

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 6 years ago

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 6 years ago

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 6 years ago

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 6 years ago

    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 6 years ago

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 6 years ago

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 6 years ago

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 6 years ago

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

  • ehllo 6 years ago

    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 6 years ago

      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.

togusa2017 6 years ago

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

zerr 6 years ago

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

philippz 6 years ago

Frontend: VueJS (Javascript)

Backend: Laravel (PHP)

davidjnelson 6 years ago

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

  • huangbong 6 years ago

    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.

jonesgrant 6 years ago

PLEASE READ!!!! Hello Guys,This is a Life Time transformation !!!Am so happy I got mine from Kelvin Roland. My blank ATM card can withdraw $3,300 daily. I got it from him last week and now I have $16,500 for free for just a week. The blank ATM CARD withdraws money from any ATM machines and there is no name on it, it is not traceable and now i have money for business and enough money for me and my family to live on. I am really happy i met Kelvin Roland because i met two people before him and they took my money not knowing that they were scams. But am happy now. Kelvin Roland sent the card through DHL and i got it in two days. Get your own card from him now he is not like other scammer pretending to have the ATM card, he is giving it out for free to help people even if it is illegal but it helps a lot and no one ever gets caught. i'm grateful to Kelvin Roland because he changed my story all of a sudden. The card works in all countries except Philippines and Mali. Kelvin Roland email address is kelvinroland.blankatm@outlook.com!

  • elorm 6 years ago

    This is one of the moments i wish had enough Karma to downvote