# Collections (Services, Blog, People & More)

## Collections

**Skill level:** Beginner · **Files:** `src/content/<collection>/<language>/`

A **collection** is a folder of similar entries: solutions, blog posts, people, projects. Each entry is one file and one page. The list page of the collection gets its title, header image, and options from the `-index.md` file in the same folder.

### Add An Entry
<Steps>

1. Copy an existing entry in the folder, for example `src/content/solutions/english/cost-optimization.md`.
2. Rename the copy with lowercase words joined by hyphens, such as `tax-advisory.md`. The file name becomes the URL (`/solutions/tax-advisory/`), unless you set `customSlug`.
3. Change the frontmatter values and the Markdown body. Keep the keys.
4. Add the same file name in `french/` with the translated text. The language switch links the two by file name.

</Steps>

Set `draft: true` while you write: the entry shows in `npm run dev` but is left out of the built site, the lists, and the sitemap. Lists are ordered by `weight` (lower numbers first), except careers, which use `order`.

### Collection Reference
The fields every page accepts (`title`, `description`, `image`, `draft`, `customSlug`, the SEO fields, and `weight`) work on every entry. The table lists the extra fields of each collection. Copy an existing entry to see them in use.

| Collection     | Folder               | URL                       | Extra fields                                                                                  |
| -------------- | -------------------- | ------------------------- | --------------------------------------------------------------------------------------------- |
| Solutions      | `solutions/`         | `/solutions/<file>/`      | `icon`, `breadcrumbLabel`, and any detail block (`overviewSection`, `valuesSection`, `audienceSection`, `approachSection`, `benefitsSection`, `caseStudiesSection`) |
| Blog posts     | `blog/`              | `/blog/<file>/`           | `date`, `author`, `categories`, `tags`                                                        |
| Portfolio      | `portfolio/`         | `/portfolio/<file>/`      | `subTitle`, `badge`, `workCategories`, `categories`, `information`, `challenge`, `solution`, `process`, `keyFeatures`, `detailImages`, `results`, `images` |
| Industries     | `industries/`        | `/industries/<file>/`     | `imageAlt`, `breadcrumbLabel`, and any detail block (`overviewSection`, `methodologySection`, `caseStudiesSection`, `trendsSection`, `leaderSection`, and others) |
| Case studies   | `case-study-page/`   | `/case-study/<file>/`     | `imageAlt`, `metric`, `metricLabel`, `metadata`, `noteStats`, `detail`                         |
| People         | `people/`            | `/people/<file>/`         | `role`, `cardImage`, `heroImage`, `introBiography`, `expertise`, `certifications`, `education`, `publications`, `latestResources`, `relatedPeople`, contact fields |
| Careers        | `careers/`           | `/careers/<file>/`        | `order`, `location`, `employmentType`, `experience`, `salary`, `application`                   |

### Solutions
Your services are the solutions collection. `solutions/english/-index.md` is the list page (`/solutions/`), and its `detailDefaults` block holds the detail content every solution page shares: header image, overview, values, audience, approach, benefits, and case studies. A solution file only needs its card data and the blocks it changes:

```yaml
title: "Tax & accounting consulting"
weight: 12
description: "Tax planning, compliance, and accounting support that keeps your filings accurate and your finances ready for growth."
overviewSection:
  title: "We handle tax planning, compliance, and bookkeeping with care..."
```

A block you set in the entry replaces the same block of `detailDefaults`. The services sections (`services-centered.md`, `services-parallax.md`, `services-slider.md`) show cards from this collection. Old `/services/` URLs redirect to `/solutions/`.

### Blog
- **List pages.** `/blog/` and `/blog/standard/` show the standard list, `/blog/style-01/` and `/blog/style-02/` two other designs. All read the title, description, and header image from `blog/english/-index.md`. Keep the designs you like and remove the others from the menu.
- **Author.** `author` is the name shown on the post, with its initials. A post with no `author`, or `author: "admin"`, shows `blog.defaultAuthor` from `src/i18n/en.json` (and `fr.json`) instead. The reading time and "Last Update" labels are `blog.minutesRead` and `blog.lastUpdate` in the same files.
- **Categories and tags** create their own list pages, `/blog/category/<name>/` and `/blog/tag/<name>/`.
- **RSS.** `/blog/rss.xml` (and `/fr/blog/rss.xml`) lists every published post. See [SEO & AI Visibility](/consultiz/customization/seo-ai-visibility/).
- Posts can be `.md` or `.mdx`. Use `.mdx` for [shortcodes](/consultiz/customization/writing-content/) such as `<ArticleFigure>`.

### Portfolio
- `workCategories` fill the filter buttons on `/portfolio/` (in the `horizontal` list layout).
- `categories` create the pages `/portfolio/category/<name>/`.
- `information` is the list of facts on the project page: `label`, `value`, and an optional `appendValue` such as `"%"`.
- `process.list` and `keyFeatures.list` items take an `icon` (a [Lucide](https://lucide.dev/icons/) name) and a `label`.
- `results.list` items accept `<span>` to highlight a number.
- `images` is the slider at the top of the project page.

The list layout and the number of projects per page are `options.layout` and `options.limit` in `portfolio/english/-index.md`.

### Industries
Industries work like solutions: `industries/english/-index.md` is the list page (`/industries/`), and its `detailDefaults` block holds the detail content every industry page shares. An industry file sets its card data and any block it changes, such as `overviewSection`. The list page's layout (`list` or `grid`) is `options.layout` in the same `-index.md`.

The two industry layouts (`/industries/style-01/` and `/industries/style-02/`) are separate pages with their own folders. See [Section Variants](/consultiz/customization/section-variants/#page-layouts).

### Case Studies
The case study collection works a little differently:

- `case-study-page/english/-index.md` holds the list page (title, filter, pagination, download buttons) **and** the shared detail content (`details`) that every case study page shows.
- Each case file holds the card data: `title`, `description`, `image`, `metric`, `metricLabel`, `metadata` (label and value rows, such as category, client, location, date), and `noteStats`.
- To change the detail content for one case only, add a `detail` block to its file. Each top-level key you set there (for example `overview` or `challenges`) replaces the same key of the shared `details`.
- The French `-index.md` only needs what you translate: a top-level field it leaves out (such as `details`) falls back to the English file.

The filter buttons on `/case-study/` come from `filter.categories` in `-index.md`.

### People
- The list page (`/people/`) has search, filters, and "load more". Its labels and counts are in `people/english/-index.md` (`initialVisible`, `loadStep`, `searchPlaceholder`, and others).
- Each profile has a card image (`cardImage`) and a hero image (`heroImage`), a biography, expertise, certifications, education, publications, latest resources, and contact fields (`phone`, `email`, `linkedinUrl`).
- `relatedPeople` lists other profiles by file name: `["jonathan-miller", "emma-davis"]`.

The sample profiles are demo people. Replace them with your team, and remove any you don't need.

### Careers
- The list page content (`careers/english/-index.md`) has the intro, benefits, virtual tour video and gallery, achievements, recruitment steps, and the labels of the openings list.
- Each role sets `order` (its position in the list), `location`, `employmentType`, `experience`, `salary`, and an `application` box with an **Apply** button. Point that button at your application form or `mailto:` address.
- The Markdown body is the job description.

Replace or delete the sample roles before launch: only list positions that are open.

### Testimonials
The quotes shown by the testimonial sliders live in `src/content/testimonial/english/-index.md`, in two lists: `home` and `home2`. Each quote has a `customer` (name, role, company, image), a `description`, and an optional `video`.

### Do It With AI
```text
Add a [solution | blog post | portfolio project | industry | case study | person | role]
to src/content/[folder]/english/ for: [DETAILS]. Copy the frontmatter keys of an existing
entry in that folder and keep them. Use a lowercase file name with hyphens that makes a good
URL. Then create the French version with the same file name in src/content/[folder]/french/.
Run npm run astro-check when you are done.
```