Web application developers need to learn many skills or work within a team of specialists to deliver everything needed for a state-of-the-art website. Fortunately, help is provided by specialised languages like CSS, XML and SQL, as well as development frameworks supporting a wide variety of programming languages, including PHP, Ruby, Python and more exotic cutting edge languages like Haskell.
Despite the help provided by these tools, developing web applications could be much faster, cheaper and reliable. This website examines the eight directions of web application development and reviews tools to make the job easier.
Anyone who develops websites for a living soon discovers that clients have similar (though rarely identical) needs to structure the content and interaction for a website. These needs can be divided broadly into eight areas.
Site architecture includes navigation but is far more than a description of a few links to major portions of your site. It describes in a fundamental way how visitors to your site will interact with it. If your site architecture is poorly designed, visitors may not be able to find content that interests them and may leave your site quickly. Many web teams include a user interface specialist who documents the basic structure of your site in special diagrams called wireframes and tweaks this based on usability testing of a site prototype.
Search is a special form of site navigation that uses text or metadata selection to return relevant links to content on your site. Although most sites include the standard text search box on the upper right, search implementation can be be much more subtle, including:
- tweaking results for improved relevance,
- easy to use filtering options,
- elaborate caching systems to improve search efficiency.
Look and feel
Many websites allow visitors to authenticate in order to set preferences, request notifications, post comments, images and other content, and interact with other visitors by sending private messages or emails. An increasing trend is to authenticate against one central identity provider rather than requiring visitors to login to each individual website. Common providers include Facebook, Google or Twitter. A new system is Mozilla Persona (http://www.mozilla.org/en-US/persona/).
Standards such as LDAP, OpenID or SASL/Shibboleth allow website operators to set up their own identity providers to, for example, support a federation of websites operated by a single institution or group of institutions.. A more elaborate option is autologin, in which a site visitor is automatically logged in to a site if they are logged-in to an identity provider, creating an even more seamless experience.
Most websites require authenticated users to provide basic profile information such as a name, email address, image or paragraph of biographical text. It is often convenient to provide a way to share this information across different sites. If a visitor has authenticated using an identity provider such as Facebook or LDAP, basic profile data is usually automatically available.
Many websites use the gravatar system (https://en.gravatar.com/) which provides a way to share a common profile image. Others automatically generate a profile image based on the visitor's email address using systems like wavatar (http://www.shamusyoung.com/twentysidedtale/?p=1462).
Systems like OAuth provide a means for visitors to give permission to identity providers to share profile data (and other content as well) with a given website. Facebook, Google and Twitter all support various versions of OAuth.
Roles and Permissions
Most websites make do with only three roles: logged-out-user, logged-in-user and administrator.
Social networking sites and sites that encourage user-created content often need a much richer set of roles and permissions. Many social networks allow users to create a friends or contacts list that give these people access to non-public content. Other roles may include:
- content submitter
- content approver
- content promoter (to the front page or an area of highlighted content)
- content editor (deletes or edits inappropriate content)
- group administrator (responsible for content submitted to a group)
By introducing a more finely tuned content management system, site administrators can delegate much of the operation of the site to trusted members, saving management time and enriching the social network by giving some members a stake in the site through content management responsibilities.
Some sites depend upon site administrators or trusted members to grant these special roles and permissions. Other sites automatically promote members based upon content ratings from existing members.
Most people do not visit websites every day and even if they do, may overlook content of interest to them. A notification system can help them keep up to date by sending email messages when relevant content appears. This can be content from their friends or groups, a comment on one of their own pieces of content, or content containing certain keywords.
To avoid inundating users with email notifications, a common approach is to combine multiple notifications into a single message, sent once per week or at a user-specified frequency.
Some websites insert their own general content or news into notification messages, turning the periodic notification message into a newsletter containing both general content and content specific to the recipient. Notification newsletters can be an excllent way of maintaining interest in a site and ensuring future visits.
Mashups and feeds
A mashup is a website that incorporates content from other websites. A common example is a social networking site that allows including posts from a Wordpress blog or tweets from a Twitter feed on a profile page.
A feed on the other hand, is a stream of data from a website made available for inclusion in other sites. This is typically in the form of XML, often based on one of the RSS standards, which are XML standards originally designed for blog posts, but now used for a wide variety of content.
Feeds allow a clean separation of content and design and open up the possibility of integrating several web applications in one website. Institutions that run multiple websites commonly use feeds from these to create mashups in order to drive traffic from one website to another and create a more integrated experience.
Kevin Jardine is available for software development projects and can be contacted here: