Content Collections & Routes
Techlo’s content system is more advanced than a simple “one Markdown file equals one page” setup.
The project uses Astro content collections defined in:
src/content.config.ts
Main Collections
Techlo defines collections for:
pagesblogservicesprojectsteamtestimonialssectionshomepage,about-us,contact,faq,pricing, andauthor
Several collections are configurable through config.toml. For example:
[settings] blogFolder = "blog" servicesFolder = "services" projectsFolder = "projects"That means route behavior and content lookup depend partly on config, not just file names.
The Catch-All Static Page Route
Generic static pages are rendered by:
src/pages/[...lang]/[page].astro
That file:
- loads all entries from the
pagescollection - creates static paths for each supported language
- uses
SinglePageLayout.astroto render the body
So files like these:
src/content/pages/english/privacy-policy.mdsrc/content/pages/english/terms-conditions.mdsrc/content/pages/english/components.mdx
become localized routes through that catch-all page. In the Tina edition, the privacy policy and terms are .mdx. In the Sanity edition, they are Other pages in the Studio.
Adding An Entry
Add a file to the language folder of a collection, such as src/content/services/english/. In the Tina edition, use Create New. In the Sanity edition, use the + button.
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.
Reusable Sections Are Not Standalone Pages
Files in src/content/sections/<language>/ are usually not routed directly.
They are data sources for section components such as:
src/layouts/components/sections/AboutOne.astrosrc/layouts/components/sections/ServicesSection.astrosrc/layouts/components/sections/ProjectsSection.astro
This is why editing a section file changes multiple pages at once when that section is reused.
Route Generation Mental Model
Use this simple rule:
src/pages/...decides the routesrc/content/...usually provides the datasrc/layouts/components/...controls rendering
That separation is powerful, but it is also the main reason Techlo feels more “app-like” than a basic Markdown theme.