One route, many pages

A [slug] route can render every page in a collection. /privacy, /terms, /license all resolve to [slug]/+page.svelte. The content comes from the matching Markdown file.

Load by slug

In +page.js, read params.slug, look up the Markdown file, and return its metadata and body. If it does not exist, call error(404).

Shared layout

All legal pages share the same layout: page header, body container, footer. The route renders the shared layout. The content fills the body.

Summary

A dynamic route plus a content collection replaces a folder of near-identical page files. One template, many pages.