Sistema web para gestionar resultados académicos de profesores en instituciones educativas: publicaciones, eventos, premios y reconocimientos. Desarrollado con Laravel 11 e Inertia.js (Vue 3), con control de acceso basado en roles y permisos.
- Gestión de Resultados Académicos: CRUD completo para publicaciones, eventos, premios y reconocimientos
- Control de Acceso Robusto: Sistema de roles y permisos mediante Spatie Laravel Permission
- Alcance de Datos por Permisos: Los usuarios ven y gestionan datos según su rol (todos, departamento o propios)
- Interfaz Moderna y Responsiva: Construida con Vue 3 y TailwindCSS
- Administración del Sistema: Gestión de usuarios, roles, permisos y departamentos
- Búsqueda y Filtros: Por usuario y departamento cuando aplique
- Paginación en Español: Componente reutilizable para todos los listados
- SPA Ligera: Navegación fluida sin recargas completas gracias a Inertia.js
- Backend: Laravel 11 (PHP 8.2+)
- Frontend: Vue 3 + Inertia.js
- Estilos: TailwindCSS
- Autenticación y Permisos: Spatie Laravel Permission
- Base de Datos: MySQL/MariaDB
- PHP >= 8.2
- Composer
- Node.js >= 18
- MySQL/MariaDB (o la base de datos configurada en
.env) - XAMPP, WAMP, Laragon o servidor web similar (para desarrollo local)
git clone https://github.com/Enmanuelpl126/academic-results-system.git
cd academic-results-systemcomposer install
npm installEn Windows (PowerShell o CMD):
copy .env.example .envEn Linux/Mac:
cp .env.example .envGenerar la clave de la aplicación:
php artisan key:generateSi usas XAMPP:
- Inicia Apache y MySQL
- Accede a phpMyAdmin
- Crea una base de datos (ejemplo:
result_academic)
Edita el archivo .env con tus credenciales:
APP_NAME="Resultados Académicos"
APP_URL=http://127.0.0.1:8000
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=result_academic
DB_USERNAME=root
DB_PASSWORD=php artisan storage:linkphp artisan migrate:fresh --seedEste comando creará:
- Roles y permisos del sistema
- Departamentos de ejemplo
- Usuarios de prueba con diferentes roles
- Datos de demostración (publicaciones, eventos, premios, reconocimientos)
php artisan route:clear
php artisan config:clear
php artisan cache:clearPara desarrollo:
npm run devPara producción:
npm run buildphp artisan serveLa aplicación estará disponible en: http://127.0.0.1:8000
Todos los usuarios tienen la contraseña: password
| Rol | Permisos | |
|---|---|---|
| Administrador | admin@example.com | Acceso completo, eliminar resultados |
| Directivo | directivo@example.com | Ver/editar resultados del departamento |
| Jefe Departamento 1 | jefeD1@example.com | Ver/editar resultados del departamento |
| Jefe Departamento 2 | jefeD2@example.com | Ver/editar resultados del departamento |
| Profesor 1 | prof1@example.com | Ver/editar solo resultados propios |
| Profesor 2 | prof2@example.com | Ver/editar solo resultados propios |
- admin: Acceso completo al sistema, puede eliminar cualquier resultado
- directive: Visualiza y edita resultados de su departamento
- head_dp: Jefe de departamento, gestiona resultados departamentales
- profesor: Solo puede ver y editar sus propios resultados
admin_system: Acceso al panel de administracióndelete_any_result: Eliminar cualquier resultado académicoview_department_results: Ver resultados del departamentoedit_department_results: Editar resultados del departamentoedit_own_result: Editar solo resultados propios
Edita el archivo database/seeders/RolesAndPermissionsSeeder.php y ejecuta:
php artisan db:seed --class=RolesAndPermissionsSeeder
php artisan cache:clear && php artisan route:clear && php artisan config:clearacademic-results-system/
├── app/
│ ├── Http/
│ │ ├── Controllers/ # Controladores con lógica de permisos
│ │ └── Middleware/
│ │ └── HandleInertiaRequests.php # Comparte roles/permisos con Vue
├── database/
│ └── seeders/
│ ├── RolesAndPermissionsSeeder.php # Define roles y permisos
│ ├── UserSeeder.php # Usuarios de ejemplo
│ └── DatabaseSeeder.php # Orquesta todos los seeders
├── resources/
│ └── js/
│ └── components/ # Componentes Vue con UI basada en permisos
│ ├── Awards/
│ ├── Events/
│ ├── Publications/
│ ├── Recognitions/
│ └── Pagination.vue # Componente de paginación reutilizable
├── routes/
│ └── web.php # Rutas protegidas por middleware de permisos
└── bootstrap/
└── app.php # Registro de alias de middleware
php artisan migrate:fresh --seedphp artisan cache:clear && php artisan route:clear && php artisan config:clearnpm run devnpm run build- Configura las variables de entorno en
.envpara producción - Ejecuta las migraciones:
php artisan migrate --force
- Cachea configuraciones:
php artisan config:cache php artisan route:cache php artisan view:cache
- Compila assets:
npm run build
- Configura el servidor web (Apache/Nginx) para apuntar a la carpeta
public/
⭐ Si este proyecto te fue útil, considera darle una estrella en GitHub