Build websites without restrictions. Orgnanize existing content.

Why This Exists

We can use plain old HTML or markdown files. It doesn't require anything special except putting optional categories in the head tag to organize them. We can use a mix of HTML and Markdown.

Less duplicate work. We develop dozens of GitHub projects ourselves and syndicating them to a dozen websites and mirrors with hundreds of files each. Updating their menus, links, RSS feeds, and sitemaps became tiresome. We did not want the additional complexity of a database on top of all that. We like being able to back up our websites with a quick copy.

Reduced server overhead. Browsers cache the result of AJAX queries for many hours, unless instructed to do otherwise, so there is nothing wrong with having websites fetch content dynamically. In fact, there are several advantages.

Menu Updates Itself

The FirstPage menu updates itself hourly to match server contents. It lets documents decide which menu headings they belong under by way of data-headings (see README or view source). When Javascript is available the menu uses AJAX to create a RESTful user experience. This saves bandwidth and avoids potentially-troublesome page reloads that leave competitor's sites blank in the event of internet congestion. Choose an item from the menu and watch. The page does not reload! FirstPage outputs standards-compliant css-styled horizontal or vertical <nav> elements with drop-down button menus that fall back to bullet lists for older browsers.

Caching of Remote Pages

The FirstPage content management system can cache remote content using web shortcuts, placeholder files that tell FirstPage where to get the content. See for details. There are two types of web shortcuts, url shortcuts and cache shortcuts. There are no restrictions on what can go in a shortcut. is itself a cache shortcut that maintains a cached version of itself under

New Developments