Este proyecto es una aplicación web desarrollada con .NET Core 8 como backend y Next.js como frontend, diseñada para gestionar cursos, exámenes y usuarios de manera eficiente y dinámica.
## Funcionalidades principales
### Gestión de Usuarios
- Alumnos y Profesores: CRUD completo (Crear, Leer, Actualizar, Eliminar) con filtros por nombre utilizando Redux.
- El administrador pueden modificar sus propios datos: nombre, contraseña e imagen de perfil.
### Gestión de Cursos
- CRUD completo para cursos con asignación de profesor al momento de la creación.
- Se pueden inscribir alumnos a múltiples cursos.
- Gestión de documentos relacionados a los cursos, almacenados en el backend.
### Gestión de Exámenes
- Creación de exámenes personalizados por curso.
- Permite asignar preguntas y respuestas, y utilizar un simulador de examen para visualizar cómo lo vería el estudiante.
### Funcionalidades avanzadas
- Búsqueda y filtrado: Todos los CRUD permiten filtrar por nombre usando Redux.
- Paginación: Todos los listados están paginados para un mejor manejo de la información.
- Estadísticas: Se incluyen dos gráficos principales: Top 5 Cursos por alumnos inscritos y Top 5 Profesores por cursos impartidos.
## Capturas de pantalla
A continuación, se muestran algunas imágenes del sistema en funcionamiento:
### Backend (.NET Core)
Sigue estos pasos para configurar la API de .NET Core ubicada en la carpeta SistemaAPI.
1 - Configuración inicial
* Copia y configura el archivo de entorno:
* Renombra el archivo appsettings.json.example a appsettings.json y ábrelo para editarlo.
* Ajusta los valores necesarios dentro del archivo. Los campos principales que debes revisar son los siguientes:
"ConnectionStrings": {
"SqlServer": "",
"MySQL": "Server=localhost;Database=db;User Id=root;Password=root;"
},
"Jwt": {
"Key": "",
"Issuer": "",
"Audience": ""
}
Conexiones a base de datos:
* El proyecto permite utilizar SQL Server o MySQL.
* Configura una de las dos cadenas de conexión según la base de datos que vayas a usar.
Por ejemplo:
* Para MySQL:
"MySQL": "Server=localhost;Database=db;User Id=root;Password=root;"
* Para SQL Server:
"SqlServer": "Server=localhost;Database=db;User Id=sa;Password=TuPassword;"
Configuración de JWT:
* Estos valores se utilizan para la autenticación basada en tokens.
* Debes completar los campos Key, Issuer y Audience.
Para generar una clave segura (Key) en .NET, puedes ejecutar el siguiente comando en tu terminal de PowerShell o Bash:
openssl rand -base64 32
Copia el valor generado y pégalo en el campo "Key" dentro del archivo appsettings.json.
2 - Ejecución de comandos
Abre la terminal en la carpeta SistemaAPI y ejecuta los siguientes comandos en orden:
dotnet tool install --global dotnet-ef --version 8.*
dotnet ef migrations add MigracionInicial
dotnet ef database update
Estos comandos instalan la herramienta de Entity Framework, crean la primera migración y actualizan la base de datos con el esquema inicial.
### Frontend (Next.js)
Sigue estos pasos para configurar el frontend de Next.js ubicado en la carpeta SistemaFrontend:
- Renombra el archivo .env.example a .env en el directorio raíz del proyecto frontend.
- Edita el archivo .env y configura las siguientes variables de entorno según tu configuración:
NEXT_PUBLIC_BACKEND_URL=http://localhost:7777 # URL de tu backend de Net Core
NEXTAUTH_SECRET=supersecreto123 # Una cadena secreta larga y aleatoria para NextAuth
NEXT_PUBLIC_TIMEOUT_TOAST=4000
NEXT_PUBLIC_TIMEOUT_REDIRECT=5000
- Cambia NEXTAUTH_SECRET por una cadena de caracteres larga, compleja y aleatoria para la seguridad de la autenticación.
Instalación de dependencias:
- Abre tu terminal en el directorio raíz del proyecto frontend.
- Ejecuta el siguiente comando para instalar todas las dependencias de Node.js:
npm install
---
### Iniciar la aplicación
Para poner en marcha la aplicación completa, asegúrate de que tanto el backend de .NET Core como el frontend de Next.js estén configurados correctamente siguiendo las instrucciones de instalación respectivas.
1. Iniciar el backend (.NET Core):
- Abre una nueva terminal.
- Navega hasta el directorio raíz de tu proyecto .NET Core.
- Ejecuta el siguiente comando para iniciar el servidor de desarrollo de .NET Core:
dotnet run
2. Iniciar el frontend (Next.js):
- Abre otra nueva terminal (manteniendo la del backend abierta).
- Navega hasta el directorio raíz de tu proyecto Next.js.
Ejecuta el siguiente comando para iniciar el servidor de desarrollo de Next.js:
npm run dev
Una vez que ambos servidores estén en funcionamiento, la aplicación completa estará accesible a través de la URL del frontend (http://localhost:3000).