Skip to content

Editable data files

Not all content is a page. Nav menus, footer links, a small site config — these often live in a JSON or YAML file like src/data/nav.json or src/data/footer.yaml. Orbit can give editors a form for these files, without letting them near the rest of your code.

List each file under data: in orbit.config.yaml:

data:
- path: src/data/nav.json # repo-relative
label: Main navigation # optional; defaults to the filename

They then appear under a Data heading in the app’s nav. Only files you list here are editable — nothing else in the project is exposed — plus any file() collection in your content config (one JSON or YAML file of entries), which Orbit adds automatically under the collection’s name.

There’s no schema to write — Orbit reads the file’s shape:

  • an object becomes a set of fields
  • an array becomes an add / remove / reorder list
  • each value’s type picks the control — text, number, or checkbox

A top-level object or array both work, so a nav.json that’s a bare array of { label, href } items is fine.

YAML files keep their comments, key order and quoting when saved — only the values an editor changed are rewritten.

JSON or YAML, not code — the .ts pattern

Section titled “JSON or YAML, not code — the .ts pattern”

Orbit edits JSON and YAML, not code. If you prefer a .ts/.js data file (for imports or types), have it import the JSON and edit the JSON:

src/data/nav.ts
import nav from "./nav.json";
export default nav;

Saving writes the JSON back with 2-space indentation, keeping your key and array order. It’s the same principle as the rest of Orbit: edit the data, not the design.