7.0 KiB
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:
- Descargar desde https://windows.php.net/download/ el archivo VS17 x64 Thread Safe (zip)
- Extraer en
C:\laragon\bin\php\php-8.4.xx-Win32-vs17-x64\ - En Laragon: clic derecho > PHP > seleccionar la version 8.4
- Instalar Visual C++ 2022 si no lo tienes: https://aka.ms/vs/17/release/vc_redist.x64.exe
- Agregar al PATH: clic derecho en Laragon > Tools > Path > Add Laragon to Path
Paso 1: Clonar el repositorio
git clone <url-del-repo> direccion_de_admision_2026
cd direccion_de_admision_2026
Paso 2: Levantar MySQL con Docker
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:
docker exec admision_2026_db mysql -uroot -proot -e "SELECT 'MySQL OK'"
Paso 3: Importar la base de datos
docker exec -i admision_2026_db mysql -uroot -proot admision_2026 < admision_2006-vI.sql
Verificar tablas importadas:
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 hagasgit pulldebes correrphp 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)
cd back
4.1 Instalar dependencias
composer install
4.2 Configurar variables de entorno
copy .env.example .env
Editar back/.env y configurar:
DB_PASSWORD=root
4.3 Generar clave de aplicacion
php artisan key:generate
4.4 Crear enlace de storage (para imagenes)
php artisan storage:link
4.5 Correr migraciones nuevas
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:
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';
"
php artisan migrate
4.6 Ejecutar seeders
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:
php artisan tinker
$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)
cd front
5.1 Instalar dependencias
npm install
5.2 Configurar variables de entorno
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
docker compose up -d
2. Backend (Terminal 1)
cd back
php artisan serve
Estara disponible en: http://localhost:8000
3. Frontend (Terminal 2)
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.locka 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 desdephp artisan migrate:fresho similar. - Cada vez que se agrega una feature con nueva migración: el desarrollador corre
php artisan migrateen 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
.envno 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
php artisan migrate:status
Caso A: solo aparece 1 migración como Pending
Eso es lo normal. Solo corre:
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.
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';
"
php artisan migrate
Ahora sí solo correrá la migración nueva que falta.