Giter Site home page Giter Site logo

semi1-1s-g9's Introduction

Seminario de Sistemas 1 Practica 1

Grupo 9

Integrantes

Carnet Nombre
201709073 Walter Alexander Guerra duque
201801210 Rodolfo Alexander Avalos Soto
201903004 Jonathan Alexander Alvarado Fernández
201902705 Josue Arturo Robledo Duque

Frontend

Para el FrontEnd se utilizo el framework de javaScript React utilizando VITE para su configuración. Para consumir las API Rest Node Js. Los datos de la API como la Url y el puerto se pueden cambiar rápidamente en el Archivo config.js.Se creó una imagen de docker para poder ejecutarlo posteriormente con docker compose.

Backend

NodeJS

Para la api se utilizo como lenguaje nodejs utilizando express, morgan y cors para su configuración. Para la conexión a aws se utilizó aws-sdk, para la conexión a la base de datos se utilizó mysql2 y para leer el .env se utilizó dotenv. Para la seguridad se implemento JWT para la verificación de permisos e inicio de sesión enlazada con cognito. Para encriptación se utilizó md5. Se creó una imagen de docker para poder ejecutarlo posteriormente con docker compose.

Endpoints

  • /registrar-usuario Permite crear un nuevo usuario ingresando nombre, dpi, correo, contraseña, nombre de foto, imagen de la foto. Se utiliza el correo y la contraseña para ingresarlos al pool de usuarios de Amazon Cognito y el resto de la información se ingresa a la base de datos.

  • /verificar-cuenta Permite confirmar el correo electronico de una cuenta registrada en la aplicación. Recibe el correo electronico y un codgio numerico enviado al correo del usuario.

  • /iniciar-sesion Permite generar un token para el inicio de sesión en la aplicación. Recibe un correo y contraseña los cuales se verifican desde cognito.

  • /verificar-token Permite verificar si el token que se envia es valido y permite su autorización.

  • /iniciar-sesion-foto Recibe una foto la cual se compara con las fotos de perfil mediante rekognition y permite iniciar sesión generando su token respectivo.

  • /get-fotos-perfil Permite obtener las fotos de perfil de un usuario especifico.

  • /subir-foto Permite subir una publicación en el perfil de un usuario en especifico.

  • /get-publicacion-todo Permite obtener todas las publicaciones de un usuario en especifico.

  • /get-publicacion/:etiqueta Permite obtener las publicaciones de un usuario en especifico filtrando por una etiqueta en especifico.

  • /listar-desconocidos Permite mostrar una lista de todos los usuarios que no son amigos de un usuario especifico.

  • /agregar-amigo Permite enviar una solicitud de amistad de un usuario a otro.

  • /solicitudes-amistad Permita listar todas las solicitudes de amistad pendientes de un usuario en especifico.

  • /rechazar-amistad/:solicitud Permite rechazar una solicitud amistad.

  • /aceptar-amistad/:solicitud Permite aceptar una solicitud de amistad.

  • /publicaciones-amigos Permite obtener todas las publicaciones hechas por los amigos de un usuario en especifico.

  • /get-info-perfil Permite obtener toda la información que ingresó en su registro un usuario en especifico.

  • /modificar-datos Permite modificar el nombre y dpi de un usuario en especifico.

  • /foto-perfil-nueva Permite cambiar la foto de perfil de un usuario subiendo una foto nueva a la aplicación.

  • /foto-perfil-existente Permite cambiar la foto de perfil de un usuario por una que ya ha sido subida a la aplicación.

  • /chatbot Permite enviar un mensaje al servicio de amazon lex.

  • /chatbot/aviso Permite notificar al usuario que su clase esta por empezar.

  • /get-comentario/:publicacion Permite al usuario obtener todos los comentarios de un publicacion especifica.

  • /comentario Permite al usuario crear un comentario en una publicacion especifica.

Base de Datos

La base de datos se implemento utilizando MySQL como gestor y ejecución dentro de un contenedor de docker.

  • Diagrama de la base de datos:

AWS

Usuarios IAM

  • AdminS3: Usuario para la administración del servicio Amazon S3 implementado para el almacenamiento de las fotografías de las publicaciones, utiliza la política AmazonS3FullAccess que brinda acceso completo a S3 y S3 lamda.

  • AdminEC2: Usuario utilizado para la administración de Amazon EC2, se utilizó para configurar las EC2 que ejecutan el frontend, backend y la base de datos por medio de contenedores de docker. también se utilizó para configurar el loadBalancer. Utiliza la politica de AmazonEC2FullAccess.

  • AdminR: Usuario utilizado para la administración de Amazon Rekognition, se utilizo para acceder al servicio de rekognition para sacar las etiquetas y la comparación de rostros de las fotografias. Utiliza la Política RekognitionFullAccess.

  • AdminTr: Usuario utilizado para la administración de Amazon Translate, se utilizo para acceder al servicio translate para traducir los textos de las descripciones. Utiliza la Política TranslateFullAccess.

  • AdminCB: Usuario utilizado para la administración de Amazon Lex, se utilizo para acceder al servicio de amazonLex y poder usar los bots que nos brindan. Utiliza la Política AmazonLexFullAccess.

  • AdminCognito: Usuario utilizado para la administración y acceso a Amazon Cognito para configurar el pool de usuarios para manejar los credenciales de acceso a la aplicación.

Despliegue y Servicios

  • Amazon EC2

    Para el despliege del proyecto se utilizaron dos instancias de EC2. La primera instancia se utilizo para la base de datos mysql ejecutada por medio de docker y la segunda instancia se ejecuta el backend y el frontend igualmente por medio docker.

  • Amazon S3

    Se creo un bucket en Amazon S3 con el nombre semi1-practica1-g9-imagenes que contiene dos carpetas Fotos_Perfil y Fotos_Publicadas en las cuales se almacenan las fotografias de los usuarios.

  • Amazon Rekognition

    Para el analisis de las fotos se utilizó este servicio. Se accede por medio de las credenciales de AdminR y recibe las fotos para analizarlas para obtener sus etiquetas como también para realizar una comparación de rostros para iniciar sesión por medio de una foto.

  • Amazon Translate

    Se utilizá para la traducción de texto de un idioma origen a un idioma seleccionado. Se utilizó para traducir a diferentes idiomas las descripciones de las fotos ingresadas a la plataforma. Se accede por medio de las credenciales del usuario AdminTr

  • Amazon Lex

    Se utiliza el chatbot que nos brinda este servicio. Se accede por medio de las credeciales de AdminCB y recibe un texto y este devuelve una respuesta dependiendo el texto que ingresemos.

  • Amazon Cognito

    Se utiliza para el manejo de credenciales de inicio de sesión. Se encarga de verificar que el correo ingresado a la plataforma sea valido y que al momento de intentar acceder el usuario y la contraseña sean correctos. Se implemento por medio del pool de usuarios semi1g9user-pool.

  • Pagina Web

semi1-1s-g9's People

Contributors

alexingguerra avatar alexanderavalos avatar josuerobld avatar jona1403 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.