How this site is made

1. Shared parts with Server Side Includes

The top of this page, from <!DOCTYPE html> to the menu, lives in one file: /includes/header.html. Each page starts like this:

<!--#set var="title" value="How it's made" -->
<!--#set var="page" value="how" -->
<!--#include virtual="/includes/header.html" -->

The server replaces the include with the file's contents before sending the page, so your browser (and search engines) only ever see plain HTML. The header prints the title with <!--#echo var="title" -->, and the page variable sets a class on <body> that highlights the current menu item with CSS.

2. Dates and file names

The footer uses <!--#echo var="DOCUMENT_NAME" --> and <!--#echo var="LAST_MODIFIED" -->, so every page shows its own name and when it was last changed, without editing anything by hand.

3. A contact form without a backend

The form on the contact page posts to a special address on the site:

<form action="/_form/contact" method="post">
  <input name="name">
  <input name="email" type="email">
  <textarea name="message"></textarea>
  <input type="hidden" name="_redirect" value="/thanks.html">
  <input type="hidden" name="_subject" value="Message from the demo site">
  <!-- Left empty by people; bots fill it in and are ignored. -->
  <input name="_gotcha" class="hidden" tabindex="-1" autocomplete="off">
  <button>Send</button>
</form>

Pagehaus emails each message to the site's owner, with Reply-To set to the visitor's email, and then sends the visitor to /thanks.html.

4. Uploading

The files were uploaded with SFTP (FileZilla, Cyberduck, scp or rsync all work). The browser file manager works too, and can unpack a .zip.