# What Is Editable In Sanity

## What Is Editable In Sanity

**Files:** `sanity.config.ts`, `sanity/`, `src/config/config.toml` · **Skill level:** Beginner

Run `npm run dev:all`, open the Studio at `http://localhost:3333`, and log in with your Sanity account. **Content** has one entry per language, then **Site settings**. [Sanity](../sanity/) has the full guide, including `npm run setup` for your first project. Everything below exists in English, French, and Arabic, and each language has its own documents.

### Where Each Page Is Edited
All locations are under Content, then your language. Each section is one document per language, under **Sections**, and every page that shows it uses the same content. A few pages also have **Sections on this page** rows, which change one section on that page only. A field you leave empty keeps the section's own content.

| Address | Studio location | **Sections on this page** |
| ------- | --------------- | ------------------------- |
| `/` | **Homepages > Home 1** (its title and meta description) | None |
| `/home-two/` | **Homepages > Home 2** (its title and meta description) | None |
| `/about/` | **Main pages > About page** | None |
| `/contact/` | **Main pages > Contact page** | None |
| `/faq/` | **Main pages > FAQ page** | **FAQ Section**, the search header |
| `/pricing/` | **Main pages > Pricing page** | None |
| `/team/` | **Main pages > Team page**, including the team members | **Team Section** |
| `/services/` | **Main pages > Services page** | **Services Section**, but this page's list doesn't read it, so leave it empty |
| `/services/{slug}/` | **Services**, one document per entry | None |
| `/case-studies/` | **Main pages > Case studies page** | None |
| `/case-studies/{slug}/` | **Case studies**, one document per entry | None |
| `/blog/` | **Main pages > Blog page** | **Search Section** |
| `/blog/{slug}/` | **Blog posts**, one document per post | None |
| `/blog/category/...`, `/blog/tag/...`, `/blog/page/...` | Built from **Blog posts** | None |
| `/privacy-policy/`, `/terms-conditions/`, `/components/` | **Other pages** | None |
| 404 | **Interface labels**, under **Not Found** | None |

**Main pages > Testimonials** holds the reviews. **Authors** holds the people named on blog posts.

Taxo's Studio has no **Page options** group. Options the sample content doesn't use have no field: see What Stays In Code below.

### New Entries
Use the **+** button to add a service, a case study, a post, an author, or another page. Give it a **File name**, which the Studio requires.

A new entry with only a title won't break the site, and it builds. Its card or page shows what you filled in, and images and other fields stay empty until you add them, so fill them in before you publish. We tested this in the bundled demo content, not on a real project.

### Sections
Each section is under **Sections**, in each language. The pricing plans and the FAQ questions are here too. A change here shows on every page in its row.

| Section | Where it appears | Can you hide it? |
| ------- | ---------------- | ---------------- |
| **Hero section** | `/` | Yes |
| **Hero section two** | `/home-two/` | Yes |
| **About hero section** | `/about/` | Yes |
| **About section** | `/` | Yes |
| **About section two** | `/about/`, `/home-two/`, `/team/` | Yes |
| **About metrics section** | `/about/`, `/home-two/`, `/team/` | Yes |
| **Features grid** | `/`, `/about/` | No. Remove it from the page file |
| **Features grid two** | `/home-two/` | No. Remove it from the page file |
| **Features grid three** | `/services/`, `/services/{slug}/` | No. Remove it from the page file |
| **Services section** | `/` | Yes |
| **Services section two** | `/home-two/` | Yes |
| **Stats section** | `/`, `/about/` | Yes |
| **Stats marquee section** | `/case-studies/`, `/faq/`, `/home-two/`, `/pricing/`, `/services/`, `/services/{slug}/`, `/team/` | Yes |
| **Process section** | `/home-two/` | Yes |
| **Process section two** | `/pricing/`, `/services/` | Yes |
| **Pricing section** | `/pricing/`, `/services/` | Yes |
| **Testimonial section** | `/` | Yes |
| **Testimonial section two** | `/about/`, `/home-two/` | Yes |
| **Case studies section** | `/`, `/home-two/` | Yes |
| **FAQ section** | `/`, `/faq/` | Yes |
| **FAQ section 2** | `/faq/`, `/services/{slug}/` | Yes |
| **Team section** | `/`, `/about/`, `/team/` | Yes |
| **Blog section** | `/` | Yes |
| **Blog section two** | `/home-two/` | Yes |
| **Brand logos** | `/about/`, `/home-two/`, `/services/` | Yes |
| **Contact section** | `/home-two/` | Yes |
| **Contact section two** | `/contact/` | Yes |
| **CTA section** | Most pages, above the footer. Not `/home-two/` | Yes |
| **CTA gallery section** | `/home-two/`, and most inner pages | Yes |
| **CTA bar section** | `/home-two/` | Yes |
| **CTA video section** | `/`, `/about/` | Yes |
| **CTA video section 2** | `/home-two/`, `/services/` | Yes |
| **Social bar section** | `/home-two/` | Yes |

To hide a section on every page that uses it, turn off **Enable** in its document. **Comment section** is also listed. No page shows it, so it has no effect.

Some sections have more than one layout. Set **Options > Layout** on **Blog section**, **Blog section two**, or **Blog page**, and **Card Layout** on the services, features grid, and testimonial sections.

The contact form fields are in **Contact section** and **Contact section two**, under **Form > Inputs**.

### Site-Wide Content
| Location | What's in it |
| -------- | ------------ |
| **Menus** | **Header menu**, with **Has a dropdown**, **Dropdown items**, **Is a mega menu**, **Mega menu columns**, **Mega menu card**, and **Mega menu bottom bar**, and **Footer 1 links** and **Footer 2 links**. Each language has its own. See [Menus](../../customization/menus/) |
| **Interface labels** | Buttons, labels, form messages, and footer copy. **Common** holds the tagline, the site description, and the keywords. Each language has its own |
| **Site settings** | One for the whole site, below the languages: site title, Base URL, logo, SEO, AI files, forms, header options, newsletter, contact details, social links, smooth scroll, the theme credit, and analytics tags |

Taxo shows menu items in the order of their rows, and **Order** doesn't move them. In **Menus**, **Show** hides a header item. The footer shows every link in its list, so delete a footer link to remove it.

**Footer Description**, and **Title** and **Note** under **Subscription**, in **Site settings** don't change what the footers show. Use **Footer** and **Subscription** in **Interface labels**. **Copyright** in **Site settings** applies to Footer 2 only.

**Site settings** apply when the site builds. While `npm run dev:all` runs, they apply when you publish them. They don't change as you type, and click-to-edit doesn't reach them, so change them in their form.

### Plans And Attributes
At the time of writing, Sanity's free plan allows 2,000 attributes, one for each distinct field path in your content. A test project holding all of Taxo's sample content and images measured 939, by Sanity's own count, so it fits. Your own fields and content add to that. [Sanity's pricing page](https://www.sanity.io/pricing) has the current limits.

### Online Preview
Click-to-edit and draft preview are set up for your own computer, with `npm run dev:all`. To use them online, your editors need a second copy of the site running as a small **Node.js server**, because drafts can't be shown from static files. A static host can't do this. See [Sanity](../sanity/) for the steps. Without a preview server, editors online can still edit in the Studio's forms and publish.

### What We Tested
**With no Sanity project, in Chromium:** building and serving the static site from the bundled sample content, in all three languages.

**With a real Sanity project, in Chromium, on `localhost`:**

- `npm run setup` on a project that already existed, and `npm run import-seed` with all the sample content and images.
- The Studio and Live preview, with `npm run dev:all`. Clicking a text or an image on the page opens its field. A text was changed in English and in Arabic, showed as a draft in the preview only, and went live on Publish. A visitor on `npm run dev:all` saw it about 2 minutes after Publish, and a build right after Publish had it.
- A Site setting changed through Sanity's API, not typed in the Studio form, reaching the page while `npm run dev:all` runs.
- A static build from the project, with its images served by Sanity's CDN.
- The preview server on `localhost`: Live preview loads, and the text of all 141 pages matches the published site in draft mode.

**Not tested on this theme:** `npm run setup` creating a brand-new project, a deployed Studio, any online host, an online preview server, and webhooks. An edit was saved and published on `npm run dev:all`, not on the preview server.

### What Stays In Code
These change how the site is built, not what it says:

- The page routes, the order of sections on a page, and which header and footer a page uses: `src/pages/[...lang]/`.
- Section and component design, colors, type scale, and fonts.
- Scroll animations, which are set inside each section component.
- The list of languages: `src/config/language.json`.
- Favicons, and the language settings and collection folder names in `config.toml`.
- Page options the sample content doesn't use, so the Studio has no field for them: custom meta title, robots, canonical link, keywords, and leaving a page out of the sitemap or the AI files. `SKILLS.md` shows how to add a field.
- The notice on the preview server, which is in English and only editors see.
- Which sections and fields exist. To add one, see `SKILLS.md`.

### Do It With AI
```text
I use the Sanity edition. Tell me where to edit [TEXT OR SETTING] in the Studio: the language entry,
the document, and the field. If it comes from a section document, say which pages will change.
Don't change any files, and don't print anything from .env.
```