6

A modern web-alternative to Ruby on Rails

over 8 years ago from , Product Designer / Developer

I've been wanting to get into web development recently. Just for some simple small web based ideas I have. Basically a simple authentication system, plus a simple CRUD frontend.

I've been using Django for my recent projects, but feel it's insanely bloated for the types of things I do, where the actual work tends to be heavily skewing towards the front-end of things, spending 70-80% time figuring out things like Javascript, HTML and CSS. I know there was a thread here while back (so apologise if this is just repeating that) about modern day CSS tools etc. but I'm curious about newer basic backend tools / frameworks.

Normally, years back, this would be the kind of thing I did in Ruby on Rails. Heard of Angular and Meteor but they both seem to be made for some pretty heavy lifting. Also been looking at Node, but feel the same about that.

Any tips?

21 comments

  • Bryant HughesBryant Hughes, over 8 years ago (edited over 8 years ago )

    That question has all sorts of answers and routes you could potentially go. A lot of it depends on how much flexibility and customization you need, and how much you want to reinvent the wheel. There are all types of codebases and frameworks out there that go from super lightweight (requiring lots of boilerplate code to be written to get you started) to full blown content management systems, which have prebuilt UIs and opinions on how to store and model your data. These CMS aren't as customizable, but assuming you're wanting to create something that's fairly basic, get you 80% of the way there.

    All of these options below run on the server-side, meaning they don't have any opinion really on how you decide to structure your client-side javascript. You can't compare something like Angular vs Ruby on Rails, as they serve two different purposes (one runs on the server and one runs in the browser)

    As far as types of Web Frameworks and CMS (this list is not exhaustive) go, here is a list of the various types and implementations.

    Large Web App Frameworks:

    • Ruby on Rails (Ruby)

    • Django (Python)

    • Laravel (PHP)

    Smaller/Simpler Frameworks:

    • Sinatra (Ruby)

    • Slim (PHP)

    • Express.JS (Node/JS)

    Flat File CMS:

    • Kirby (PHP)

    • Statamic (PHP)

    Database Driven CMS:

    • ExpressionEngine (PHP)

    • Wordpress (PHP)

    • Craft (PHP)

    I hope that helps, feel free to ask any other questions!

    9 points
    • Michael Nino Evensen, over 8 years ago

      This is super helpful. I'm not super versed in the web-development world and kind of lost touch after the transition to mobile, so to just get a more or less semi-comprehensive overview of what "people use nowadays" for different tasks is super helpful.

      0 points
    • Charlie HieldCharlie Hield, over 8 years ago (edited over 8 years ago )

      +1 for Slim. It's super simple to get set up and the documentation is great.

      0 points
  • Sacha GreifSacha Greif, over 8 years ago

    Angular is not a back-end tool, but Meteor is (both back-end and front-end in fact).

    I'm not sure what you mean by "heavy lifting" though, Meteor/Rails/Node can all be used to basically make the same kind of apps (although Meteor makes the real-time aspect a lot easier).

    If that's too much for you then I'd suggest looking into things like Parse and Firebase that let you go without a back-end altogether.

    4 points
    • Michael Nino Evensen, over 8 years ago

      What I mean by "heavy lifting" is that they seem to be geared towards building fully blown web apps, and tutorials and explanations tend to skew more towards bigger and more comprehensive solutions, rather than just getting something up quick, but again my impression might definitely be wrong and that's my reason for asking.

      I guess I'm also partly looking for suggestions for someone who's lodged between the world of design and development, having a fairly good understanding of programming and development in general, in terms of what would be a good direction to invest time in learning. But understand it's pretty hard to answer this given my description of a purely hypothetical project. Tried to look around online but can't really figure out a way to get at a simple overview of modern front-end / back-end solutions.

      I've asked friends who's developers and hear everything ranging from "Node is amazing," "You have to try Angular," but still haven't managed to jump in and get started.

      1 point
      • Sacha GreifSacha Greif, over 8 years ago

        Well, of course I'm biased, but I think Meteor fits the bill pretty well. It's all-JavaScript so it's a good fit for designers, and it's super easy to get started. Having an all in one solution really makes your life easier compared to piecing together different bits and pieces, in my opinion.

        1 point
        • Jesse C.Jesse C., over 8 years ago

          You're definitely biased. ;) (Jokes)

          I made a comment below too but I'll chip in here that the Having an all in one solution is really nice. Then, when you need extra things specific for your project, Meteor seems to be designed well to play fairly and integrate well.

          0 points
        • Michael Nino Evensen, over 8 years ago

          I've actually given Meteor a run since yesterday and I think it fits the bill perfectly. It's amazingly quick and very understandable. I looked at it a while back when it was fairly new, and then the documentation was really bare bones, but now they've just taken it to another level. And the possibility to easily add and remove packages is just insane, for quick prototyping and just getting something out it's just beyond anything else I've used. Thanks for the tip!

          1 point
      • Jesse C.Jesse C., over 8 years ago (edited over 8 years ago )

        I guess I'm also partly looking for suggestions for someone who's lodged between the world of design and development, having a fairly good understanding of programming and development in general

        I think I fit that bill a little bit. I study software engineering, and do that for work, but I've been into design as long as I've been into programming.

        I hadn't made a web app so earlier this year I wrote using Ruby on Rails to solve a local problem, balay (about to take down this version though). I used tutorials and all that and built the authentication from scratch as opposed to using a gem like Devise.

        I would recommend starting off using one of the big 3 that Bryant Hughes listed—RoR, Laravel, or Django—which more or less all follow a standard MVC pattern. I personally would suggest RoR. When you're first starting out, the languages and frameworks are honestly much the same. It's not until you're a more experienced developer in general and then start to get a lot of experience in a specific language + framework.

        What I'm doing now is rewriting balay using Meteor. I got about half the functionality done in one night which previously took me a couple of months working on and off. This is because a) I'm more experienced and b) Meteor has a lot of good defaults and is more ready to roll. You can add an authentication system by adding a package and spitting out the login/logout/register template with 1 line of code.

        Meteor is more specialised—as in, less of a general MVC pattern and is more different to other frameworks. I really like Meteor and would also recommend trying it out soon too. It's suitable for small projects too and the good thing is, you can whip them up really quick.

        To recap, my experience and suggestions are: *1. Start with something general (e.g. Ruby on Rails) that follows a simple MVC pattern. Try some things from scratch (if you have time) like authentication so you know how it works. I don't like magic in RoR, Meteor, etc. but it's so convenient. Learn about basic concepts like API, templating languages, etc. *2. Become a bit more modern and use Backbone or Angular for the frontend with RoR as a backend (essentially, just an API) or try something more lightweight like Sinatra (to stick with Ruby) or even a Node.js API backend. *3. Try something 'specialised', e.g. Meteor, Ember, etc.

        1 point
        • Michael Nino Evensen, over 8 years ago

          Fantastic run through and advice! I agree that all this "behind the scenes" can be fairly confusing sometimes, especially when trying to actually go a bit beyond or alter defaults, that's where things usually start to get tricky given that I'm not an engineer, and I don't have a deeper understanding of just general ideology or concepts. I've dabbled with MVC patterns before, both in terms of Django (which I guess has some what of an MVC structure) and I've had a brief stint with Ruby on Rails.

          I just read through a quick overview / tutorial of getting started of Meteor yesterday, and today I've been continuing reading through the docs and they've come a really long way since I looked at it last. Documentation is just on a whole other level (compared to a couple of YouTube videos with general explanation) and it seems to be a really really quick way of getting to a result. I absolutely love the packages. It just saves such a massive amount of time, and for me, who's more interested in results rather than actually building this stuff from scratch it seems like the perfect fit.

          What I wanted was to find something to complement some of the "front-end" (if you can call it that) skills I've been learning in terms of prototyping natively for iOS, Objective-C and Swift, just all more focused on getting towards a quick result. I also yesterday discovered with Meteor that you can easily build to both Android and iOS and I gave that a go yesterday, and even though it's of course not a fully blown native app (given that it's still being treated as JavaScript etc.) I was seriously impressed. It just allows for really fast testing of things whether it being web or building it on a phone and taking it out for testing.

          1 point
  • Ian GoodeIan Goode, over 8 years ago

    Basically a simple authentication system, plus a simple CRUD frontend.

    This is exactly why Ruby on Rails exists, why not use it if that's what you're familiar with? For the front-end I'd look at Ember or Angular. Ember is more similar to RoR in that it's convention over configuration.

    2 points
  • Andy MerskinAndy Merskin, over 8 years ago (edited over 8 years ago )

    After getting used to Angular for a while, I've found it to be the easiest framework to implement, even for wildly simple apps. It isn't necessarily the requirement that an app needs to be big to use or understand it.

    If you used Angular's most basic directives like ng-click and ng-class within your templates for example, those alone give you a heap of flexibility (and much less code than jQuery).

    The other nice part about Angular is that you can easily write your front-end like you're used to, with raw, standard HTML, CSS, and JavaScript, and have it be completely separated from your back-end, using AJAX requests to funnel in all your data.

    I'm doing this right now with the WordPress JSON API plugin, so that I don't have to waste my time writing a WordPress theme in PHP.

    2 points
  • Jonathan KelleyJonathan Kelley, over 8 years ago

    Take a look at backbone mixed with Rails. Beautiful to work with and a large community ready to help!

    2 points
  • Jack CallisterJack Callister, over 8 years ago

    'Simple' authentication systems don't exist. But we're luckily enough to have those problems abstracted away when you implement devise with Rails (or any other framework).

    On the front end side of things it's a little more fickle. Here's my thoughts to help you:

    Question whether your application actually needs a full-stack (Angular/Ember) JS framework. More often than not you don't - you generally need speckles of interactivity here and there. JQuery gets you only so far though... Hence the popularity of Angular and Ember. Less frameworks and libraries means less to learn and master. It's a pragmatic balancing act.

    If you're building a 'simple CRUD front end' then you probably don't need a JS framework. If you do need pieces of interactivity try taking a look at React. It's surprising how far you can go (instagram is one giant React app).

    Here's the source of an app I'm building with Rails and React. This stack suits my needs and is simple to learn and use. https://github.com/jarsbe/super-duper.

    P.S I'm not trying to sell React, just the idea that you don't need a full stack javascript framework.

    1 point
    • Michael Nino Evensen, over 8 years ago

      I've gotten tips to check out React before, definitely going to have a look. Thanks for the tips!

      1 point
      • Jack CallisterJack Callister, over 8 years ago

        It's reminiscent of discovering jQuery for the first time. Reading all of these comments about meteor I'm thinking I should give that a whirl too.

        The more tools you know well the better you'll be at picking the right ones for the job.

        0 points
  • Vince P.Vince P., over 8 years ago

    +1 for Sinatra. The ease and simplicity of Rails, without the magic of Rails

    1 point
  • Adam ConradAdam Conrad, over 8 years ago

    If I were to create something that wasn't using RoR, my choices would be:

    • Go
    • Node.js
    • Meteor (JavaScript)
    • Yesod (Haskell)

    on the backend, and straight HTML/CSS/JS on the front end utilizing Web Components and ES6 with polyfills for older browsers.

    1 point
  • Aaron GrandoAaron Grando, over 8 years ago

    Rails isn't the new kid on the block anymore, but that doesn't mean it's not a fully viable and modern framework. Rails 4 was released recently and it's great. I'd recommend taking a fresh look if you haven't for a while. The community support is great.

    Rails can be both heavyweight and lightweight, it really depends on how you configure it.

    Otherwise, it probably falls on how you'd like to code. Do you like writing Javascript, or do you like writing Ruby?

    0 points
    • Michael Nino Evensen, over 8 years ago

      Will definitely take a look again. I know it's silly to just abandon it just because it's not "fresh and new". And in terms of syntax I definitely prefer Ruby.

      0 points