PHPackages                             neuedaten/freezed - 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. [Templating &amp; Views](/categories/templating)
4. /
5. neuedaten/freezed

ActiveLibrary[Templating &amp; Views](/categories/templating)

neuedaten/freezed
=================

Freezed is a static site generator powered by the TYPO3 Fluid template engine.

v0.3.3-beta(1mo ago)87↓50%1GPL-2.0-or-laterPHPPHP ^8.2

Since Jun 11Pushed 1mo ago1 watchersCompare

[ Source](https://github.com/neuedaten/freezed)[ Packagist](https://packagist.org/packages/neuedaten/freezed)[ Docs](https://github.com/neuedaten/freezed)[ RSS](/packages/neuedaten-freezed/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (4)Versions (8)Used By (1)

❄️ Freezed
==========

[](#️-freezed)

**A static site generator powered by the [TYPO3 Fluid](https://github.com/TYPO3/Fluid) template engine.**

Templates in, static files out. No database, no runtime, no surprises.

[![Beta](https://camo.githubusercontent.com/defad35e7fe779c9d345ca28ffaddb27dc41a306b5c8deda1788931245f9ae20/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7374617475732d626574612d626c7565)](#status)[![License: GPL-2.0-or-later](https://camo.githubusercontent.com/3cdee559792e4bbdc4572f659f6626fa44d154933bb1e876fb49f009220f1d9c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d47504c2d2d322e302d2d6f722d2d6c617465722d677265656e)](LICENSE)[![PHP ≥ 8.2](https://camo.githubusercontent.com/1808791a1055552a16357d240b4eaf19407ac9ec4e7ba2bb83f705c5d4353fcb/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d254532253839254135253230382e322d373737626234)](#requirements)

---

What is Freezed?
----------------

[](#what-is-freezed)

Freezed renders a folder of content and one or more themes into a plain static website using **Fluid** — the same templating engine that powers TYPO3 CMS. You write layouts, partials, sections and (optionally) custom ViewHelpers, and Freezed compiles everything to static HTML and assets in a `public/` directory you can host anywhere.

```
content/ + themes/   ──►   freezed build   ──►   public/  (static HTML + assets)

```

Features
--------

[](#features)

- **Fluid templating** — layouts, partials, sections and ViewHelpers.
- **Stackable themes** — drop themes into `themes/`; they layer and override cleanly.
- **Content as folders** — every page is a folder with a template and a `variables.php`.
- **Asset pipeline** — reference CSS/JS/images via the `resource` ViewHelper.
- **Static files** — anything in `static/` is copied verbatim into the build.
- **Build hooks** — run shell commands before and after a build.
- **Zero runtime** — the output is just files; host it on any static host or CDN.

Quick start
-----------

[](#quick-start)

### Start a new site (recommended)

[](#start-a-new-site-recommended)

Use the starter skeleton, which scaffolds a working site for you:

```
composer create-project --stability=beta neuedaten/freezed-skeleton my-site
cd my-site
./vendor/bin/freezed build
# open public/index.html
```

The skeleton also ships a Docker dev environment (`docker compose up --build`). See [neuedaten/freezed-skeleton](https://github.com/neuedaten/freezed-skeleton).

### Add Freezed to an existing project

[](#add-freezed-to-an-existing-project)

```
composer require neuedaten/freezed:@beta   # @beta required during the beta
./vendor/bin/freezed install   # scaffold content/, themes/, config
./vendor/bin/freezed build     # render into public/
```

> During the beta you need the `@beta` flag (or `"minimum-stability": "beta"` in your `composer.json`). See [Installation › Beta stability](docs/installation.md#beta-stability).

Project structure
-----------------

[](#project-structure)

A Freezed site is just a handful of folders:

```
my-site/
├─ content/              # your pages, grouped by content type
│  └─ pages/
│     └─ home/
│        ├─ index.html   # a Fluid template
│        └─ variables.php # variables for this page
├─ themes/               # one or more stackable themes
│  └─ 00_default/
│     ├─ templates/{layouts,partials,templates}/
│     ├─ assets/{css,js,images}/
│     └─ static/
├─ static/               # files copied verbatim into the build
├─ public/               # generated output (git-ignored)
└─ freezed.config.php    # content types, default variables, build hooks

```

Documentation
-------------

[](#documentation)

GuideWhat it covers[Getting started](docs/getting-started.md)Install, first build, the dev loop[Installation](docs/installation.md)Skeleton, library, requirements[Concepts](docs/concepts.md)The build pipeline and core ideas[Content &amp; pages](docs/content.md)Writing pages, variables, content types[Themes](docs/themes.md)Layouts, partials, assets, the resource ViewHelper[Configuration](docs/configuration.md)`freezed.config.php` reference[CLI](docs/cli.md)The `freezed` command[Docker](docs/docker.md)The containerised dev environment (ships with the skeleton)[Deployment](docs/deployment.md)Hosting the static outputRequirements
------------

[](#requirements)

- PHP **8.2** or newer
- [Composer](https://getcomposer.org/)
- PHP extensions: `mbstring`, `dom` (both ship with most PHP builds)

This repository
---------------

[](#this-repository)

This is the **engine** — the `freezed` CLI and rendering pipeline, published as the Composer package [`neuedaten/freezed`](https://packagist.org/packages/neuedaten/freezed).

```
.
├─ bin/freezed            # CLI entry point
├─ Classes/               # PSR-4: Neuedaten\Freezed\
│  ├─ Commands/           # install / compile commands
│  ├─ Domain/             # models + repositories (content, themes, resources)
│  ├─ Services/           # config, compile, render, file, static, scripts, log
│  └─ ViewHelpers/        # ResourceViewHelper
├─ assets/                # default theme + example content + default config
├─ includes/config.php    # built-in path defaults
└─ docs/                  # documentation

```

A ready-to-build starter project lives in the companion repo [neuedaten/freezed-skeleton](https://github.com/neuedaten/freezed-skeleton).

Status
------

[](#status)

Freezed is in **beta**. The build pipeline is stable; the API may still change before 1.0. Issues and feedback are very welcome.

License
-------

[](#license)

[GPL-2.0-or-later](LICENSE) © Bastian Schwabe / neuedaten

###  Health Score

39

—

LowBetter than 84% of packages

Maintenance91

Actively maintained with recent releases

Popularity10

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity37

Early-stage or recently created project

 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 ~0 days

Total

7

Last Release

43d ago

PHP version history (2 changes)v0.1.0-betaPHP &gt;=8.1

v0.3.0-betaPHP ^8.2

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/5033001?v=4)[Bastian Oppermann](/maintainers/bastian)[@Bastian](https://github.com/Bastian)

---

Top Contributors

[![r12r](https://avatars.githubusercontent.com/u/6528916?v=4)](https://github.com/r12r "r12r (1 commits)")

---

Tags

templatingstaticstatic-site-generatorfluidssgtypo3fluid

### Embed Badge

![Health badge](/badges/neuedaten-freezed/health.svg)

```
[![Health](https://phpackages.com/badges/neuedaten-freezed/health.svg)](https://phpackages.com/packages/neuedaten-freezed)
```

###  Alternatives

[symfony/form

Allows to easily create, process and reuse HTML forms

2.8k162.1M3.5k](/packages/symfony-form)[craftcms/cms

Craft CMS

3.6k3.6M3.2k](/packages/craftcms-cms)[typo3/cms

TYPO3 CMS is a free open source Content Management Framework initially created by Kasper Skaarhoj and licensed under GNU/GPL.

1.2k1.9M122](/packages/typo3-cms)[symfony/ux-twig-component

Twig components for Symfony

22018.6M382](/packages/symfony-ux-twig-component)[symfony/ux-live-component

Live components for Symfony

1647.0M137](/packages/symfony-ux-live-component)[fluidtypo3/vhs

This is a collection of ViewHelpers for performing rendering tasks that are not natively provided by TYPO3's Fluid templating engine.

2034.2M63](/packages/fluidtypo3-vhs)

PHPackages © 2026

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