DEV Community

Bertil Muth
Bertil Muth

Posted on

Fast way to build CRUD app?

I am building a CRUD app using Spring Web MVC.
The app‘s mostly about data management and has almost no interesting business logic (besides calculating a few sums).

While it is not very difficult from a technological point of view, it just takes time to get the views, controllers and domain model wired up. Time I would rather spend on the interesting parts of the app.

Have you had similar experiences when building CRUD apps? Does the choice of framework matter? Are there faster ways to implement data management functionality than MVC frameworks?

Top comments (16)

Collapse
 
iamepp profile image
Elizel Procópio • Edited

Have you tried JHipster ? JHipster an open source application generator.It allows you to easily create high-quality Spring Boot + Angular/React projects. You can create a CRUD in few minutes.
jhipster.tech/

Collapse
 
bertilmuth profile image
Bertil Muth

I will definitely try it, thanks.

Collapse
 
ben profile image
Ben Halpern

I haven't yet found anything better than Ruby on Rails for zero-to-sixty on a basic CRUD app. The generators can get the job done pretty quickly, and perhaps along with an admin panel like Administrate

But I don't think anything can be that much better than the others. I'd definitely like to hear about other options. I definitely see non-devs using tech like Airtable to speed run the process, though nothing ends up being just the right choice. It's what you didn't know you needed on day one that always causes the problems.

Collapse
 
6temes profile image
Daniel

Completelly agree that RoR allows to create CRUD apps really fast.

But Ruby on Rails is not easy. There are a lot of implicit conventions that the developer needs to know, several gems that she need to understand well, and a lot of magic that is extremelly useful but that may be confusing for a beginner.

I think that this is one of the reason why some people is disapointed with Rails. They are told that it is easy and fast, but nobody tells them that Rails is easy and fast after you have been using it for more than one year.

Collapse
 
spidergears profile image
Deepak Singh

Agreed. Ruby has lot of hidden tricks and magic.
I have been a RoR dev for more than four years now, then one day I decided to take a look at Phoenix. I am amazed how everything is more explicit, more verbose.

Thread Thread
 
6temes profile image
Daniel

In any case, I never said that this implicitness (magic) is bad. Once I built several sites, I realized that there are many things on the stack that are always the same, so there's no need to configure every single detail of every app I build.

In Rails, many things just work out of the box. But it is important to learn not to fight against the framework. And it takes some time to learn that.

Thread Thread
 
spidergears profile image
Deepak Singh

Magic is not bad at all. Love RoR everyday.
It is also super easy to alter these magical pieces to play nice with any of the customisation. And yes, it take time to learn that, figure out these hooks.

Problem I think is discovery, where is this magic happening?

A little example, both Rails and Phoenix have a pluggable architecture but how do you know what stuff is plugged in.

RoR rake middleware is the magic phrase

rake middleware

use Airbrake::UserInformer
use Rack::Sendfile
use ActionDispatch::Static
use Rack::Lock
use #<ActiveSupport::Cache::Strategy::LocalCache::Middleware:0x007f9aababbc40>
...
...
use ActionDispatch::ParamsParser
use Remotipart::Middleware
use Rack::Head
use Rack::ConditionalGet
use Rack::ETag
use Warden::Manager

Phoenix, this is explicitly mentioned in the generated routes file.

pipeline :browser do
    plug :accepts, ["html"]
    plug :fetch_session
    ...
    ...
    plug :protect_from_forgery
    plug :put_secure_browser_headers
  end

  pipeline :api do
    plug :accepts, ["json"]
  end

  scope "/", HelloPhoenix do
    pipe_through :browser # Use the default browser stack

    get "/", PageController, :index
    get "/hello", HelloController, :index
    get "/hello/:messenger", HelloController, :show
  end

  # Other scopes may use custom stacks.
  # scope "/api", HelloPhoenix do
  #   pipe_through :api
  # end

Aside: Too much verbosity is an overkill too.

Collapse
 
ben profile image
Ben Halpern

No disagreements here.

Collapse
 
alchermd profile image
John Alcher

I'm a Laravel guy, but Django's scaffolding system is pretty much unbeatable. You define your models and you're pretty much finished.

Collapse
 
andreybleme profile image
Lucas Bleme

As already said here: Ruby has lot of hidden tricks and magic.

But...

Given your experience with Java (Spring MVC), I strongly recommend you to take a loot at Grails (grails.org/).

It is a high productive full-stack framework built on top of Spring. It uses the Groovy language (similar to Java, but without the pain).

Grails has a great scaffold tool to generate CRUDs from Domain classes. Since Grails is interoperable with existing Java code and Groovy run inside the JVM, it might be an interesting tool for you to know! :)

Collapse
 
bertilmuth profile image
Bertil Muth

Hi Lucas. Thanks for the tipp. I experimented with Grails a few years ago. Maybe it's time to have another look...

Collapse
 
andreybleme profile image
Lucas Bleme

Yes Bertil, they improved too much the framework since the last 3~4 years.

Given your Java experience the learning curve might be flat.

Collapse
 
sur0g profile image
sur0g

For the simple CRUD I suggest Django. It's admin system is just too good for the crud purposes

Collapse
 
aswathm78 profile image
Aswath KNM

Rails is still the easy way.

Choice of framework matters. Because You don't want to write a message engine in rails or an e commerce shop in erlang.

Collapse
 
vasilvestre profile image
Valentin Silvestre

Best one imo is Symfony Flex. The Maker bundle generate CRUD in seconds.
If you want to build API first, API platform is a beast (you should try it, believe me) !

Collapse
 
imthedeveloper profile image
ImTheDeveloper

Sails js is very ruby-esque for those info node