Let me begin with posing questions on capability of a single html file [without bulky stuffs like applet, flash, or activex]. What can you visualize about the capabilities of a single-page-html file? Can whole website be saved in a single html file thereby making it easier to store, manipulate, transmit and so on? Can such single-page-website be presented in a descent manner? Can they be update themselves [like that of wiki !!!] without using any server side scripting like PHP, ASP, or Perl? Is it possible to edit the content of such web-app from browser itself?
The answer to all those posed questions is fortunately yes. But very few web-developer knew it. This can be attributed to several factors. The foremost reason behind it is the poor understanding of capability of java script. This is a result of poorly documented JavaScript standard. Most of the web-developer have used JavaScript to add dynamicity to html pages. Web-apps are traditionally being designed with server-side scripting language.
But sudden rise of interest in development of JavaScript intensive web apps is taking place in the line of
Google Maps and
Gmail. These success of Google is inspiring many to come up with JavaScript-intensive applications that does many interesting and unthought stuffs. JavaScript-based new technologies like AJAX are coming up in a big way.
A single page application (SPA) is a JavaScript-intensive web application that runs entirely on client web browser. Typically it uses JavaScript [to add functionalities], CSS [to describe the look-and feel], and HTML. The application modifies its own data structure through its DOM tree, and makes its changes persistent when the user invokes the browser's save page comand to save the modified web page to the disk. It can be optionally enhanced by connectivity to a server.
Here are some nice examples of SPA applications
The key properties of these web apps is that you can do a "File->Save Page" in your browser to get a personal private wiki. Now lets have a brief tour of these applications to have a idea of the ircapabilities.
TiddlyWiki
TiddyWiki is a MicroContent WikiWikiWeb made by Mr. Jeremi Ruston. By MicroContent we mean self-contained fragments of contents that are typically smaller than the whole page. These are also called as "Tiddlers". TiddlyWiki aggreagates these tiddler items into pages that are loaded in one gulp and progressively displayed as user clicks hyperlink to read them. It allows anyone to create personal self contained hyper text documents. All the content reside in a single html document, needs no server side stuffs, and can be updated from the browser itself. It is published under an open source lincense.
It is possible to change the look and feel of this web-apps by suitable change of CSS (Not an easy task for begginers), and several beautiful templates have come up like TiddlyKubrick, TiddlyRin, Blue Mist, GTDone Style, Tiddly Tag Style, Tiddly Sinister, ZeldMan Orage Style. People have tried to build-up several variations of it like MyWiki and IeWiki.
The third version of TiddlyWiki has got a rich set of features like Compatibility of most modern browsers, Generation of RSS Feed, Auto Save, Save Backup, Custo Style Sheets Keyboard Shortcuts, Rich Foratting, Embedded Images and Macros.
And no doubt, because of such rich feature set it has been used by many people for different purposes like homepages, blogs, community portals, and writing Fictions too. A big list of such usages of TiddlyWiki can be found out at http://www.tiddlywiki.com.
You can get your own copy of blank TiddlyWiki here.
GTDTiddlyWiki
Getting Things Done is a simple and effective personal productivity methods by David Allen. GTD Tiddly Wiki is a GTD adaptation of Tiddly Wiki by Nathan Bowers. The purpose is to give user a single repositary for their GTD lists and support materials so that they can create/edit lists.