Stop making scaffold apps

Scaffold apps are terrible. You probably use them all the time. They’re the type of app where every screen is a list of items and each item has its page. They’re common for a reason: they’re easy to design and easier to code. Rails (and other frameworks) even have tools for automatic scaffold generation. The tools look at your data model and generate a page for each model, index pages, editing and creation forms, et cetera.

Typical list of projects in a scaffold app

Scaffold apps are the simplest visualization of a bunch of data: have a list of Projects and each Project has three main fields? Well then, let’s show that list with a row for each Project and a column for each field. Slap on a big shiny “+ New Project” button on top and we’re done.

But why do scaffold apps make me shudder?

  1. They treat all data equally. If your users create a new project rarely but add Goals all day long, then adding a Goal should be easier and faster than creating a Project.
  2. They don’t help you make sense of what to do next. There’s no sense of what’s the “main” thing we do here and what are the secondary things. For a new user just looking at your app for the first time, they’ll have trouble understanding where to start.
  3. They’re ugly and repetitive. After seeing three or four screens full of tables, my eyes start to water and I want to turn the app off.
  4. They’re slow and full of page loads. New Project, click, form loads. Save, click, Project page loads. Edit, click, form loads. Lots of clicks and lots of waiting time.

Avoiding the scaffold

This could be easy or hard depending on your case and time resources, but here are a couple of quick tips.

Use alternative ways to display data. There are lots of ways to display data: lists are just the easiest to do. Maybe a visual matrix with thumbnails will be easier for users to quickly scan for their items? If your items have a geographical component, maybe display them all on a map?

Same data, displayed on a map

Think about workflows instead of about your data. The app’s job is to help people complete tasks. What tasks are your users trying to accomplish? Build the product around helping them complete the most common tasks quickly and intuitively.

Add shortcuts to said flows. To add Customers to a Project: do I go to the list of Customers and click “Add to Project” or the other way around? If both make sense, have both in there.

Combine common actions into multi-step wizards. Instead of having one form to create a Project, then another form to create a Customer, then connect the Project to the Customer, perhaps a Project creating workflow can help me define the project, then add customers in a more guided way.

By adding an optional next step shortcut we can guide the user.

Bottom line

Scaffolds suck. They’re only good for getting a product quickly out the door. Once your data model grows, or once user productivity becomes a goal, get rid of it and build something better.