# 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. Finzo has no **Sections on this page** rows: each section is one document per language, under **Sections**, and every page that shows it uses the same content.

| Address | Studio location | Sections it shows |
| ------- | --------------- | ----------------- |
| `/` | **Homepages > Home page** | Home banner, Fun fact, Features grid, Insight section, Features section two, Features ring layout, Integration section, Pricing section, Testimonial section, Blog section, Call to action |
| `/about/` | **Main pages > About page** | About us, Fun fact two, Features section two, Customers, Team, Testimonial section, Call to action |
| `/features/` | **Main pages > Features page** | Features grid, Features section two, Features ring layout, Features section four, Testimonial section, Call to action |
| `/pricing/` | **Main pages > Pricing page** | Pricing section, Customers, Testimonial section, Call to action |
| `/contact/` | **Main pages > Contact page** | Contact section, Testimonial section, Fun fact two, Call to action |
| `/testimonial/` | **Main pages > Testimonials page** | Testimonial section, Call to action |
| `/changelog/` | **Main pages > Changelog page** | Call to action. The changelog entries are the **List** on this page |
| `/integration/` | **Main pages > Integrations page** | Call to action. The cards come from **Integrations** |
| `/integration/{slug}/` | **Integrations**, one document per entry | Call to action |
| `/blog/` | **Main pages > Blog page** | Blog section, Call to action |
| `/blog/{slug}/` | **Blog posts**, one document per post | Call to action |
| `/blog/page/...` | **Main pages > Blog page**, and **Blog posts** | Blog section, Call to action |
| `/privacy-policy/`, `/terms-conditions/`, `/components/` | **Other pages** | Call to action |
| 404 | **Interface labels**, under **Common** | Call to action |

There are two exceptions to one section, one content. A title or description on **Blog page** replaces the Blog section's on the blog pages, and one on **Testimonials page** replaces the Testimonial section's there.

Pages also have **SEO and page options**, folded under their other fields: a meta title and description, a preview image (a post or integration uses its main image), keywords, robots, whether the page goes in the sitemap and the AI files, draft (except the home and about pages), and on posts, integrations, and other pages a custom address.

Use the **+** button to add a post, an integration, an author, or another page. A post's **Author** is the author's name.

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.

| Section | Where it appears | Can you hide it? |
| ------- | ---------------- | ---------------- |
| **Home banner** | `/` | No. Remove it from the page file |
| **Fun fact** | `/` | Yes |
| **Fun fact two** | `/about/`, `/contact/` | Yes |
| **Features grid** | `/`, `/features/` | Yes |
| **Features section two** | `/`, `/about/`, `/features/` | Yes |
| **Features ring layout** | `/`, `/features/` | Yes |
| **Features section four** | `/features/` | Yes |
| **Insight section** | `/` | Yes |
| **Integration section** | `/` | No. Remove it from the page file |
| **Pricing section** | `/`, `/pricing/` | Yes |
| **Testimonial section** | `/`, `/about/`, `/contact/`, `/features/`, `/pricing/`, `/testimonial/` | Yes |
| **Blog section** | `/`, `/blog/` | Yes |
| **Customers** | `/about/`, `/pricing/` | Yes |
| **About us** | `/about/` | Yes |
| **Team** | `/about/` | Yes |
| **Contact section** | `/contact/` | Yes |
| **Call to action** | Most pages, above the footer | Yes |

To hide a section on every page that uses it, turn off **Enable** in its document. **Location** and **Our values** are also listed under **Sections**. No page shows them, and their content is only in French.

The pricing plans and the comparison table are in **Pricing section**. The contact form fields are in **Contact section**, under **Form > Inputs**. The logo row is **Marquee** in **Customers**.

### Site-Wide Content
| Location | What's in it |
| -------- | ------------ |
| **Menus** | **Header menu**, with dropdowns and the mega menu fields, and **Footer menu**, with a **Column heading** and **Column links** for each column. Each language has its own. See [Menus](../../customization/menus/) |
| **Interface labels** | Buttons, labels, and form messages, **Contact Info** (your address, phone, and email), and **Footer Block** (the footer description and copyright). 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 button, footer download buttons, newsletter, social links, smooth scroll, the theme credit, and analytics tags |

In **Menus**, **Show** hides an item in the header. The footer shows every link in its list, so delete a footer link to remove it.

**Site settings** apply when the site builds. While `npm run dev:all` runs, they apply when you publish them, and the page reloads. 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. Finzo's demo content, with its images, measured 889 on a real project, so it fits. New fields use more. [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 a real Sanity project, on `localhost`, in Chromium:**

- Importing the demo content: all 183 documents matched the bundled copy.
- A static build from the project: the same pages as a build from the bundled content, once images and random IDs are set aside. Every image address answered from Sanity's CDN.
- The Studio logged in with a test token, Live preview, and click-to-edit on page headings.
- A full edit on the About and Blog pages, in English and in Arabic with a right-to-left field: click the heading, type, see the draft in the preview only, press **Publish**, see it on the page as a visitor, then put the text back.

The preview showed a change in 1 to 8 seconds. Once, on a freshly started `npm run dev:all`, the first edit didn't reach the preview within a minute, although its draft was saved. On a second fresh start this didn't happen, so we have no cause for it.

**Without a project:** a static build from the bundled demo content. We checked the preview server's page addresses on `localhost`, with a temporary test change.

**Not yet tried on this theme:**

- `npm run setup` as a whole, and the preview server with a real project.
- Site settings from a real document, and clicking images, menus, labels, or the footer.
- Any online host, a deployed Studio, or a webhook.

Try these on your own project before you rely on them.

### 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 layout a page uses (the comparison table on pricing, the grid on testimonials).
- Section and component design, colors, type scale, and fonts.
- The list of languages: `src/config/language.json`.
- Favicons, and the language settings and collection folder names in `config.toml`.
- New small icon files on testimonial platforms, pricing plans, and social links. The Studio holds a path to a file in `src/assets/images/icons`, so it can switch between icons in that folder, but can't upload one.
- The 404 image, and the tab title of the default language's 404 page.
- 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.
```