9
40 Comments

What's your framework of choice to build features rapidly?

Hey friends!

Background / Context

I've been building frontend apps for about 10 years. Node apps for about 5. On a hobby level I've used Rails and Codeigniter and plain PHP. For work I've used Express primarily.

I've recently started building quick side projects .

My problem / frustration

I've long loved express and enjoy how quick you can get started. But as I get more features on this site, the more I'm getting frustrated with EJS (if blocks are so painful and verbose to write with all the <% %> tags. In addition I realize I'm spending most of my time simply passing props up and down the routing->model->view layers. It feels like a lot of time wasted.

Biggest pain points:

  • Lack of opinionated validation
  • lack of opinionated data flow path (MVC is one solution)
  • EJS tags are killing me haha

My question

For 1 person, to hack something together really fast, what's your framework of choice? I really want something opinionated so I don't have to make all these dumb decisions that are just getting in the way of me building features. Happy to look across langs too. Rails, Laravel, Elixir, Go, anything is on the table.
Thoughts? Thanks!

Update:
Thanks for all the great replies! I'll read each of them carefully and reply to many of them. I should clarify: I used Express and EJS to build https://frontendrocket.com
(which worked well enough) and I am now past the MVP stage. I'm at the stage where I'm getting some traffic (~200 per week), and I'm changing / adding features daily. I'm now at the point where it's not unmanageable, but modifying features it painful enough that I'm looking for more structure.

  1. 5

    Rails. Rails is known for rapid development. And it is also very easy to learn for a experienced dev.
    And lately, you can also consider developing your app in serverless architecture.

  2. 5

    I focus on Elixir/Phoenix myself and the productivity is fantastic. That said, I've spent a lot of time writing things that others have already made into gems in Rails.

    If it's all about getting the MVP shipped quickly, I don't think anything can match Rails for a classic web app. If you have a lot of evented activity like chats or notifications, then Elixir will have a definite edge.

    As for the other options you listed, Laravel is a solid attempt but just not quite as productive. Go and Node will be far slower to get your MVP done.

    1. 1

      Thx. If you were building something simple would you choose Elixir/Phoenix or Rails? Sounds like you already lean towards the former :).

      1. 1

        I would build any webapp in Elixir, but I'm highly biased since I teach Elixir.

        For most people I'd say there are two questions to ask:

        1. Do you need to use web sockets heavily or create a chat system with user presence features?
        2. Do you need extreme server performance (like an ad-supported free site or mobile game back-end)?

        If you answered yes to either, then Elixir is going to be better for you. Otherwise, Rails will get your app shipped faster.

  3. 4

    Serverless "Framework" (is it really a framework?) with Api Gateway and AWS Lambda. Not really sure if this is what you're looking for. But I've really fallen in love with it.

  4. 4

    I use elixir for everything these days and I'm really happy with it and the speed at which I can work but if you want it to have all the decisions made for you rails is probably a better route as the gem ecosystem is large so you find something for most things you need to do but old enough that there is generally one real choice.

    1. 1

      Lots of votes for Elixir. Rails is an easy sell for speed, but why is Elixir fast to develop in? Care to share?

      1. 1

        It's fast for me to develop in mostly since I've spent a fair bit of time developing in it over the past few years. But also in thanks to the features of the language(easy concurrency for example) and the framework(channels are a life saver for a lot of my projects).

  5. 3

    I personally prefer Laravel when I have the need to have some sort of back-end code up and running as fast as possible. It has built-in ORM and stuff it's really simple to build and test around it. Literally just an refresh.

    But I wouldn't recommend for very large stuff, since as with most PHP-based things, you have to load and bootstrap the application for each request, which compared to Node, where you do that only once, takes a little more time...

    1. 5

      This comment was deleted 7 years ago

      1. 1

        That's great to know. IMO at first you just need to choose whatever let's you build fastest. Once scale matters it's often easy-ish to migrate to something more scalable in my experience. Seeing a bunch of votes for Laravel. Worth looking into.

      2. 1

        Great feedback and agreed.

  6. 3

    Rails. Simply because I have used it before and know it well. You will hear that over and over again. Don't overthink what to use, but use what you already know.
    It's also the reason I don't go with Vue (or similar), but just sprinkles of JS.

    1. 1

      Yeah I know Express and Node well (as well as React). Going to take a look at Next.js next (pun intended). I'm hearing good things about it.

      1. 1

        My advice/tip was to not go take a look at something else (you don't know yet)…

  7. 3

    I prefer Rails. Reason: it's a very mature, if you need anything there's probably a gem for that. If anythings not working, there's probably stackoverflow answer. However, I've only professionally coded in Ruby, so take this with a grain of salt.

  8. 2

    For an mvp I’d go with rails and react.
    I know this tech stack very well and I use it every day at work.

    My advice is: use what you know best.

    1. 1

      Solid advice. I chose Node / Express and vanilla JS because I know it really well. Now that I need a little more structure I'm leaning towards Next.js or Laravel. Rails is my next choice I think.

  9. 2

    By the way, if you want to get rid of the EJS tags and you want something opinionated, go with a frontend framework like Vue.js. I use Vue for almost all my projects for those reasons. Often times with Vue + Firestore you don't even need a backend

    1. 1

      Good ideas. I was hoping to keep my frontend really light, as it's mostly a server rendered app, but Next.js looks really interesting. Looking at that now.

  10. 2

    I'm using Symfony 4 and think I'm much more productive compared to Symfony 2. But I haven't tried any other Framework but Zend Framework and Java Struts some years ago...

  11. 2

    It seems like you're real problem is with the front-end. I suggest you look into Reactjs. However the learning curve is slightly steep.

    1. 1

      It's a fairly simple server-rendered app. I've been using React at work for several years and wanted to avoid webpack etc. But I do really miss JSX. I'm looking at Next.js which seems very promising.

  12. 1

    This question has been asked here before, but Rails has been my goto forever... but I've also been doing it professionally for quite some time now, so part of that is just comfort/convenience.

    1. 1

      Tons of votes for Rails on here. Happy to hear it's still popular.

  13. 1

    SailsJS is like Rails for Express. But, it totally depends on how rapid you want to be. If you choose a new language/ecosystem completely there is going to be a learning curve regardless of how experienced you are. There is always going to be framework specific gotchas that are going to bog you down sometimes. For me, an MVP ideally would be a throw-away almost after the first iteration so I would simply pick something that I am most comfortable with and not have to invest in learning a whole new language framework but get something shipped out asap.

    1. 1

      I'm past the MVP stage so I really want something with a little more structure now. I've looked at Sails periodically but I hear so little about it, that I'm reluctant.

  14. 1

    I use VueJS + NodeJS serverless (Firebase for both storage and realtime db). Avoid the props struggle with Vuex (Redux if React). Learning curve is almost inexistent.

    Only downside: building new features is so easy that the "I'll just focus on this cool new feature instead of thinking about the real problem (strategy)" is even harder to conquer

    1. 1

      That's really interesting. I'll have to consider serverless.

  15. 1

    I use the same, Node + EJS and am pretty happy with it (although I agree EJS syntax is pretty ugly). Before looking at other languages, have you tried writing some middleware functions in Express to handle your pain points?

    1. 1

      I set up a bunch of view helper functions which really helped clean up the EJS files quite a lot. I still hate the verbosity of a simple if statement in EJS though. Will look at Next.js next (haha).

  16. 1

    It depends on the complexity of the problem. If it's not very complex, then just GCP Firestore. If it gets more complex, then Golang

  17. 1

    PHP with a few useful libraries. Just feel its the easiest to use and support for it is still very strong, despite its age; it remains a strong language.

    1. 1

      I haven't done PHP in years, but Laravel looks really interesting. I like the Blade syntax I saw in the docs. Seems very uncluttered.

  18. 1

    For 1 person, to hack something together really fast, what's your framework of choice?

    Drop the frameworks.

    HTML/SCSS -> vanilla JS (with micro-libraries, e.g. nanoajax) -> Node API (restify). Use JWT for auth.

    For MVPs, hands down my fastest way to ship. Anything else is overengineering it - it's supposed to be an MVP, not a work of art (yet). If you're not working on an MVP, then why are you trying to be fast first?

    A lot of people are more familiar with PHP, where Laravel is a good recommendation.

    1. 1

      I built the MVP with Express and node and vanilla JS. That helped me move really fast and avoid any client side build steps. Now I'm at the stage where I'm rapidly adding and changing features so I want a little more structure. I'm looking at Next.js but Laravel also seems like a great option.

  19. 1

    For MVP I always go with CakePHP and sometimes Vue.j if I need more stuff happening in the browser.

    1. 1

      Same here. We always choose CakePHP for the web development. We have gained almost 9 years of experience building websites and web apps with it. <3

  20. 3

    This comment was deleted 7 years ago

    1. 1

      EJS is just one of the painpoints, and so Laravel seems like a good option here. I've done plain PHP in the past, and I just want something now where I don't have to think about things I don't really care about. The app is now past MVP, and I'm rapidly adding and changing features so I want something that'll help make things a little more stable with some structure. Sounds like Laravel and Rails will do that. Thx.