Skip to content

daaniii13/proyectoDAW

Repository files navigation

HTML CSS JavaScript PHP Python Symfony MySQL Vite Bootstrap Vue


Logo TeachingExplorer

TeachingExplorer

Teaching Explorer es una página web creada con el objetivo de facilitar la compra y venta de cursos y contenidos educativos de manera sencilla y segura. Su funcionamiento está inspirado en plataformas de compraventa entre particulares como Wallapop, pero adaptado específicamente al ámbito formativo y ofreciendo un espacio dedicado al intercambio de conocimiento.
Ver demo en producción »

Ver repositorio · Reportar error · Solicitar mejora

Tabla de contenidos
  1. Sobre el proyecto
  2. Primeros pasos
  3. Uso
  4. Estructura del proyecto
  5. Roles de usuario
  6. Capturas de pantalla
  7. Despliegue
  8. Hoja de ruta
  9. Autores

Sobre el proyecto

Vista pública

Teaching Explorer es una aplicación web educativa desarrollada principalmente con Symfony. Su objetivo es facilitar la relación entre estudiantes y profesores mediante una plataforma donde se pueden publicar cursos, gestionar inscripciones, subir recursos, crear tareas, corregir entregas y controlar el progreso del alumnado.

El proyecto incluye autenticación tradicional, inicio de sesión con Google, sistema de roles, panel de administración, panel docente, recuperación de contraseña, traducción dinámica, modo claro/oscuro y un sistema de recomendación de cursos apoyado por Python.

(volver arriba)

Desarrollado con

  • HTML
  • CSS
  • JavaScript
  • PHP
  • Python
  • Symfony
  • Doctrine
  • Twig
  • MySQL
  • Vite
  • Bootstrap
  • Vue

(volver arriba)

Funcionalidades principales

  • Registro e inicio de sesión de los usuarios.
  • Inicio de sesión mediante Google OAuth.
  • Recuperación y restablecimiento de contraseña por correo.
  • Gestión de roles: estudiante, profesor y administrador.
  • Panel de administración para gestionar usuarios y solicitudes de profesor.
  • Solicitud de cuenta de profesor desde ajustes (vista de estudiantes).
  • Gestión de suscripciones docentes con planes y límites de cursos (vista de profesores).
  • Creación, edición y eliminación de cursos por parte del profesor.
  • Inscripción de estudiantes en cursos.
  • Validación manual de pagos e inscripciones.
  • Subida de recursos asociados a cursos.
  • Creación y gestión de tareas con fecha límite.
  • Entrega de tareas por parte del estudiante.
  • Corrección de entregas y asignación de nota por parte del profesor.
  • Comentarios en cursos y entregas.
  • Control de progreso del estudiante dentro de cada curso.
  • Buscador de cursos y opiniones de usuarios con Vue.
  • Recomendador de cursos mediante script Python.
  • Traducción manual y dinámica en español e inglés mediante la API LibreTranslate.
  • Selector de idioma.
  • Modo claro y modo oscuro.
  • Página de contacto con envío directo a nuestro correo empresarial.
  • Página personalizada de error 404.

(volver arriba)

Primeros pasos

Estas instrucciones permiten levantar el proyecto en local para desarrollo o pruebas.

Requisitos previos

Necesitas tener instalado:

  • XAMPP 8.2.12
  • Composer 2.9.5
  • Symfony CLI 5.16.1
  • Node.js 24.14
  • Npm 11.9.0
  • Python 3.14.4
  • Git
  • MySQL o MariaDB
  • (recomendación) Visual Studio Code

Comprobar versiones:

php -v
composer -V
symfony -v
node -v
npm -v
python --version

(volver arriba)

Instalación

  1. Clonar el repositorio:
git clone https://github.com/daaniii13/proyectoDAW.git
cd proyectoDAW
  1. Instalar dependencias de PHP:
composer install
  1. Instalar dependencias de JavaScript:
npm install

(volver arriba)

Configuración del entorno

Edita .env.local con tus datos locales:

APP_ENV=dev
APP_DEBUG=1
APP_SECRET=CAMBIA_ESTE_VALOR

DATABASE_URL="mysql://root:@127.0.0.1:3306/hazlosen_teachingexplorer?serverVersion=8.0&charset=utf8mb4"

MAILER_DSN=
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=

APP_URL=http://127.0.0.1:8000
DEFAULT_URI=http://127.0.0.1:8000

Variables importantes:

Variable Uso
APP_ENV Entorno de Symfony. En local debe estar en dev.
APP_SECRET Clave interna de la aplicación. Debe cambiarse.
APP_URL URL base del proyecto.
DEFAULT_URI URL usada por Symfony para generar enlaces absolutos.
DATABASE_URL Conexión a MySQL/MariaDB.
MAILER_DSN Configuración del envío de correos.
GOOGLE_CLIENT_ID ID del cliente OAuth de Google.
GOOGLE_CLIENT_SECRET Secreto del cliente OAuth de Google.

(volver arriba)

Base de datos

  1. Crear la base de datos:
CREATE DATABASE hazlosen_teachingexplorer CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  1. Importar el archivo SQL incluido en el proyecto:
mysql -u root -p hazlosen_teachingexplorer < "hazlosen_teachingexplorer.sql"

También se puede importar desde phpMyAdmin.

  1. Otra opción es generar la estructura con Doctrine:
php bin/console doctrine:database:create
php bin/console doctrine:migrations:migrate
  1. Para crear un usuario administrador manualmente, la contraseña debe estar hasheada, para ello ejecuta el siguiente comando e introduce tu contraseña:
php bin/console security:hash-password

Ejemplo de inserción SQL:

INSERT INTO `user` (`email`, `roles`, `password`, `nombre`, `fecha_registro`, `activo`)
VALUES ('admin@gmail.com', '["ROLE_ADMIN"]', 'HASH_GENERADO_POR_SYMFONY', 'Administrador', NOW(), 1);

(volver arriba)

Ejecutar el proyecto

En una terminal, iniciar Symfony:

symfony server:start

Abrir en el navegador:

http://127.0.0.1:8000

Para generar los assets de producción:

npm run build

(volver arriba)

Uso

Usuario estudiante

El estudiante puede registrarse, iniciar sesión, consultar los cursos disponibles, inscribirse en cursos, cambiar sus ajustes y preferencias, acceder a los recursos, entregar tareas, revisar su progreso, solicitar el cambio a una cuenta docente y escribir comentarios en cursos y tareas.

Usuario profesor

El profesor puede solicitar una cuenta docente, crear y gestionar cursos, añadir recursos, crear tareas, revisar entregas, corregir actividades, validar inscripciones y consultar los cursos disponibles. Además, también puede inscribirse en cursos como estudiante, acceder a recursos, entregar tareas, revisar su progreso y escribir comentarios en cursos y tareas.

Usuario administrador

El administrador puede gestionar usuarios, revisar solicitudes de profesor, aprobar o rechazar cambios de plan y controlar el acceso a funciones avanzadas.

(volver arriba)

Estructura del proyecto

proyectoDAW-main-dev/
├── assets/                         # Archivos fuente del frontend: JavaScript, Vue y estilos
│   ├── js/                         # Código JavaScript y componentes Vue
│   ├── styles/                     # Hojas de estilo fuente
│   └── app.js                      # Entrada principal del frontend para Vite
│
├── bin/                            # Ejecutables de Symfony
│   └── console                     # Consola de comandos de Symfony
│
├── config/                         # Configuración general de Symfony
│
├── images/                         # Imágenes usadas en el READNE
│
├── public/                         # Carpeta pública accesible desde el navegador
│   ├── build/                      # Archivos generados por Vite tras ejecutar npm run build
│   ├── uploads/                    # Archivos subidos por usuarios o gestionados por la aplicación
│   ├── favicon.ico                 # Icono del sitio web
│   └── index.php                   # Punto de entrada principal de Symfony
│
├── python/                         # Scripts auxiliares en Python
│   └── recomendador.py             # Sistema de recomendación de cursos
│
├── src/                            # Código principal PHP de la aplicación
│   ├── Controller/                 # Controladores y rutas
│   ├── Entity/                     # Entidades de Doctrine
│   ├── EventSubscriber/            # Suscriptores de eventos
│   ├── Repository/                 # Consultas personalizadas a la base de datos
│   ├── Security/                   # Seguridad, login y autenticación
│   ├── Service/                    # Servicios reutilizables de la aplicación
│   └── Kernel.php                  # Núcleo de Symfony
│
├── templates/                      # Plantillas Twig de la interfaz
│   ├── componentes/                # Componentes visuales reutilizables
│   ├── paginas/                    # Vistas principales de cada página
│   └── base.html.twig              # Plantilla base común del sitio
│
├── tests/                          # Pruebas del proyecto
│
├── translations/                   # Archivos de traducción en español e inglés
│
├── composer.json                   # Dependencias PHP del proyecto
├── composer.lock                   # Versiones bloqueadas de dependencias PHP
├── package.json                    # Dependencias y scripts JavaScript
├── package-lock.json               # Versiones bloqueadas de dependencias JavaScript
├── symfony.lock                    # Registro de recetas instaladas por Symfony Flex
├── vite.config.js                  # Configuración de Vite
├── .env                            # Variables de entorno generales
├── .env.local                      # Variables de entorno locales no compartidas
└── hazlosen_teachingexplorer.sql   # Archivo SQL con la base de datos del proyecto

(volver arriba)

Roles de usuario

Roles de usuario

Rol Descripción
ROLE_ESTUDIANTE Usuario base de la plataforma. Puede consultar cursos, inscribirse, acceder a recursos, entregar tareas, revisar su progreso y escribir comentarios en cursos y tareas.
ROLE_PROFESOR Usuario docente. Puede crear y gestionar cursos, añadir recursos, crear tareas, revisar entregas, corregir actividades, validar inscripciones y escribir comentarios. Además, también puede realizar las mismas acciones que un estudiante.
ROLE_ADMIN Usuario administrador. Puede acceder al panel de administración, gestionar usuarios, activar o desactivar cuentas, modificar roles y validar solicitudes de profesores.

(volver arriba)

Capturas de pantalla

Hay una carpeta llamada images en la raíz del repositorio donde se encuentran las siguientes capturas mostradas.

Página principal

Página principal 1 Página principal 2

Sobre nosotros

Sobre nosotros

Contacto

Contacto

Login y registro

Iniciar sesión Crear cuenta

Mis cursos

Mis cursos

Panel del profesor

Panel profesor

Panel de administración

Panel administración profesores Panel administración usuarios

(volver arriba)

Despliegue

Para producción:

  1. Configurar .env.local o variables reales del servidor:
APP_ENV=prod
APP_DEBUG=0
APP_SECRET=CAMBIA_ESTE_VALOR

DATABASE_URL="mysql://USUARIO:CONTRASEÑA@HOST:3306/BASE_DE_DATOS?serverVersion=8.0&charset=utf8mb4"

MAILER_DSN=
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=

APP_URL=https://dominio.com
DEFAULT_URI=https://dominio.com
  1. Instalar dependencias sin paquetes de desarrollo:
composer install --no-dev --optimize-autoloader
  1. Compilar assets:
npm install
npm run build
  1. Limpiar caché:
php bin/console cache:clear --env=prod
php bin/console cache:warmup --env=prod
  1. Configurar el document root del hosting para que apunte a:
public/

Actualmente, el proyecto está desplegado en producción y disponible en:

https://teachingexplorer.com

(volver arriba)

Hoja de ruta

  • Registro e inicio de sesión.
  • Roles de estudiante, profesor y administrador.
  • Panel de administración.
  • Gestión de usuarios desde administración.
  • Activación y desactivación de cuentas.
  • Gestión de cursos.
  • Creación y edición de cursos por parte del profesor.
  • Inscripciones y validación manual.
  • Estados de inscripción: pendiente de pago, pendiente de validación, activa, rechazada y completada.
  • Recursos y tareas.
  • Entregas de tareas por parte del estudiante.
  • Corrección de actividades por parte del profesor.
  • Control de progreso del curso.
  • Acceso ordenado a recursos y tareas.
  • Sistema de comentarios en cursos y tareas.
  • Recuperación de contraseña.
  • Login con Google.
  • Traducción ES/EN.
  • Traducción dinámica de contenido.
  • Recomendador de cursos.
  • Preferencias de usuario y cambio de tema.
  • Subida de archivos.
  • Despliegue en producción.
  • Configuración básica del dominio y acceso público.
  • Sistema de notificaciones.
  • Foro de dudas por curso.
  • Chat privado entre estudiante y profesor.
  • Añadir pruebas automatizadas completas.
  • Mejorar la monitorización de errores en producción.

(volver arriba)

Autores

  • Carlos Castellano Gómez
  • Juan Daniel Colque Calcina
  • Fernando Martínez Moreno
  • Daniel Muñoz Martínez
  • Juan Luis Sánchez Galindo

Correo de contacto: teachingexplorerdaw@gmail.com

(volver arriba)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors