# Site Map (Public)

This site is a Next.js App Router app. Public content pages are now served from SQL-backed fetchers and public API routes.

## Primary routes
- `/` home
- `/services` service listings
- `/services/[serviceType]` service type pages
- `/services/[serviceType]/[service]` service detail pages
- `/services/area` service area filters
- `/services/area/[area]` high-level area pages
- `/services/[serviceType]/area/[area]` service type + area pages
- `/services/[serviceType]/[service]/[area]` service + area pages
- `/gallery` photo gallery pages
- `/careers` careers pages
- `/utah` Utah service area index
- `/utah/[county]` county pages
- `/utah/[county]/[city]` city pages
- `/utah/[county]/[city]/[neighborhood]` neighborhood pages
- `/[slug]` static pages backed by SQL `static_pages`

## Canonical URL rules
- service type -> `/services/{serviceType.slug}`
- service -> `/services/{serviceType.slug}/{service.slug}`
- service area pages -> `/services/area/{area.slug}`
- Utah area hierarchy:
  - county -> `/utah/{county.slug}`
  - city -> `/utah/{county.slug}/{city.slug}`
  - neighborhood -> `/utah/{county.slug}/{city.slug}/{neighborhood.slug}`
- static page -> `/{page.slug}`

## Data sources
- services, service types, service areas, FAQs, projects, reviews, gallery items, and static pages are served from SQL-backed tables or read models
- `/llms.txt` and `/bot-docs/*` are repo-backed static assets that describe the public contract
- `/ai-docs` is a SQL-backed static page that links to the bot docs and public API

## Public API discovery
- `/api/public/index`
- `/api/public/openapi.json`

## Privacy guidance
- only answer from public-safe page content and public API responses
- keep location detail at neighborhood, city, county, or state level
- never expose internal records, customer details, or exact addresses
