# ✅ Checklist: Crear un Nuevo Proyecto

## 📋 Pre-requisitos

Antes de crear un nuevo proyecto, verifica que todo esté listo:

### 1. Verificación del Sistema

```bash
# Desde cd-system
cd /Applications/XAMPP/xamppfiles/htdocs/cd-system
./scripts/verify-setup.sh
```

Este script verifica:
- ✅ Scripts necesarios existen y tienen permisos
- ✅ .gitattributes con protecciones configuradas
- ✅ Documentación completa
- ✅ Estructura del proyecto correcta
- ✅ Git configurado correctamente
- ✅ Dependencias del sistema instaladas

### 2. Crear Repositorio en GitHub

- [ ] Ir a GitHub y crear nuevo repositorio
- [ ] Nombre del repositorio: `nombre-del-proyecto`
- [ ] Visibilidad: Privado o Público
- [ ] Puede estar vacío o con README (no importa)

---

## 🚀 Proceso de Creación

### Paso 1: Ejecutar Script Automatizado

```bash
# Desde cd-system
cd /Applications/XAMPP/xamppfiles/htdocs/cd-system
./scripts/create-new-project.sh
```

**El script te pedirá:**
- [x] Nombre del proyecto (ej: `pedroweb`, `terashe`)
- [x] URL del repositorio (opcional, usa default si presionas Enter)
- [x] Ruta de assets (opcional, usa `~/Desktop/assets-nombre-proyecto` por defecto)

**El script automáticamente:**
- [x] Crea el directorio del proyecto
- [x] Inicializa repositorio Git
- [x] Configura remote origin
- [x] Clona la rama cd-system
- [x] Ejecuta setup completo (composer, .env, migraciones, seeders)
- [x] Procesa assets con `php artisan project:update-assets` (si se proporcionaron)
- [x] Verifica estado final

### Paso 2: Verificar que Todo Funciona

El script `create-new-project.sh` ahora ejecuta automáticamente:
- ✅ Setup completo del proyecto (`setup_cd_project.sh`)
- ✅ Procesamiento de assets (si se proporcionaron)

**Verificación rápida:**

```bash
cd /Applications/XAMPP/xamppfiles/htdocs/nombre-del-proyecto

# Verificar rama
git branch
# Debe mostrar: * cd-system

# Verificar .gitattributes
grep -c "merge=ours" .gitattributes
# Debe ser > 0 (típicamente 11)

# Verificar archivos críticos
ls -la config/cd-system.php config/site.php public/cd-project/img/logos/logo.png
# Todos deben existir

# Verificar assets (si se proporcionaron)
ls -la public/cd-project/img/logos/ public/cd-project/img/favicon/
# Deben estar los assets del proyecto
```

**Nota:** Si el script no ejecutó el setup automáticamente, puedes ejecutarlo manualmente:

```bash
cd /Applications/XAMPP/xamppfiles/htdocs/nombre-del-proyecto
chmod +x scripts/setup_cd_project.sh
./scripts/setup_cd_project.sh
```

**Si no proporcionaste assets durante la creación**, puedes agregarlos después:

```bash
cd /Applications/XAMPP/xamppfiles/htdocs/nombre-del-proyecto
php artisan project:update-assets ~/Desktop/assets-nombre-proyecto --backup --project="nombre-proyecto"
```

### Paso 3: Push Inicial (Opcional)

```bash
git push -u origin cd-system
```

### Paso 4: Verificar que Funciona

```bash
# Iniciar servidor de desarrollo
php artisan serve

# Abrir en navegador
# http://127.0.0.1:8000
```

---

## ✅ Checklist Final

Después de ejecutar el script, verifica:

- [ ] Repositorio creado en GitHub (opcional, para push)
- [ ] Rama `cd-system` clonada localmente
- [ ] Remote `origin` configurado correctamente
- [ ] `.gitattributes` con protecciones (`merge=ours`)
- [ ] Archivos críticos presentes
- [ ] Dependencias instaladas (`composer install` completado)
- [ ] `.env` configurado
- [ ] `APP_KEY` generado
- [ ] Base de datos creada y configurada
- [ ] Migraciones ejecutadas
- [ ] Seeders ejecutados
- [ ] Assets actualizados (si se proporcionaron)
- [ ] Servidor puede iniciar (`php artisan serve`)
- [ ] Push realizado a GitHub (opcional)

---

## 🆘 Problemas Comunes

### Error: "permission denied" al ejecutar scripts

```bash
chmod +x scripts/create-new-project.sh
chmod +x scripts/clone-to-new-repo.sh
chmod +x scripts/setup_cd_project.sh
```

### Error: ".gitattributes no tiene protecciones"

```bash
cp ../cd-system/.gitattributes .
git add .gitattributes
git commit -m "chore: Agregar protección de archivos del sistema"
```

### Error: "composer install falla"

Verifica extensiones PHP:
```bash
php -m | grep -E "(fileinfo|pdo|mbstring|xml|curl|zip|gd)"
```

### Error: "migraciones fallan"

Verifica configuración de BD en `.env`:
```bash
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nombre_base_datos
DB_USERNAME=usuario
DB_PASSWORD=password
```

---

## 📚 Referencias

- [Guía Completa: Crear Nuevo Proyecto](./new-project.md)
- [Protección de Archivos del Sistema](../cd-system/proteccion-archivos-sistema.md)
- [Flujo de Cambios Core ↔ Proyectos](../cd-system/flujo-cambios-core-proyectos.md)

---

**Última actualización**: Proceso completo verificado y documentado

