Webs(C)ite

back

Technical Caveats

Content format

Only .htm files are recognized as content. There is no Markdown support, no tags, no categories, and no theme system. Posts are written in plain HTML. This is intentional.

Platform support

Webscite currently builds on macOS and FreeBSD. The file traversal code uses fts_open and fts_read from <fts.h>, which is a POSIX/BSD interface not available on Windows. Other POSIX dependencies include realpath, getline, dirname, access, and strlcat. Linux support is possible but untested.strlcat is a BSD extension. It is available on macOS and some Linux distributions but is not part of the C standard library.

Build requirements

The Makefile hardcodes clang as the compiler of choice. On macOS, available system libraries may differ —use the included macos-build.sh wrapper which substitutes the correct framework flags.

Git requirement

The content/ directory must live inside a Git repository. Creation and modification dates are read from Git history, and static asset cache busting uses Git blob hashes. Abbreviated hashes are appended as query parameters to reset.css, style.css, and script.js—these three filenames are expected inside the content/ directory. Files that have not been committed yet show as "DRAFT" with no date.

Git integration is provided by libgit2, which gets downloaded and compiled as a static library on first build (this requires CMake and wget).

Hard limits

A few limits are set at compile time in the source:

  • Maximum 50 pages total
  • File paths capped at 100 characters
  • HTML content buffer of 48 KB per page—longer posts will overflow

All three are defined as constants and can be raised by editing the source directly.

Created on 2026-03-02
Last updated on 2026-03-02