Building Great Web Applications

Building Beautiful Applications

The aesthetics of your application will directly affect how easily people are able to accomplish their goals with your application. A web application provides rich visual experiences that will delight the eye without distracting the mind; it puts a premium on aesthetics and uses similar design paradigms as native applications without sacrificing usability.

Visually appealing images, color, and fonts are balanced against the needs for speed, scannable text, and ease of use. Audience and cultural context also matter as colors, layout or word choices may have different cultural meanings. Your application's visual design should please your users and improve usability for them.

A web application's visual design should please users and enhance usability

Leverage the open web features to provide beautiful designs

People expect to see web applications that are on par with the visual design of client or mobile applications instead of the sometimes uninspiring web content they’re used to.

Figure 4.1 - Beauty is in the eye (and hand) of the app holder!

Figure 4.1 - Beauty is in the eye (and hand) of the app holder!

Developers can create rich immersive experiences by using:

  1. 1.Real time drawing surfaces that are interactive and relevant to users.
  2. 2.Fonts and other typographic features that enhance the readability of content.
  3. 3.Textures, gradients, and shapes that increase the visual appeal of your application without distracting from the content.
  4. 4.Graphics and images with animations to help users understand what is going on and inform them that the application is working.
  5. 5.High quality and high resolution images that will look good no matter how users size their browser window.
  6. 6.Real world graphics, illustrations and icons to provide a level of familiarity and realism. If people understand how to use those materials in the real world, they should be easily able to translate those experiences to the web application.

Resources To Help You

Articles

Tutorials

Libraries & Frameworks

  • Google Web Fonts API - Google Web Fonts makes web fonts quick and easy to use for everyone, including professional designers and developers. We believe that there should not be any barriers to making great websites.
  • TypeKit - Simple, bulletproof, standards compliant, accessible, and totally legal fonts for the web.
  • CSS3 Gradient Generator - The CSS3 Gradient Generator is a showcase for the power of CSS gradients.
  • Ultimate CSS Gradient Generator - a powerful Photoshop-like CSS gradient editor from ColorZilla.

Examples

Use the whole screen

One big distinction between web pages and web applications is the way that they use the screen real estate available to them. Like client applications, great web applications use all of the space available to them.

When creating a great visual design, designers should:

  1. 1.Build your app to look like an application,, instead of a website with margins on the left and right.
  2. 2.Create a visual design that uses all of the space available to it. Because you can’t count on a specific size, size the content based on screensize, support window resizing and apply scrolling when needed.
  3. 3.Avoid fixed width layouts that have margins on the left or right side of the application which may remind users too much of web pages.
  4. 4.Use the Full Screen API that is available in many modern browsers to provide a full screen interface when appropriate.

Web apps that use the whole screen include:

Figure 4.2 - Steer your users any way you choose!

Figure 4.2 - Steer your users any way you choose!

Web applications don’t use traditional navigational elements

Web applications work without having to depend on browser navigation elements like the back button or forward buttons, reload, etcetera. They also work without the traditional in-page navigational elements like links down the left side or along the top.

While web applications don’t use these traditional navigational elements, they may use the address bar to save or share state and the back or forward buttons enable to user to go back and forward through that state. Instead of using links to move the user between different pages, buttons are used to change the state of the existing content.

Make it easy to try & use

People are quickly turned off by complex or lengthy sign-up processes. If your application requires people to log in, it should be an easy process that requests only the minimal information to get started. If possible, make it easier for people to sign up by leveraging an existing OpenID provider. Users will appreciate having fewer accounts and passwords.

To help decrease the bounce rate, and make the sign up and sign in process easy:

  1. 1.Provide an experience for people who choose to not log in or create an account.
  2. 2.Reward users who choose to create an account and sign in with additional features and more integrated services.
  3. 3.Provide support for signing in via an OpenID provider such as a Google account, thereby reducing the number of usernames and passwords people need to remember.
  4. 4.If you already have a login system consider correlating the OpenID provider to the user account in your system.

Web apps that do this well today include:

  • EtherPad - EtherPad allows users to start using the app immediately, and requires users to sign in only when they want to save.
  • Picnik - Keeps the barrier to entry low and allows users to edit and save their photos without ever having to log in or create an account.
Figure 4.3 - Make web apps easy to try out. No velvet ropes!

Figure 4.3 - Make web apps easy to try out. No velvet ropes!

Resources To Help You

Libraries & Frameworks

  • Google Identity Toolkit (GITkit) is a free toolkit for website operators who currently allow users to login with their email address and password, and would like to replace that password with federated login.
  • JanRain Login Helper helps websites that enable email based sign-ups to increase conversions at registration by performing inline email verification.

Examples

  • OpenID Wiki Gallery - a gallery of innovative sign-in and registration experiences that leverage user managed identity.

Provide an offline experience and improve performance

Developers can provide offline experiences and greatly increase the performance of their applications by caching data locally and only retrieving what’s necessary when they are connected.

To help improve performance and provide an offline experience:

  1. 1.Use Application Cache to ensure that the browser caches any necessary application code like HTML, CSS and JavaScript.
  2. 2.Leverage Web Storage to store small amounts of data that you’ll need quickly or might otherwise put in cookies.
  3. 3.Put structured data into a web database like IndexedDB which allows you to store significant amounts of data that is efficient to query and iterate across.

Web apps that do this well today include:

  • Amazon Kindle Cloud Reader - uses AppCache, local storage and WebSQL to provide an experience that works on iOS and desktop browsers.
  • SpringPad - uses AppCache, local storage and WebSQL to provide an experience that works both online and offline.
  • The New York Times Web App - uses AppCache and WebSQL to provide an offline experience that works on iOS and desktop browsers.
Figure 4.4 - Don't throw it away. Keep data close at hand to improve performace!

Figure 4.4 - Don't throw it away. Keep data close at hand to improve performace!

Resources To Help You

Articles

Libraries & Frameworks

  • ManifestR - a bookmarklet for creating an AppCache manifest file.
  • LawnChair - a library that provides a lightweight, adaptive, simple and elegant persistence solution.

Provide automatic data persistence

Web applications allow users to keep their data in the cloud. Users should feel confident that their work is safe. They should not have to think about where or when they saved their data, or if they have the latest version at hand. Web applications enable users to concentrate on their work without worrying about whether or not their work is safe.

To provide a great experience, web applications should:

  1. 1.Save data locally and sync to the cloud as often as possible because people shouldn’t have to worry about their network connection or what happens to their data if they leave the application.
  2. 2.Start in the same place that the user was when they left the application and enable them to pick up and be productive in the same place as when they left the application.

Resources To Help You

Tutorials

Figure 4.5 - Use AppCache and data persistence techniques to enhance usability, even offline!

Figure 4.5 - Use AppCache and data persistence techniques to enhance usability, even offline!

Keep the user informed with notifications

A client application keeps a user informed about what it’s doing through status messages, progress bars, notification dialogs, and other methods; web applications should be no different.

Keep people informed about what’s going on in web applications by:

  1. 1.Show loading indicators so people understand that a task is in progress.
  2. 2.Use HTML Notifications to provide toast like notifications for important information that people might want to know about in real time.
  3. 3.Use the HTML5 progress element to show either determinate or indeterminate progress.
  4. 4.Show modal dialogs to prevent users from moving on until they either provide specific information or the application completes any processing it needs to complete.
  5. 5.Animate actions that might have a real world analogue to help relate the progress to something people understand.

Web apps that do this well today include:

  • Gmail - provides new mail notifications
  • Astrid - provides reminders of your upcoming tasks
  • TweetDeck - tells you when there are new tweets that you’re following

Resources To Help You

Articles

Tutorials

Libraries & Frameworks

  • BootStrap Modal - a super slim take on the traditional modal js plugin.
  • jQuery UI - jQuery UI provides a comprehensive set of core interaction plugins, UI widgets and visual effects

Allow drag and drop to upload or download files

If your application deals with files, you should make the experience for people trivial and easy to deal with; they should never be left wondering if they just downloaded a file, or where it went, nor should they struggle to share files with your application.

When handling files:

  1. 1.Allow users to upload multiple files or entire directories by using the multiple or directory attribute in the file input type.
  2. 2.Use drag and drop to let users drag files from their computer to your application or vice versa.
  3. 3.Store and manipulate files locally on the user’s computer by using the File System APIs.

Web apps that do this well today include:

  • Gmail - allows you to drag attachments directly into the email message.
  • Google Docs - allows you to upload new documents to the app by dragging them into the browser.
  • Box.net - makes it easy to upload new files by dragging them into an upload widget.
  • AppMator - makes it easy to download the Chrome Web Store app package file you just created by dragging it out of the browser
Figure 4.6 - Offer multiple file uploads. Only 427 more vacation photos to go!

Figure 4.6 - Offer multiple file uploads. Only 427 more vacation photos to go!

Resources To Help You

Tutorials

Treat performance like a feature

Nothing is more valuable than people’s time. People expect client applications to start fast, and be immediately responsive to their use. Web applications should be no different. Web applications should start fast and always be responsive to their users.

When designing around fast, web applications should:

  1. 1.Load your application first, then load the user's data. By caching your application code locally with AppCache, you reduce the number of network requests needed to start your application. Because the application is cached locally on the device, your application can start immediately. Use loading indicators as you retrieve any data needed to enable your application.
  2. 2.Follow best practices for building fast web sites and applications. Your web application is still based on the web and you should continue to leverage those best practices.