# For education

> Teach the web on a real CMS: a six-week course outline, sites students hand in as plain files, and roles for the school’s own website. Free and open source.

## Teach the web on the real thing.

Free for every student, teacher and school.

[Get started](https://lettern.org/download)

[See the course](https://lettern.org/#course)

![An architect’s home page in the builder, with its heading selected.]()

## Six weeks, from blank page to published site.

Take it as is, or take what you need.

**Week 1: A site on every laptop**

PHP and SQLite are all it needs. `php cms serve` and it runs. [Installation](https://docs.lettern.org/getting-started/installation)

**Week 2: Type, colour and space**

Build a design system of tokens, and watch one change run through every page. [Design system](https://docs.lettern.org/design/design-system)

**Week 3: Components and templates**

Make a card once, reuse it, change it, and see why that matters. [Components](https://docs.lettern.org/design/components)

**Week 4: Model the content**

A department, a course, a menu: define the fields, then bind pages to them. [Collections](https://docs.lettern.org/content/collections)

**Week 5: Work with an agent**

Connect an AI tool over MCP, ask for a page, then read every step it took. [MCP](https://docs.lettern.org/agents/mcp)

**Week 6: Publish**

Fix what the link check finds, build plain HTML and put it online. [Static builds](https://docs.lettern.org/design/static-builds)

## Students hand in a folder.

Plain text you can read, diff and mark.

portfolio/

```plain
portfolio/
  config/
    site.yaml
    roles.yaml
  content/
    collections/
      pages/home.md
      pages/about.md
      projects/poster.md
      templates/page.md
      components/card.md
    design/tokens.json
```

What changed in tokens.json

```plain
   "color": {
-    "primary": { "$value": "#d9432a" },
+    "primary": { "$value": "#2456b8" },
     "surface": { "$value": "#fbf1e3" }
   },
   "space": {
-    "gutter": { "$value": "1rem" }
+    "gutter": { "$value": { "min": "1.25rem", "max": "2.5rem" } }
   }
```

## Let them question the agent.

Every step it takes is on the screen.

Connect an AI tool

Your AI client

Add the wine list to the home page, then publish it.

Signed in with OAuth as Anna

Done. It’s live, and the change is in the audit log.

Actions

entries.get

design.get

entries.update

entries.publish

Audit Log

Publish Entry

Home

now

Anna Verhoeven

Agent

Update Entry

Home

now

Anna Verhoeven

Agent

Update Entry

Grilled turbot

2 hr. ago

Marta Lindqvist

Admin

![A role with most permissions switched off, described as changing only what that team looks after.]()

## And the school’s own website.

Each team edits its own part.

### Roles, down to a collection

Admissions gets courses. The press office gets news.

Users and roles

### Pages for students only

Limit a page to people with an account or a role.

Gated content

### Ready for open-day traffic

Published pages are plain files, so they don’t buckle.

Static pages

## Questions teachers ask.

**Is it free for schools?**

Yes. It’s MIT licensed: free for any use, on any number of sites.

**Do students need a server?**

No. PHP 8.4 on a laptop is enough. SQLite is built in, and `php cms serve` starts a local site.

**Do we need to pay for AI?**

No. Everything works without it. The assistant uses an Anthropic API key, and MCP connects whichever AI tool you already have.

**Can students keep their work?**

Yes. A site is a folder of plain files. It’s theirs to keep, move or put online.

## Run it in your next class.

[Get started](https://lettern.org/download)

---
Source: https://lettern.org/for/education · Updated 2026-10-30
