Sections, not pages
Charities compose their pages from a closed catalogue of section types. Your template ships a renderer per type it supports, the platform feeds each renderer the tenant’s real content.
A Port60 template is a versioned artifact, a manifest.json, a set of section renderers written
in the Port60 Liquid dialect, and a theme.css. It contains no application
code: no JavaScript framework, no API calls, no payment logic. Templates decide how a charity’s
site looks; the platform owns what it does.
Sections, not pages
Charities compose their pages from a closed catalogue of section types. Your template ships a renderer per type it supports, the platform feeds each renderer the tenant’s real content.
Islands are placed, never implemented
Donation flows, event tickets, sign-in, live functionality is a platform
island. Your template writes {% island 'donation_widget' %} and styles
it through its stable class API. We upgrade the internals; your template keeps working.
Escape-by-default
Every output is HTML-escaped unless you use | raw, and the only values you should ever pass
through raw are the contract’s sanitised richtext fields.
Immutable versions
Published versions never change. A fix is a new version; tenants move deliberately. Your artifact is validated against the contract before it can be published at all.
Everything your template may rely on is written down as machine-readable contract files, the dialect whitelist, the section catalogue, the island registry, the CSS tokens, and the manifest schema. The engine enforces them, the publish gate validates against them, and this reference is generated from them, one source of truth, additive-only within a contract major. Build to the contract and platform upgrades cannot break you.
Publishing runs on a free developer account: sign up with your name, email, and your GitHub and
LinkedIn profiles at port60.com/developers/register. We
review every developer before uploads open, charities trust what we list, so we check who builds
it, and every template version is validated and reviewed before it can reach a charity’s site.
You can read everything here and build locally against the starter artifact while you wait, and if you build with an AI agent, start at the AI quickstart: every
kit scaffold ships an AGENTS.md briefing, and this whole site is one file at
/llms-full.txt.