Skip to content
New: Customize your theme with an AI assistant. Read the guide

Pages

Skill level: Beginner to edit, light code to add a page made of sections

Every page has two parts: a route file in src/pages/[...lang]/, which decides which sections the page shows and in what order, and a content file in src/content/, which holds its title, SEO fields, page header, and named blocks. You edit the content file; you only touch the route to add, remove, or reorder sections.

Every Page And Its File

Paths are for English. French uses the same files in french/, served under /fr/ (for example /fr/pricing/).

Homepages

PageURLRoute (src/pages/[...lang]/)Content (src/content/)
Main homepage/index.astrohomepage/english/-index.md
Cleaning company/home-cleaning/home-cleaning.astrohomepage/english/home-cleaning.md
Commercial cleaning/home-commercial/home-commercial.astrohomepage/english/home-commercial.md
Handyman/home-handyman/home-handyman.astrohomepage/english/home-handyman.md

The three extra homepages are demos: they ship with robots: "noindex, follow" and excludeFromSitemap: true. See Homepages to pick one as your home.

Services, Prices, And Booking

PageURLRouteContent
Services/services/services/index.astroservices/english/-index.md
Service page/services/<file>/services/[single].astroservices/english/<file>.md
Industries/industries/industries/index.astroindustries/english/-index.md
Industry page/industries/<file>/industries/[single].astroindustries/english/<file>.md
Pricing/pricing/pricing.astropricing/english/-index.md
How it works/how-it-works/how-it-works.astropages/english/how-it-works.md
Book/book/book.astropages/english/book.md and sections/english/booking-section.md
Booking sent/book/thanks/book/thanks.astropages/english/book-thanks.md
Service areas/areas/areas/index.astroareas/english/-index.md
Area page/areas/<file>/areas/[single].astroareas/english/<file>.md

Company And Trust

PageURLRouteContent
About/about/about.astroabout-us/english/-index.md
Team/team/team/index.astroteam/english/-index.md and one file per member
Reviews/reviews/reviews.astropages/english/reviews.md, reviews from reviews/english/
Projects/projects/projects/index.astroprojects/english/-index.md
Project page/projects/<file>/projects/[single].astroprojects/english/<file>.md
Our guarantee/guarantee/guarantee.astroguarantee/english/-index.md
Careers/careers/careers/index.astrocareers/english/-index.md
Job page/careers/<file>/careers/[single].astrocareers/english/<file>.md

Help, Offers, And Blog

PageURLRouteContent
FAQ/faq/faq.astrofaq/english/-index.md
Contact/contact/contact.astrocontact/english/-index.md and sections/english/contact-section.md
Gift cards/gift-cards/gift-cards.astropages/english/gift-cards.md
Referral/referral/referral.astropages/english/referral.md
Blog/blog/, /blog/page/<n>/blog/index.astro, blog/page/[slug].astroblog/english/-index.md
Blog post/blog/<file>/blog/[single].astroblog/english/<file>.mdx
Category and tag lists/blog/category/<name>/, /blog/tag/<name>/blog/category/, blog/tag/built from the posts’ categories and tags
RSS feed/blog/rss.xmlblog/rss.xml.tsbuilt from the posts

Text Pages, Tools, And Files

PageURLRouteContent
Privacy policy, terms, cookie policy, cancellation policy/privacy-policy/, /terms-conditions/, /cookie-policy/, /cancellation-policy/[page].astropages/english/<file>.md
Shortcode demo/components/[page].astropages/english/components.mdx
Layout gallery/elements/elements.astropages/english/elements.md
404any missing URL404.astro (and src/pages/404.astro)sections/english/not-found-section.md
AI and search files/llms.txt, /llms-full.txt, /robots.txt, <page>.mdllms.txt.ts, llms-full.txt.ts, src/pages/robots.txt.ts, src/pages/[...path].md.tsbuilt from your content and config.toml. See SEO & AI Visibility

Every file in src/content/pages/ becomes a page at /<file name>/ through [page].astro, except elements, book, book-thanks, how-it-works, reviews, gift-cards, and referral, which have their own routes.

Four older addresses are kept as redirects in astro.config.mjs: /testimonials/ goes to /reviews/, /customers/ to /projects/, /security/ to /guarantee/, and /solutions/ to /industries/. You can delete those lines on a new site.

Each collection (services, areas, industries, projects, reviews, careers, team, blog) is explained in Collections.

Sample Pages To Replace Or Remove

Homio ships with a full demo business. Before launch:

Replace with your ownWhere
The 10 sample services, their prices, and add-onssrc/content/services/, src/content/pricing/
The 4 sample service areas (fictional places and ZIP codes)src/content/areas/ and the areas menus
The 19 sample reviews and the rating figuressrc/content/reviews/, src/content/sections/*/trust-strip.md
The 6 sample projects and their photossrc/content/projects/
The 8 team members, 6 job openings, 6 posts, and 2 authorsteam/, careers/, blog/, author/
The 6 industriessrc/content/industries/ (or remove the pages)
The placeholder legal textsprivacy-policy.md, terms-conditions.md, cookie-policy.md, cancellation-policy.md in src/content/pages/
Remove if you don’t need itFiles
The three demo homepageshome-cleaning.astro, home-commercial.astro, home-handyman.astro and their files in src/content/homepage/
The shortcode demo /components/src/content/pages/english/components.mdx (and french/)
The layout gallery /elements/src/pages/[...lang]/elements.astro and pages/english/elements.md (and french/)
Gift cards, referral, industriesTheir route files and content files

Sample facts are marked # sample in the content files: search the project for # sample to find them all. The job openings in particular feed JobPosting data for search engines: keep only real, open roles.

The Pages menu in the header (in src/config/menu.en.json and menu.fr.json) lists every page of the theme for the demo. Remove it, or set its "enable" to false in both files, before launch. See Menus.

Most inner pages open with a page header. Its title is the page’s title; everything else is in a pageHeader block of the page file:

src/content/faq/english/-index.md
title: "Questions before you book"
pageHeader:
breadcrumb: true
eyebrow: ""
description: "Short answers about prices, the visit, your crew, and changes. Each one links to the detail."
image: "/images/steps/book-on-phone-hands.jpg"
options:
layout: "split" # default | intro | centered | split

The four layouts and all fields are in Section Layouts. The about page and the homepages open with their own hero section instead. Service pages use the service hero, whose look follows the service’s template.

Fields Every Page Accepts

These frontmatter fields work on page and entry files. src/content/_file_format.md explains most of them; the full list is the page schema in src/content.config.ts.

FieldWhat it does
title, descriptionThe page title and summary
metaTitle, metaDescriptionReplace the title and description in search results only
image, imageDarkSocial preview image for this page (and the photo on cards, for entries); imageDark is an optional dark mode version
drafttrue leaves the page out of the built site (it still shows in npm run dev)
customSlugA different URL segment than the file name. Use the same value in every language
canonical, robots, keywordsSEO overrides
excludeFromSitemap, excludeFromAiLeave the page out of the sitemap, or out of llms.txt and the Markdown copies
excludeFromCollectionKeep an entry’s page but leave it out of lists (services, industries, projects)
disableTaglineDon’t add the site tagline to this page’s title
date, updatedPublish date and last meaningful edit, used in structured data and the sitemap
headerLayoutdefault, simple, centered, or utility: another header on this page. See Header & Mobile Bar
footerLayoutdefault, minimal, large, or columns: another footer on this page. See Footer & CTA Band
primaryCtaThe main button on this page only (label, url, announcement)
Named blockspageHeader, ctaSection, questionsSection, … See Sections

Add A Page

For policies, guides, or any page of text. Homio renders every file in src/content/pages/ as a page.

  1. Copy src/content/pages/english/cancellation-policy.md to a new file, for example src/content/pages/english/pet-policy.md. The file name becomes the URL: /pet-policy/.

  2. Change title, description, date, and the Markdown body. The contentPage block adds an optional notice above the text and a summary ticket of key facts beside it; delete it if you don’t need them.

  3. Create the French version in src/content/pages/french/ with the same file name.

  4. Add a link to it in src/config/menu.en.json and menu.fr.json, for example in the footer’s Legal column.

Remove A Page

  1. Delete its route file in src/pages/[...lang]/ and its content (file or folder) in src/content/, in every language.
  2. Remove its links from src/config/menu.en.json, menu.fr.json, and any content file or button that links to it (search the project for the URL, for example /gift-cards/).
  3. Run npm run astro-check, then npm run build, to make sure nothing still points to it.

To hide a page without deleting it, set draft: true in its content file.

Do It With AI

Remove the pages I don't need from my Homio site: [LIST, e.g. /gift-cards/, /referral/,
/home-commercial/]. For each one, delete its route in src/pages/[...lang]/ and its content in
src/content/ (english and french), remove every link to it from src/config/menu.en.json,
menu.fr.json, and content files, then run npm run astro-check and npm run build and fix anything
that still points to it.
Type something to search...