No activity today, make something!
tiddlyweb Features

20160313160658 cdent  

As TiddlyWeb has developed, it has become increasingly difficult to give a concise description of what TiddlyWeb is and does and can do for you. It is far easier to list what it has rather than what it does. Part of the reason for this is that TiddlyWeb is lego, a toolkit for getting stuff done. When you buy a screwdriver it doesn't say anything about what you're going to connect, just that you can. So here, in vaguely chronological order of development, is a list of TiddlyWeb features:

  • HTTP API for manipulating tiddlers, bags and recipes.
  • filter tiddlers with a pluggable/extensible syntax.
  • Pluggable/extensible system for serializing and deserializing those entities to and from various formats using serializers. Associate the HTTP API with the serialization system via content negotiation.
  • Pluggable/extensible system for storing entities to persistent storage.
  • Mount TiddlyWeb using a built in server or any WSGI capable web server.
  • Pluggable/extensible WSGI middleware stack for server_request_filters and server_response_filters.
  • Unicode on the inside, UTF-8 on the outside.
  • Tiddlers may be stored and managed with revisions and edit conflict detection.
  • Constraint based authorization system using policies on bags and recipes.
  • Pluggable/extensible authentication system using challengers and credentials extractors.
  • A simple architecture for plugins that supports all this pluggability and extensibility.
  • Any kind of content (any MIME type) may be stored in a tiddler, not just wikitext.
  • Input (i.e. PUT) validation/sanitation.
  • Server side rendering of wikitext to HTML.
  • Pluggable/extensible renderering of different wikitext syntaxes.
  • Generating dynamic TiddlyWiki files with a recipe cascade.
  • Import an existing TiddlyWiki into the system from the command line or a POST to a bag.
  • Host single (or more) page HTML + JavaScript + CSS applications using the HTTP API for persistence.

See plugins for examples of ways in which the pluggable/extensible things have been plugged and extended.