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
- Copy an existing entry in the folder, for example
src/content/solutions/english/cost-optimization.md. - 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 setcustomSlug. - Change the frontmatter values and the Markdown body. Keep the keys.
- Add the same file name in
french/with the translated text. The language switch links the two by file name.
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:
title: "Tax & accounting consulting"weight: 12description: "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 fromblog/english/-index.md. Keep the designs you like and remove the others from the menu. - Author.
authoris the name shown on the post, with its initials. A post with noauthor, orauthor: "admin", showsblog.defaultAuthorfromsrc/i18n/en.json(andfr.json) instead. The reading time and “Last Update” labels areblog.minutesReadandblog.lastUpdatein 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. - Posts can be
.mdor.mdx. Use.mdxfor shortcodes such as<ArticleFigure>.
Portfolio
workCategoriesfill the filter buttons on/portfolio/(in thehorizontallist layout).categoriescreate the pages/portfolio/category/<name>/.informationis the list of facts on the project page:label,value, and an optionalappendValuesuch as"%".process.listandkeyFeatures.listitems take anicon(a Lucide name) and alabel.results.listitems accept<span>to highlight a number.imagesis 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.
Case Studies
The case study collection works a little differently:
case-study-page/english/-index.mdholds 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), andnoteStats. - To change the detail content for one case only, add a
detailblock to its file. Each top-level key you set there (for exampleovervieworchallenges) replaces the same key of the shareddetails. - The French
-index.mdonly needs what you translate: a top-level field it leaves out (such asdetails) 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 inpeople/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). relatedPeoplelists 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 anapplicationbox with an Apply button. Point that button at your application form ormailto: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
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 existingentry in that folder and keep them. Use a lowercase file name with hyphens that makes a goodURL. Then create the French version with the same file name in src/content/[folder]/french/.Run npm run astro-check when you are done.