Template language
Django/Twig-style syntax with filters, macros, includes and {% verbatim %} for Vue or Alpine.
IllusionCMS covers what a developer-built website needs—from the editor to data, automation and operations. Here is the full tour.
Every page is HTML with template tags—edited in CodeMirror, previewed live next to it.

Snippets, components and layouts keep your markup DRY. CSS and JavaScript live in a shared library and are attached where they are needed.
Django/Twig-style syntax with filters, macros, includes and {% verbatim %} for Vue or Alpine.
Mark a snippet as a page layout—new pages start with {% extends %} and a content area.
{% component %} with named slots and fallbacks—like web components, but on the server.
One library, assigned per page or inherited by subpages. Minified and versioned automatically; ES modules detected.
Attach CSS/JS to a snippet—it only loads on pages that actually use it.
A playground for HTML, CSS and JS with live result—private or shared via link.
A component is a snippet with slots. Pass parameters, fill slots, done—changes apply everywhere at once. The same components become building blocks for editors.
{% component "card" image=p.photo %}
{% fill "title" %}{{ p.name }}{% endfill %}
<p>{{ p.summary }}</p>
{% fill "footer" %}
<a href="/team/{{ p.slug }}">Profile →</a>
{% endfill %}
{% endcomponent %}
Give any snippet a schema with typed parameters and slots—and it becomes a building block. Pages and collection entries can then be assembled from blocks.

Define structures with typed fields—blog, team, products, events—and use them in any template.

REST sources bring external data into your templates: shops, CRMs, headless systems or your own services—with placeholders, headers, secrets from environment variables and caching. Through workflows, IllusionDB tables become pages too, including thousands of landing pages with a generated sitemap.
{# Collection, REST API and IllusionDB – same syntax #}
{% for p in data("products", "category", route.query.cat,
"sort", "price", "limit", 12) %}
{% include "product-card" with product=p %}
{% endfor %}
{% with weather=data("weather-api", "city", "Berlin") %}
<p>{{ weather.current.temp }} °C</p>
{% endwith %}
Connect nodes on a canvas—Node-RED style. Forms, webhooks and schedules start a flow; JavaScript nodes, switches, HTTP requests and collection actions do the work.
workflow()
Public endpoints for forms and webhooks—with honeypots, validation and redirects.
Cron expressions for nightly jobs, price lists, imports or clean-ups.
React when entries are created, changed or deleted.
Send emails via your SMTP server—notifications, confirmations, reports.
Wait, merge parallel branches and keep state in a small key-value store.
Read and write tables of IllusionDB—filtered, grouped and cached.
Language subtrees or separate sites per language—IllusionCMS links the translations and takes care of the rest.
hreflang tags and sitemap alternates generated automaticallytranslations() and language_name() for your language switcherlang_root()<nav class="languages">
{% for t in translations() %}
<a href="{{ t.url }}" hreflang="{{ t.lang }}"
{% if t.current %}aria-current="page"{% endif %}>
{{ language_name(t.lang) }}
</a>
{% endfor %}
</nav>
Point the importer at a sitemap or let it crawl. It takes over the page tree, HTML, CSS and JavaScript as shared assets, images, fonts and videos—and rewrites all links.

IllusionCMS is one Go binary with an SQLite database. Everything else is built in.
Versions with restore for pages, snippets, assets and workflows; nightly backups.
Move complete content between instances—or push from local to production.
Garage, AWS, Hetzner, R2 … with local cache and guided migration.
Signed, expiring links or sign-in required.
Daily totals for pages, referrers, browsers, countries and downloads—no cookies.
Domains, sitemap, robots.txt, icon and 404 page per site.
Rendered pages in memory with gzip and ETag—cleared on every change.
Tokens with read or write access, batches, idempotency keys, schema endpoint.
Signed notifications on content and schema changes—with retries.
Security headers, CSP, rate limiting, CSRF protection, HSTS behind HTTPS.
Automatic redirects when pages move; CSV import and export.
Run without admin—manage it remotely from your local instance.
IllusionCMS is free. No account, no telemetry, no strings attached.