SiteFS is a tool for building static websites however you want.

In it's simplest form it just lets you build pages from markdown or html inside layouts. The file's destination is based on the source file. You can also use ruby to build arbitrary pages whenever you run the generator.
Any file with `.page` in the name will generate html files for you. You can even use code to have one file programattically make many pages.
mysite.com/
blog/
_layout.md.html.erb
tech-post.page.md
welcome.page.md
gallery/
_gallery.html.erb
gallery.page.rb
vacation-pic1.jpg
vacation-pic2.jpg
_layout.html.erb
<!DOCTYPE html>
<html>
<head>
  <title><%= title %> | SiteFS</title>
  <link rel="stylesheet" type="text/css" href="/styles/app.css" />
</head>
<body>
  <nav class="nav">
    <section class="nav-left nav-section">
      <h1 class="title primary-nav-item nav-item">
        <a href="/">SiteFS</a>
      </h1>
    </section>

    <section class="nav-right nav-section">
      <div class="nav-item">
        <a href="/docs" class="link">Docs</a>
      </div>

      <div class="nav-item">
        <a href="http://github.com/tal/sitefs" class="link">Github</a>
      </div>
    </section>
  </nav>

  <section class="container <%= yield :container_class %>">
    <%= yield %>
  </section>

</body>

</html>
        
index.html.erb

Control

Using html, markdown, or ruby you can make your static site be whatever you want. The folder strucute becomes your site's structure. Flexible templating lets each of these pages look as similar or unique as you want.

Tools and Sync

Regardless of the file server tools will watch and serve up files for you. Put your credentials in and it will sync all changes up to AWS S3 for you.

Simple

Make a new html or markdown file in a folder and boom, the new page will be there. A new file will be rendered into a provided layout. Each section of your site can have its own template, or inherit the parent or root one.

Installing

gem install sitefs --pre

Running

mkdir mysite.com && cd mysite.com
echo '<%= yield %>' > _layout.html.erb
echo 'hello world' > index.page.html.erb
echo '# Test Post\nPage' > post.page.md
sitefs
Listening to ~/mysite.com/
  generate - index.html
  generate - post/index.html
about to start server on: http://127.0.0.1:8050
[2017-03-26 20:42:46] INFO  WEBrick 1.3.1
[2017-03-26 20:42:46] INFO  ruby 2.3.3 (2016-11-21) [x86_64-darwin16]
[2017-03-26 20:42:46] INFO  WEBrick::HTTPServer#start: pid=24312 port=8050
This starts up a server that watches the directory for builds. See docs for more information on how to setup your project.