Giter Club home page Giter Club logo

travis_chat_app's Introduction

Entrega 3

🎉 La documentacion solicitada se encuentra en docs/


Entrega 2+

TODA NUESTRA INFO SE ENCUENTRA EN: https://github.com/Cadagan/Travis_chat_app

IIC2173 - Entrega 1 - Grupo 21

Requsitos

Requsitos Mínimos

✔️ Backend
  • ✔️ RF1: (3p) Se debe poder enviar mensajes y se debe registrar su timestamp. Estos mensajes deben aparecer en otro usuario, ya sea en tiempo real o refrescando la página. El no cumplir este requisito completamente limita la nota a 3.9

  • ✔️ RF2: (5p) Se deben exponer endpoints HTTP que realicen el procesamiento y cómputo del chat para permitir desacoplar la aplicación. El no cumplir este requisito completamente limita la nota a 3.9

  • ✔️ RF3: (7p) Establecer un AutoScalingGroup con una AMI de su instancia EC2 para lograr autoescalado direccionado desde un ELB (Elastic Load Balancer).

    • ✔️ (4p) Debe estar implementado el Load Balancer
    • ️️✔️ (3p) Se debe añadir al header del request información sobre cuál instancia fue utilizada para manejar el request. Se debe señalar en el Readme cuál fue el header agregado.
  • ✔️ RF4: (2p) El servidor debe tener un nombre de dominio de primer nivel (tech, me, tk, ml, ga, com, cl, etc).~~

  • ✔️ RF4: (3p) El dominio debe estar asegurado por SSL con Let's Encrypt. No se pide auto renew. Tambien pueden usar el servicio de certificados de AWS para el ELB~~

    • ✔️ (2p) Debe tener SSL.
    • ✔️ (1p) Debe redirigir HTTP a HTTPS.
✔️ Frontend
  • ✔️ RF5: (3p) Utilizar un CDN para exponer los assets de su frontend. (ej. archivos estáticos, el mismo frontend, etc.). Para esto recomendamos fuertemente usar cloudfront en combinacion con S3.
  • ✔️ RF6: (7p) Realizar una aplicación para el frontend que permita ejecutar llamados a los endpoints HTTP del backend.
    • ✔️ (3p) Debe hacer llamados al servidor correctamente.
    • ✔️ Elegir 1 de los siguientes. No debe ser una aplicación compleja en diseño. No pueden usar una aplicacion que haga rendering via template de los sitios web. Debe ser una app que funcione via endpoints REST
      • (4p) Hacer una aplicación móvil (ej. Flutter, ReactNative)
      • ✔️ (4p) Hacer una aplicación web (ej. ReactJS, Vue, Svelte)~~ Elegimos ReactJS :D

Requsitos Opcionales

✔️ Trabajo delegado

Se pide implementar al menos 3 casos de uso con distinto tipo de integración.

  • ✔️ 1.- Mediante una llamada web (AWS API Gateway)

  • ✔️ 2.- Mediante código incluyendo la librería (sdk)

  • 3.- Como evento a partir de una regla del AutoScalingGroup

  • 4.- Mediante Eventbridge para eventos externos (NewRelic, Auth0 u otro)

  • 5.- Cuando se esté haciendo un despliegue mediante CodeCommit

  • ✔️ 6.- Cuando se cree/modifique un documento a S3

  • ✔️ 7.- Amazon Comprehend

  • ✔️ 8.- Amazon Lambda Functions

  • ✔️ RF: (5p) Por cada uno de los 3 tipos de integración. Se implementaron y explicaron los 3. Se utilizó S3 para guardar imagenes, además de utilizar el tutorial para sentiment (censura de mensajes).

    • ✔️ (3p) Por la implementación.
    • ✔️ (2p) Por la documentación.
✔️ Mensajes en tiempo real
  • ✔️ RF1: (5p) Cuando se escriben mensajes en un chat/sala que el usuario está viendo, se debe reflejar dicha acción sin que éste deba refrescar su aplicación.
  • ✔️ RF2: (5p) Independientemente si el usuario está conectado o no, si es nombrado con @ o # se le debe enviar una notificación (al menos crear un servicio que diga que lo hace, servicio que imprime "se está enviando un correo") -> Para esto se creó un sistema de register/login con passportjs y express-sessions. El correo no se manda pero sí está vinculado al correo del usuario (y si el usuario a quien mencionaron está conectado, le llegará una notificación).
  • ✔️ RF3: (5p) Debe documentar los mecanismos utilizados para cada uno de los puntos anteriores indicando sus limitaciones/restricciones. Esto se encuentra en docs/Readme.Md :D

Bonus

✔️/ ❌ Caché

Para esta sección variable la idea es implementar una capa de Caché para almacenar información y reducir la carga en el sistema. Para almacenar información para la aplicación recomendamos el uso de Redis, así como recomendamos Memcached para fragmentos de HTML o respuestas de cara al cliente.

  • ✔️ RF1: (4p) Levantar la infraestructura necesaria de caché. Se puede montar en otra máquina o usando el servicios administrado por AWS. Se debe indicar como funciona en local y en producción.
  • RF2: (6p) Utilizar la herramienta seleccionada de caché para almacenar las información para al menos 2 casos de uso. Por ejemplo las salas y sus últimos mensajes o credenciales de acceso (login).
    • Restricción Por cada caso de uso debe utilizar alguna configuración distinta (reglas de entrada FIFO/LIFO, estructura de datos o bien el uso de reglas de expiración)
  • RF3: (5p) Documentar y explicar la selección de la tecnología y su implementación en el sistema. Responder a preguntas como: "¿por qué se usó el FIFO/LRU o almacenar un hash/list/array?" para cada caso de uso implementado.

travis_chat_app's People

Contributors

cadagan avatar kylevon avatar mathiasvaldebenito avatar nbcl avatar tatanpoker09 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.