# Instalacion Local (Desarrollo) - Direccion de Admision 2026 ## Requisitos previos | Herramienta | Version minima | Uso | |---|---|---| | Laragon | - | PHP + Composer (servidor local) | | PHP | 8.4+ | Backend Laravel (Thread Safe, VS17 x64) | | Composer | 2.x | Dependencias PHP | | Node.js | 18+ | Frontend Vue | | npm | 9+ | Dependencias JS | | Docker | 20+ | Solo para MySQL | | Docker Compose | 2+ | Solo para MySQL | ### Descargar PHP 8.4 para Laragon Si Laragon no trae PHP 8.4, descargarlo manualmente: 1. Descargar desde https://windows.php.net/download/ el archivo **VS17 x64 Thread Safe** (zip) 2. Extraer en `C:\laragon\bin\php\php-8.4.xx-Win32-vs17-x64\` 3. En Laragon: clic derecho > **PHP** > seleccionar la version 8.4 4. Instalar Visual C++ 2022 si no lo tienes: https://aka.ms/vs/17/release/vc_redist.x64.exe 5. Agregar al PATH: clic derecho en Laragon > **Tools** > **Path** > **Add Laragon to Path** --- ## Paso 1: Clonar el repositorio ```bash git clone direccion_de_admision_2026 cd direccion_de_admision_2026 ``` --- ## Paso 2: Levantar MySQL con Docker ```bash docker compose up -d ``` Esto levanta un contenedor MySQL 8.0 con: - **Host:** 127.0.0.1 - **Puerto:** 3306 - **Usuario:** root - **Password:** root - **Base de datos:** admision_2026 Verificar que funcione: ```bash docker exec admision_2026_db mysql -uroot -proot -e "SELECT 'MySQL OK'" ``` --- ## Paso 3: Importar la base de datos ```bash docker exec -i admision_2026_db mysql -uroot -proot admision_2026 < admision_2006-vI.sql ``` Verificar tablas importadas: ```bash docker exec admision_2026_db mysql -uroot -proot admision_2026 -e "SHOW TABLES;" ``` Debe mostrar 34 tablas base (users, postulantes, areas, cursos, examenes, procesos_admision, etc.). Las tablas `comunicados` y `comunicado_imagenes` se crean en el paso 4.5 via migraciones. > **Nota:** El dump incluye la estructura de todas las tablas **y** los registros en `migrations`. > Aun así, siempre que hagas `git pull` debes correr `php artisan migrate` — el dump cubre las tablas > base, pero las migraciones nuevas que se agreguen al repo después del dump no estarán en él. --- ## Paso 4: Configurar el Backend (Laravel) ```bash cd back ``` ### 4.1 Instalar dependencias ```bash composer install ``` ### 4.2 Configurar variables de entorno ```bash copy .env.example .env ``` Editar `back/.env` y configurar: ``` DB_PASSWORD=root ``` ### 4.3 Generar clave de aplicacion ```bash php artisan key:generate ``` ### 4.4 Crear enlace de storage (para imagenes) ```bash php artisan storage:link ``` ### 4.5 Correr migraciones nuevas ```bash php artisan migrate ``` El dump cubre las tablas base. Este comando aplica cualquier migración nueva que se haya agregado al repo después de que el dump fue generado. Si no hay migraciones pendientes, el comando termina sin hacer nada — es seguro correrlo siempre. **Si el comando falla** con un error tipo `Table 'users' already exists`, significa que el dump no incluye los registros en la tabla `migrations`. Solución — correr esto primero y luego volver a migrar: ```bash php artisan tinker --execute=" DB::table('migrations')->insertOrIgnore([ ['migration' => '0001_01_01_000000_create_users_table', 'batch' => 1], ['migration' => '0001_01_01_000001_create_cache_table', 'batch' => 1], ['migration' => '0001_01_01_000002_create_jobs_table', 'batch' => 1], ['migration' => '2026_01_27_132900_create_personal_access_tokens_table', 'batch' => 1], ['migration' => '2026_01_27_133609_create_permission_tables', 'batch' => 1], ]); echo 'done'; " ``` ```bash php artisan migrate ``` ### 4.6 Ejecutar seeders ```bash php artisan db:seed --class=RoleSeeder ``` Esto crea los roles: `usuario`, `administrador`, `superadmin`. ### 4.7 Asignar rol a tu usuario Si ya tienes un usuario creado (por registro o por el dump SQL), asignarle un rol desde tinker: ```bash php artisan tinker ``` ```php $user = \App\Models\User::where('email', 'tu@email.com')->first(); $user->assignRole('superadmin'); exit ``` > **Importante:** Sin un rol asignado, el login devuelve 200 pero no redirige al dashboard. --- ## Paso 5: Configurar el Frontend (Vue 3) ```bash cd front ``` ### 5.1 Instalar dependencias ```bash npm install ``` ### 5.2 Configurar variables de entorno ```bash copy .env.example .env ``` El archivo debe contener: ``` VITE_API_URL=http://127.0.0.1:8000/api ``` --- ## Levantar el proyecto Necesitas **3 cosas corriendo** al mismo tiempo: ### 1. MySQL (Docker) - si no esta corriendo ```bash docker compose up -d ``` ### 2. Backend (Terminal 1) ```bash cd back php artisan serve ``` Estara disponible en: **http://localhost:8000** ### 3. Frontend (Terminal 2) ```bash cd front npm run dev ``` Estara disponible en: **http://localhost:5173** --- ## Stack tecnologico | Capa | Tecnologia | |---|---| | Backend | Laravel 12 + PHP 8.4 | | Frontend | Vue 3 + Vite 7 + Ant Design Vue + Pinia | | Base de datos | MySQL 8.0 (Docker) | | Autenticacion | Laravel Sanctum (Bearer tokens) | | Permisos | Spatie Laravel Permission | | QR | SimpleSoftwareIO QRCode | --- ## Notas importantes - **No modificar** `composer.lock` a menos que todos los del equipo acuerden (requiere PHP 8.4+) - El dump SQL (`admision_2006-vI.sql`) es la fuente de verdad de la base de datos. Siempre se trabaja a partir de él — nunca desde `php artisan migrate:fresh` o similar. - Cada vez que se agrega una feature con nueva migración: el desarrollador corre `php artisan migrate` en local, luego exporta solo la tabla nueva del dump y la añade al dump maestro para que el equipo pueda importarla. - Si el puerto 3306 esta ocupado (por otro MySQL local), detener ese servicio primero o cambiar el puerto en `docker-compose.yml` - Los archivos `.env` no se suben al repositorio (estan en `.gitignore`) --- ## Workflow cuando hay una migración nueva en el repo Cuando haces `git pull` y hay una migración nueva (alguien agregó una feature con nueva tabla): ### Paso 1: verificar el estado ```bash php artisan migrate:status ``` ### Caso A: solo aparece 1 migración como Pending Eso es lo normal. Solo corre: ```bash php artisan migrate ``` Listo. ### Caso B: aparecen TODAS las migraciones como Pending Esto pasa cuando instalaste desde el dump SQL y **nunca corriste** `php artisan migrate` antes. La tabla `migrations` está incompleta y Laravel cree que todo está pendiente — si corres `migrate` directamente fallará con `Table 'users' already exists`. Solución: registrar las migraciones base manualmente y luego migrar. ```bash php artisan tinker --execute=" DB::table('migrations')->insertOrIgnore([ ['migration' => '0001_01_01_000000_create_users_table', 'batch' => 1], ['migration' => '0001_01_01_000001_create_cache_table', 'batch' => 1], ['migration' => '0001_01_01_000002_create_jobs_table', 'batch' => 1], ['migration' => '2026_01_27_132900_create_personal_access_tokens_table', 'batch' => 1], ['migration' => '2026_01_27_133609_create_permission_tables', 'batch' => 1], ]); echo 'done'; " ``` ```bash php artisan migrate ``` Ahora sí solo correrá la migración nueva que falta.