A file-first publishing compiler

A tiny, file-based CMS
for a simpler web.

A tiny, database-free publishing compiler. Write content in YAML or JSON, shape it with TSX, and ship plain server-rendered HTML.

npm install @carl.fyi/tinyjs

Requires Node.js 22 or newer.

pages/page.yamlYAML
template: home
title: A small site
content: Files in. HTML out.
markdown: |
 Write **safe Markdown**.
 Keep your content portable.
200 OK/ → dist/index.html

A deliberately small system

Everything you need.
Nothing between you and the HTML.

01

Content stays portable

Pages are complete YAML or JSON documents. No database, proprietary editor, or frontmatter format.

site.yamlpages/01_about/page.yamltemplates/
02

TSX, minus the browser

Use typed TSX as a server-side template language—without React, hydration, a virtual DOM, or client JavaScript.

03

One renderer

Build static files or serve on demand. Both adapters call the same render function and return the same HTML.

From zero to site

A three-command workflow.

  1. 01

    Install

    npm install @carl.fyi/tinyjs
  2. 02

    Preview

    npx tinyjs serve
  3. 03

    Build

    npx tinyjs build

Small is a feature

Own every file.
Understand every layer.

TinyJS keeps publishing close to the web platform: structured content, server-side templates, and ordinary HTML.

Explore the documentation