Skip to content

marco-cortes/coursite

Repository files navigation

COURSITE

Coursite es una aplicación web de aprendizaje en línea en donde los alumnos pueden encontrar distintos cursos que los profesores publican, la aplicación fue desarrollada como proyecto escolar con el propósito de comprender la adminsitración de sistemas de información.

Para el desarrollo de esta aplicación se nos planteó el realizar entrevistas con un "cliente" para determinar sus necesidades y en base a estas comenzar a análizar, planear, diseñar el producto y finalmente desarrollarlo.

image

Descripción general

Acciones de los usuarios

La aplicación consta de cuatro tipos de usuarios, sin sesión, estudiante, profesor y administrador. Estos usuarios pueden realizar distintas acciones.

  • Usuario sin sesión
    • Registrarse como profesor o alumno
    • Ver los cursos disponibles y sus detalles.
  • Estudiante
    • Iniciar sesión.
    • Editar la información de su perfil.
    • Ver los cursos disponibles y sus detalles.
    • Comprar cursos.
    • Acceder a la información de su curso comprado.
    • Ver el progreso de sus cursos.
    • Obtener el certificado de sus cursos terminados.
    • Ver sus notificaciones.
    • Calificar un curso.
  • Profesor
    • Iniciar sesión.
    • Editar la información de su perfil.
    • Subir un curso.
    • Editar un curso.
    • Eliminar un curso.
    • Ver sus cursos solicitados.
    • Ver sus notificaciones.
    • Subir sus documentos.
  • Administrador
    • Iniciar sesión
    • Aprobar o rechazar solicitudes de registro de profesores.
    • Aprobar o rechazar solicitudes de publicación de curso.
    • Ver todos los cursos.
    • Ver los documentos de los profesores.
    • Agregar categorías

Funcionamiento

Frontend

El Frontend esta hecho con React JS, Redux, Sweet Alert 2 y SCSS. Su funcionamiento se basa en un filtro de vistas basado en el rol del usuario, por ejemplo. Si se detecta una sesión, se obtendrá el rol y si el rol es de alumno, solo permitirá acceder a las vistas del alumno. Desde aquí se hacen peticiones a una API REST desplegada en Heroku y a servicios de Firebase como su base de datos llamada Firestore y a su servicio de Storage para almacenar archivos.

Para el manejo del storage se usó Redux, basando su funcionamiento en los roles de los usuarios, por ejemplo las acciones del alumno, contiene solo las peticiones a la api que solo el usuario de tipo alumno puede realizar.

El uso de Sweet Alert 2 fue implementado solamente para mostrar avisos y confirmaciones de acciones delicadas.

Los estilos fueron realizados con SCSS, esto con el propósito de tener los estilos lo más organizados posibles, basandose en los componentes y vistas de React.

Backend

El Backend fue realizado con Spring Boot, Spring Security y Java-JWT. Esta API realiza una conexión a una base de datos de MySQL, creando las tablas si es que no existen, esto con ayuda de JPA, Hibernate y las entidades definidas en las clases el paquete "entity". Los endpoints de la API están protegidos por una autenticación basada en tokens (JWT). Esta autenticación tiene además una autorización basada en los roles de los usuarios. Además al cambiar el status de los profesores la API envía un correo al profesor para avisarle de la situación de su solicitud.

Base de datos

Se diseñó la siguiente base de datos en base a las reglas de negocio del cliente, nos quedaron las siguientes relaciones, donde el usuario en base a su rol tendrá distintas relaciones, por ejemplo. El curso se relacionará a un usuario que tenga el rol de tipo profesor, pues este estaría creando el curso, por otra parte las relaciones de las tablas "course_user" y "course_lesson_user" se formarán cuando el rol del usuario sea de estudiante, pues estaría comprando un curso. Por otra part, sólo el administrador podría cambiar el status de los usuarios de tipo profesor y además agregar más categorías a la plataforma.

image

Manual de Estudiante

Registro

Hacer click en el botón "Registrarse" image

Se mostrará la siguiente vista: image

Llenar el formulario y hacer click en "Registrarse", una vez hecho esto se mostrará la siguiente vista: image

Ver detalles

Hacer click en el botón "Detalles", se mostrará una vista como la siguiente pero con la información del curso seleccionado: image

Inscribirse

Estar en la vista "Detalles" o en la vista "Cursos" y hacer click en el botón "Inscribirse", se mostrará la siguiente vista: image

Llenar el formulario y hacer click en "Realizar pago", si la compra es exitosa mostrará la siguiente vista: image

Ver curso comprado

Estar en la vista "Mi aprendizaje" o "Cursos" y hacer click en el botón "Ir al curso" del curso de interés. image

Estando en esta vista, podrá calificar el curso, haciendo click en "Calificar": image

Ver la información de contacto con el profesor, haciendo click en "Contacto": image

Modificar perfil del usuario

Cambiar foto

Hacer click en el botón de la foto de perfil: image Se mostrará la siguiente ventana: image Se selecciona la imágen: image Se da click en "subir": image Una vez cambiada la imágen se mostrará el siguiente aviso: image

Cambiar datos

Hacer click en el botón "Editar" del campo a modificar: image Modificar el dato o los datos: image Hacer click en "Actualizar datos" y se mostrará lo siguiente: image Si se cambia el correo, mostrará el siguiente aviso: image Y se cerrará la sesión.

Cambiar contraseña

Hacer click en el botón "Actualizar contraseña": image Ingresar la contraseña actual, la nueva contraseña y hacer click en el botón "Guardar": image

Eliminar cuenta

Hacer click en el botón "Eliminar cuenta": image Hacer click en el botón "Eliminar cuenta" x2, se cerrará la sesión y la cuenta quedará eliminada.

Obtener certificado

Deben haberse visto todas las lecciones del curso, se mostraría algo así: image Despues deberá ir a la vista "Mi aprendizaje" en la sección de "Certificados": image Una vez aquí se puede descargar directamente o verlo en web haciendo click en "Certificado" image

Manual de Profesor

Registro

Hacer click en el link "¿Quieres enseñar?" image

Se mostrará la siguiente vista: image

Llenar el formulario y hacer click en "Registrarse", una vez hecho esto se mostrará la siguiente vista: image

En esta parte el profesor deberá subir documentos que acrediten que es capaz de impartir algún curso. image

Después se dará click en "Subir" y al subirse el archivo se mostrará la siguiente vista, debe esperara a que un administrador apruebe su solicitud. image

Una vez aprobada o rechazada, recibirá un correo electrónico como el siguiente: image

Solicitar curso

Estar en la vista "Mis Cursos" y hacer click en el botón "Nuevo Curso": image

Llenar el siguiente formulario: image image Una vez llenado el formulario, antes de hacer click en "Guardar" se deben agregar unidades y lecciones. Al hacer click en "Agregar unidad" se mostrará lo siguiente: image Se llena el formulario: image Se da click en "Agregar unidad" y se mostrará lo siguiente: image Todas las unidades deben tener al menos una lección, por lo tanto se hará click en el botón verde de agregar: image Se llena el formulario: image Y se da click en "Agregar lección": image Después se da click en "Guardar" y se mostrará el siguiente aviso: image Y en la lista de cursos se mostrará el curso agregado: image