PHPackages                             thomas-redstone/site-build - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. thomas-redstone/site-build

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

thomas-redstone/site-build
==========================

A simple static website builder

1.2.5(10y ago)222[9 PRs](https://github.com/ThomasRedstone/SiteBuild/pulls)PHPPHP &gt;=5.4.0

Since Dec 11Pushed 4y ago1 watchersCompare

[ Source](https://github.com/ThomasRedstone/SiteBuild)[ Packagist](https://packagist.org/packages/thomas-redstone/site-build)[ RSS](/packages/thomas-redstone-site-build/feed)WikiDiscussions master Synced today

READMEChangelogDependencies (7)Versions (20)Used By (0)

SiteBuild
=========

[](#sitebuild)

SiteBuild is designed to build static websites, built in the same way as you would build a dynamic website.

It uses PHP, and the Plates PHP Template engine, which keeps things simple.

For each site, you create a directory structure like this:

```
- menus
- output
- pages
- resources
- themes

```

Installation
------------

[](#installation)

```
composer global require thomas-redstone/site-build

```

Add the following to your .bashrc, .zshrc or what ever is required to alter your path variable! For OSX or Linux, it will be something like this export PATH="$PATH:$HOME/.composer/vendor/bin"

The best resource I could find, which explains how to modify the path seems to be this help page from Oracle, for Java, but it still applies for PHP and composer, so if you're on Windows, or just about any Operating System under the Sun, this should tell you how to modify your path:

Usage
-----

[](#usage)

First of all, you must ensure that there is an 'app.yml' configuration file containing the site name, inside the project folder e.g.:

```
name: ExampleSite

```

At present, this is not used, but it must exist, as SiteBuild uses it as confirmation that it is being run in the correct directory.

Next, run the sitebuild command:

```
sitebuild

```

At this point you should have a populated `output` directory. The directory `output/latest` will always contain the most recently generated site, and you can test it works locally as follows:

```
cd output/latest && php -S localhost:8080

```

At which point, you should be able to navigate to  and see your website.

Menus
-----

[](#menus)

Menus are defined as .yml files, at present there is only a main menu which will be used, but it is planned to support many menus in the future. For now, the main menu should exist in menus/main.yml, the format being as follows:

```
-
  url: "/"
  text: Home
-
  url: "/about"
  text: About

```

Output
------

[](#output)

This is where the generated website will be placed, at present each day gets a duplicate copy, this behaviour is likely to change soon, and keeping the websites in version control would be the preferred way to ensure there is always a way to roll back to a previous version.

Pages
-----

[](#pages)

The site content lives in the pages directory, these should all be .php files, with something along these lines at the beginning of each file, the template will use the data passed to it in order to populate the title, and the class provided will be applied to the body element, allowing any page specific styling to be handled. At present the tags and date fields are not used, but I plan to do something with them soon, and they are part of the reason that the $config is declared as a variable, and not simply an array declared as the layout function is called.

```

```

Resources
---------

[](#resources)

Any files placed in the resources directory will be copied directly into the output directory, with any folder structure preserved, so it's an ideal place to put any images, stylesheets, javascript or other assets.

Themes
------

[](#themes)

Themes is where the templates themselves are, I generally call my main template 'template', and have a 'menu', which looks something like this:

```

```

Plans
=====

[](#plans)

I started this project around 3 years ago, and for much of that time, I've not done much with it, recently I've began to modernise it.

A few of the features I hope to add are:

- Tag pages, using tags from the individual pages
- Multiple menu support
- Generated content list pages (like a blog index page)
- Automated pushing of generated sites to Amazon S3
- Create a 'sample project' repository, to make it easier to get started

I'd love to hear any feedback, bug reports, of feature suggestions, so please feel free to raise an issue on the issue tracker, or email .

###  Health Score

29

—

LowBetter than 57% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity9

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity67

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~8 days

Recently: every ~0 days

Total

9

Last Release

3787d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/3607652?v=4)[Thomas Redstone](/maintainers/ThomasRedstone)[@ThomasRedstone](https://github.com/ThomasRedstone)

---

Top Contributors

[![ThomasRedstone](https://avatars.githubusercontent.com/u/3607652?v=4)](https://github.com/ThomasRedstone "ThomasRedstone (23 commits)")

###  Code Quality

Code StylePHP\_CodeSniffer

### Embed Badge

![Health badge](/badges/thomas-redstone-site-build/health.svg)

```
[![Health](https://phpackages.com/badges/thomas-redstone-site-build/health.svg)](https://phpackages.com/packages/thomas-redstone-site-build)
```

###  Alternatives

[friendsoftypo3/content-blocks

TYPO3 CMS Content Blocks - Content Types API | Define reusable components via YAML

101466.4k45](/packages/friendsoftypo3-content-blocks)[kimai/kimai

Kimai - Time Tracking

4.8k8.7k1](/packages/kimai-kimai)[altis/local-server

Local Server module for Altis

18217.0k2](/packages/altis-local-server)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
