# Content Collections & Routes

## 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:

- `pages`
- `blog`
- `services`
- `projects`
- `team`
- `testimonials`
- `sections`
- `homepage`, `about-us`, `contact`, `faq`, `pricing`, and `author`

Several collections are configurable through `config.toml`. For example:

```toml
[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:

1. loads all entries from the `pages` collection
2. creates static paths for each supported language
3. uses `SinglePageLayout.astro` to render the body

So files like these:

- `src/content/pages/english/privacy-policy.md`
- `src/content/pages/english/terms-conditions.md`
- `src/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.astro`
- `src/layouts/components/sections/ServicesSection.astro`
- `src/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 route
- `src/content/...` usually provides the data
- `src/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.