# Q/A Paso 2: Data del sitio (y Analytics)

**Aplica a:** Todos los proyectos.  
**Prerrequisito:** Paso 1 (Brand Assets) completado y validado.

## Objetivo

1. **Site Data:** Alinear el **site-data.json** con la data del **proyecto entrante** (Muma u otro), cargarlo en la DB con `SiteDataSeeder` y verificar nombre, contacto, footer, redes y meta tags en el sitio.
2. **Analytics (GA):** Definir el tracking de Google Analytics del proyecto en **analytics.json**, cargarlo con `AnalyticsSeeder` y verificar que el script se sirva desde la DB. Mismo criterio que site data: configuración por proyecto, fuente en JSON, seeder a DB.

Ambos son **configuración básica del proyecto** (global, no dependen del demo ni de los módulos). El GA no va en el .env para el front: el layout usa `config('site.google_analytics')`, que viene de la DB.

## Idea central

- **Un JSON por proyecto:** `database/seeders/project-data/site-data.json` es la fuente de verdad de la identidad del proyecto (nombre, tagline, contacto, redes, footer, SEO, assets, etc.).
- **Alinear = editar el JSON** con los datos reales del proyecto que estás cargando (Muma, otro cliente, etc.) y luego ejecutar el seeder para que esa data quede en la DB del proyecto.
- El demo que uses (demo-restaurant, demo-law-firm-2, etc.) y los módulos activos no cambian este paso: solo importa que el JSON refleje al **proyecto entrante**.

## Paso a paso para efectuar el Paso 2 (ej. Muma)

1. **Abrir** `database/seeders/project-data/site-data.json`.
2. **Alinear cada bloque** con la data del proyecto entrante:
   - **name, tagline, url, author, description** — Nombre del sitio, eslogan, URL pública, autor, descripción (ej. Muma, "Food that fits anywhere", www.muma.com).
   - **contact** — phone, email, address, hours. Reemplazar `[COMPLETAR]` por datos reales o dejar placeholder hasta tenerlos.
   - **social_media** — Para cada red: `url` y `active: true/false`. Para restaurant típico: Instagram y TripAdvisor `active: true` con sus URLs; el resto según el proyecto.
   - **header.cta_button** — Si lleva botón (ej. "Reservar", "Contacto"): title, url, target, style.
   - **footer** — navegacion_principal (Inicio, Menú, Blog, Contacto, etc.) y links según las páginas del producto.
   - **seo** — keywords, description, schema.name/url/logo (logo = `cd-project/assets/logo.png`; SiteDataSeeder lo resuelve a Cloudinary).
   - **og y twitter** — title, description, image (`cd-project/assets/og-image.png` y `twitter-image.png`; se resuelven a Cloudinary).
   - **assets** — Mantener las rutas que coincidan con `assets.json` (favicon, main_logo, footer_logo, etc.); las imágenes de fondo (hero, section, menu_header) pueden apuntar a rutas del demo que uses (ej. `cd-project/img/demos/restaurant/...`).
   - **auth** — login_title, login_subtitle (ej. "Muma").
   - **blog** — sidebar_title, sidebar_description, default_description.
   - **modules** — page_header por módulo (blog, menu, about, faqs, etc.) si quieres títulos específicos.
3. **Guardar** el JSON.
4. **Ejecutar el seeder:**
   ```bash
   php artisan db:seed --class=SiteDataSeeder
   ```
5. **Refrescar caché:**
   ```bash
   php artisan cache:clear
   php artisan view:clear
   ```
6. **Validar en el sitio:** nombre en header/footer, tagline, contacto, redes, links del footer, título y descripción en la pestaña y al compartir (og/twitter).

---

## Analytics (Google Analytics) — mismo paso, otro JSON

El **tracking code de GA** es configuración del proyecto: cada proyecto tiene su propia propiedad (o ninguna). La app lo lee desde la **DB** (`config('site.google_analytics')`), no del .env. La fuente de verdad es **analytics.json** y el **AnalyticsSeeder**.

### Cómo agregar o actualizar GA para un proyecto (ej. Muma)

1. **Editar** `database/seeders/project-data/analytics.json`:
   - `google_analytics.enabled`: `true` si el proyecto usa GA.
   - `google_analytics.tracking_id`: ID de la propiedad de GA del proyecto (ej. `G-XXXXXXXXXX` o `G-WW38Z1RCSP` para Muma).
   - `google_analytics.tracking_id_dev`: opcional; ID para desarrollo si querés medir en local.
   - `google_analytics.track_in_local`: `false` en producción para no trackear en local; `true` solo si querés pruebas en local.

2. **Ejecutar el seeder:**
   ```bash
   php artisan db:seed --class=AnalyticsSeeder
   ```

3. **Refrescar caché** (si ya lo hiciste para Site Data, con una vez basta):
   ```bash
   php artisan cache:clear
   php artisan view:clear
   ```

4. **Validar:** En el sitio en producción, inspeccionar el HTML o la pestaña Network y comprobar que se inyecte el script de GA con el `tracking_id` correcto.

**Orden recomendado en este paso:** Completar `site-data.json` → SiteDataSeeder → completar `analytics.json` → AnalyticsSeeder → cache una vez. O ejecutar todo el bloque de configuración con `php artisan db:seed --class=Project_Seeder` (incluye SiteDataSeeder y AnalyticsSeeder).

## Fuente de datos

| Archivo | Contenido | Seeder |
|---------|-----------|--------|
| `database/seeders/project-data/site-data.json` | name, tagline, contact, footer, seo, og, twitter, assets, modules, blog, auth, etc. | SiteDataSeeder |
| `database/seeders/project-data/analytics.json` | google_analytics (enabled, tracking_id, track_in_local), google_tag_manager, facebook_pixel | AnalyticsSeeder |

El **SiteDataSeeder** lee site-data.json y guarda en la tabla de configuración (vía `SiteConfigService`). Las rutas de assets se **resuelven** contra la tabla `assets`. El **AnalyticsSeeder** lee analytics.json y guarda `site.google_analytics` en settings; el layout usa esa config para inyectar el script de GA.

## Flujo recomendado

1. **Revisar/editar** `site-data.json` para el proyecto (ej. Muma: name, tagline, contact, social_media, footer, seo, og, twitter, etc.).
2. **Ejecutar** el seeder:
   ```bash
   php artisan db:seed --class=SiteDataSeeder
   ```
3. **Refrescar caché** para que el front use la config nueva:
   ```bash
   php artisan cache:clear
   php artisan view:clear
   ```
4. **Validar** en el sitio: nombre, tagline, contacto, footer, redes, meta tags.

## Checklist — Data del sitio (ej. Muma)

- [ ] **name, tagline, url, author, description** — Coherentes con el proyecto.
- [ ] **contact** — phone, email, address, hours completos y correctos.
- [ ] **social_media** — Redes que use el proyecto (ej. Instagram, TripAdvisor para restaurant) con `url` y `active: true/false`.
- [ ] **header** — CTA si aplica (title, url, target, style).
- [ ] **footer** — navegacion_principal y links según el producto (ej. Inicio, Menú, Blog, Contacto para restaurant).
- [ ] **seo** — keywords, description, schema (name, url, logo ya resuelto si Paso 1 está hecho).
- [ ] **og / twitter** — title, description, image (resueltas a Cloudinary si los assets están cargados).
- [ ] **assets** — Rutas en el JSON coinciden con `assets.json`; tras SiteDataSeeder quedarán como URLs Cloudinary en la DB.
- [ ] **modules** — Config por módulo (blog, menu, etc.); la activación de módulos se controla desde `cd-system.json` (Paso 3).

## Comandos

```bash
# Cargar/actualizar data del sitio desde site-data.json
php artisan db:seed --class=SiteDataSeeder

# Refresco de caché (recomendado después)
php artisan cache:clear
php artisan view:clear
```

## Validación

| Qué revisar | Dónde |
|-------------|--------|
| Nombre y tagline | Header / título del sitio |
| Contacto y horarios | Footer o página de contacto |
| Redes sociales | Iconos y enlaces en header/footer |
| Footer | Navegación y links |
| SEO / meta | Título y descripción en pestaña; og/twitter al compartir enlaces |

## Criterios de cierre del Paso 2

Paso 2 completado cuando:

- [ ] **site-data.json** está completo y alineado al proyecto (Muma o el que corresponda).
- [ ] **analytics.json** tiene el `tracking_id` del proyecto (o `enabled: false` si no usa GA).
- [ ] Se ejecutaron **SiteDataSeeder** y **AnalyticsSeeder** sin errores.
- [ ] Se ejecutó **refresco de caché** (`cache:clear` + `view:clear`).
- [ ] En el **front** se verificó: nombre, contacto, footer, redes, meta tags y, si aplica, script de GA con el ID correcto.

**Secuencia estándar:** Completar site-data.json → SiteDataSeeder → completar analytics.json → AnalyticsSeeder → cache → validar.

**Siguiente:** Paso 3 — Módulos activos (doc pendiente).
