DIY stitch and glue Drift Boat Building -- Drift Boat Blueprints -- Online Plans

Montana Riverboats is published by Robopages

I made Robopages so I could make this website. It's here if you want it.

Latest Features

Robopages' default behavior is dynamic HTML output. But Robopages can now, optionally, generate static output too. The details are in the documentation. Robopages can also display Epub3 files on the server, as HTML, with no javascript required. Just unzip the epub3 file on the server, inside the DOCUMENT_ROOT and then edit a config file. And away it goes.

Epub3 on a webserver is a big deal because live video can be embedded inside the ebook. Which isn't practical on a hand held device. If you think youtube is cool and useful (I do) then think about the hybrid offspring of epub and video--playbooks and youtube--rolled into one. That is the future of how-to-do-it instruction. Robopages is a good first step becasue it works. Now.

Mission Statement

Robopages is a small footprint files-based rapid-application CMS without graphical or content complexity limitations of any kind, geared primarily toward unix-savvy developers. Most Content Management Systems seek to make development "easier" for non-professionals. Robopages concedes that market, targeting high-end professionals instead. This does not mean Robopages is difficult. Quite the contrary. If you are familiar with ssh, scp, bash, sed, perl, php, css and most of all with terminal windows and the keyboard, you can mock up a complex website faster--with Robopages--than with any other system. Robopages, among other things, seeks to limit the use of databases as much as possible.

Groundrule Assumptions

Most website pages consist of repetative boilerplate HTML fragments (headers, footers and repeated navigation lists) combined with one or two (but usually one) main display area whose content is sometimes but not always complex enough to require help from a database server. Shopping carts, blogs and discussion forums need to be serviced by backend database systems. So far so good. But making database queries to find CSS files, javascript codes and repetative boilerplate HTML is like driving and 18 wheeled tractor trailer truck to the corner grocery store when all you need is a quart of milk. Bug.jpg


Robopages is a rapid application way to quickly mock up a site and to make continuous structural and content modifications--until you get what you want. Once visually complete you want you may or may not want to export it into a more cumbersome system like Drupal or Wordpress. Any layout is possible. There are no restrictions. There is no faster way to develop a new layout and to fine tune the content for a proposed new website.

Layouts are defined by editing an XML file in layouts/*.xml and by editing or adding CSS. Dynamic content must be generated from a plugin module in the plugins directory. Existing plugins include (file.php, contactus.php, mkBreadcrumbs.php and a few others as examples.

The simplest plugin module is file.php which sucks in the contents of an html fragment file. Html fragments, images and downloadable files can be arranged in an organized system of nested file directories.


The boilerplate look and feel of the website is determined by an XML layout file combined with its matching CSS. Once the boilerplate is defined content can be added quickly and easily. If you make use of the dynamicNavigation.php and flexyFileContent.php plugins, no links need to be edited and very little work needs to done in order to add new pages. If you upload a file it automatically becomes part of the website.

Robopages' plugins operate on a per-block element level. The XML mentioned in the paragraph above defines the ID names of the major block elements of a page, their tree-like nesting structure and the plugin class that supplies their dynamic contents.

After unpacking the zip file you do need to make the conf directory writable by the webserver. If you want to install robopages in a public_html home directory on a unix system you will have to navigate through several extra steps--as outlined in the documentation.

The following is robo.xml, the layout definition that results in the current page:

<?xml version="1.0" encoding="utf-8"?>
    <div id="wrapper" src="container">
      <div id="headerbanner" src="container">
        <div id="hbanner" src="file" />
        <div id="bottombannerlinks" src="file" />
        <div id="mkBreadcrumbs" src="mkBreadcrumbs" />
      <div id="main-content" src="container">
        <div id="toc" src="dynamicNavigation" />
        <div id="stuff" src="flexyFileContent" />
      <div id="footer" src="file" />