Pages & navigation

How the page tree maps to your sidebar, how URLs are derived from slugs, and how to organize a big site.

The page tree in the dashboard is your sidebar. There's no separate config file. Reorder pages → the sidebar updates. Nest a page under another → it becomes a sub-item.

The page tree#

Screenshot needed

screenshot of the page tree sidebar in the dashboard, showing nested pages with drag handles

Each page in the tree has:

  • A drag handle for reordering and nesting
  • A title (rename inline by double-clicking)
  • A status indicator (draft / published)
  • A right-click menu for duplicate, settings, delete

Drag a page onto another page to nest it. Drag it out of the parent to un-nest. The sidebar on the live site mirrors the tree exactly.

Slugs and URLs#

Each page has a slug. The slug is the URL path:

SlugURL
index/ (the homepage)
quickstart/quickstart
editor/writing/editor/writing
api/users/list/api/users/list

Slugs are independent from the tree structure. You can have a slug like editor/writing even if the page isn't nested in the tree — the slug determines the URL, the tree determines the sidebar.

That said, keeping them in sync is a good practice. If a page is nested under "Editor" in the sidebar, its slug should start with editor/. The sidebar will look right and the URL will read right.

Special slug: index#

The page with slug index is your homepage — served at /. Every project should have one. If you don't, the homepage shows "No content yet" until you do.

Slug rules#

  • Lowercase letters, numbers, hyphens, and forward slashes only
  • No leading or trailing slashes
  • No spaces, no underscores, no special characters
  • Maximum 200 characters total

The editor enforces these on input.

There's no separate "group" concept. A group in the sidebar is just a parent page with children:

Text
Editor                       ← parent page, slug: editor/overview
  ├ Writing                  ← child, slug: editor/writing
  ├ Slash menu               ← child, slug: editor/slash-menu
  └ AI actions               ← child, slug: editor/ai-actions

The parent is the section's "overview" page. Clicking the parent in the sidebar opens its content; clicking the children opens theirs.

Collapsible groups#

Each parent page in the sidebar has a collapse/expand chevron. The expanded/collapsed state is per-reader (stored in localStorage), so each reader picks their preferred view.

You can set the default collapsed state per page in Page Settings → Display → "Collapsed by default in sidebar". Useful for keeping less-used sections out of the way.

Reordering#

Drag a page up or down. The order is saved automatically. The sidebar order on the live site updates within ~10 seconds.

If you need to reorder a lot of pages at once (e.g., after a large reorganization), you can also edit the order_index of each page in Page Settings — but the drag UI is faster for most cases.

Drafts vs published#

Each page has a published toggle in Page Settings.

  • Draft — only visible in the dashboard. Doesn't appear on the live site or in the sidebar.
  • Published — live on the site, indexed by search engines, shown in the sidebar.

New pages default to draft. Toggle to published when you're ready to ship.

Bulk operations#

Right-click any page (or select multiple with -click) to:

  • Publish / unpublish
  • Move to another section
  • Duplicate
  • Delete

Delete is soft for 30 days — you can restore from Settings → Trash.

Where next#