Rivetweb is a minimum requirements Tcl engine for creating template based websites. The only required software packages you need are the Apache HTTP Webserver , Apache Rivet and (in the current implementation) also tdom is used to manipulate data and XHTML ouput.
Rivetweb internal machinery and organizazion is entirely developed in Tcl. Rivetweb was written with an emphasis on indipendence from the actual implementation of its components and aims at evolving to a simple yet fully customizable, extensible framework for simple websites.
What Rivetweb can do for you
Rivetweb was born as a simple application to create websites whose content is static and, if needed, available in different languages. It proved to be a useful ground where workgroups developing static documentation to be published on the web could work together focusing their efforts on page writing and on the site structure (see Examples ) organization. Unlike other powerful open source publishing tools (namely Docbook ) Rivetweb doesn't come with a rich set of semantic tags ready to use (except for a few inherently needed tags like sitereference ), but has a simple mechanism that lets you add Tcl written hooks to transform and/or expand specific element of a page into full XHTML code. Rivetweb is meant to be a blank canvas where Tcl'ers can add markup language transformations or combine datasource to create web sites.
Rivetweb as an HTML generator
When links in a Rivetweb site are consistently written with the sitereference tag the whole website can be generated as if every page was stored in a good old fashioned .html page. By setting up Apache mod_rewrite with a few configuration lines the whole website can be cloned into static .html pages and then deployed with any webserver with no backend needed at all. When used for this purpose Rivetweb is a good tool to generate documentation that is not going to change every second (even though recreating it can be done easily or even automated with scripts)
Rivetweb supports multiple templates at once. You can take several templates, adapt them to show your pages and run the website with as many templates as you like. Your website changes appearance by simply starting the browsing with a an extra urlencoded parameter template=<template_name>