# Split de repos + PR al monorepo

Este flujo separa trabajo de frontend/backend-modules en repos independientes, pero mantiene control final en `cd-system` mediante PR automáticos.

## 1) Crear repos split en local

Desde la raiz del monorepo:

```powershell
pwsh ./scripts/bootstrap-split-repos.ps1
```

Se crearán:

- `../split-repos/cd-frontend`
- `../split-repos/cd-backend-modules`

Cada uno conserva historial del subarbol correspondiente.

## 2) Publicar cada split en GitHub

En cada repo split:

```powershell
git remote add origin <url-del-repo-split>
git push -u origin main
```

## 3) Habilitar PR automático hacia `cd-system`

En cada repo split:

1. Copiar `.github/workflows/sync-from-split-template.yml.example` como `.github/workflows/sync-to-monorepo.yml`.
2. Ajustar:
   - `repository: YOUR_ORG/cd-system`
   - `MONOREPO_TARGET_PATH`:
     - frontend: `resources/views/modules/cd-base/frontend`
     - backend modules: `app/Modules`
   - `commit-message`, `branch`, `title` para distinguir frontend/backend.
3. Crear secret `MONOREPO_SYNC_TOKEN` en el repo split con un token que tenga permisos de escritura en `cd-system`.

Con eso, cada push a `main` en el split repo abrirá un PR al monorepo.

## 4) Probar cambios de split repo en local

Si un dev está trabajando en `cd-frontend` o `cd-backend-modules`, puede reflejar cambios localmente en el monorepo para levantar Laravel:

```powershell
pwsh ./scripts/sync-split-local.ps1 -Target frontend -SourceRepoPath "C:\dev\cd-frontend" -MainRepoPath "C:\Users\Compania Digital\Desktop\cd-system"
```

o para backend modules:

```powershell
pwsh ./scripts/sync-split-local.ps1 -Target backend-modules -SourceRepoPath "C:\dev\cd-backend-modules" -MainRepoPath "C:\Users\Compania Digital\Desktop\cd-system"
```

Luego en `cd-system`:

```powershell
php artisan serve
```

## 5) Probar sin clonar `cd-system` (recomendado para equipos separados)

Usar runtime Docker compartido. Ver guia:

- `docs/split-repo-local-dev.md`

Y las plantillas:

- `docs/split-repo-templates/frontend/docker-compose.yml`
- `docs/split-repo-templates/backend-modules/docker-compose.yml`

## Notas operativas

- El equipo nuevo no necesita acceso write al repo principal.
- El merge final siempre ocurre en `cd-system`.
- Si quieren endurecerlo más, agregar `CODEOWNERS` + reglas de branch protection en `cd-system`.
