Features Back End - Lcaraballoc/InVitro GitHub Wiki

Autenticación de usuarios: Firebase Authentication

Firebase comprende un conjunto de soluciones para el backend que permite agilizar el desarrollo web. Soportado por Google y con una capa gratuita para hacer despliegues en desarrollo, se convirtió en la opción para desarrollar In Vitro dado el tiempo inicial establecido de solo 15 días. FB Authentication nos brindaba otra ventaja y era la seguridad, ya que no teníamos que hacer encriptaciones especiales en la base de datos debido a que la información era manejada por la plataforma.

Este servicio permite la creación de usuarios con datos básicos tales como el nombre, el correo y la contraseña, incluso su estado. No requiere de un nombre de usuario ya que el correo es el identificador universal que utiliza Firebase Auth.

Base de datos: Cloud Firestore

Si bien Firebase Authentication nos facilitaba la creación y actualización de usuarios, no nos permitía añadir otra información adicional como los números de contacto, el rol del usuario o el tipo de documento de identificación. Es allí donde se añadió un paso adicional en el código para que una vez realizada la correcta creación o actualización de información del usuario, se ingresara esta información en la base de datos en una colección de Cloud Firestore. Por otro lado, la información de las historias clínicas y los exámenes se crearon también en otras colecciones, procurando mantener un solo nivel de documentos (es decir, que no existieran documentos anidados que dificultaran los query).

Se prefirió Cloud Firestore sobre Realtime Database según recomendación dada en el curso de Cloud Functions de Platzi.

Notificaciones: Firebase Cloud Functions

Firebase cuenta con una posibilidad de ejecutar funciones de manera automática cada vez que se produce un evento dentro de la plataforma, llamado Cloud Functions. Estas funciones son útiles cuando dentro de nuestro proyecto deseamos realizar acciones cada vez que surge una modificación en la base de datos, como por ejemplo el envío de un email cada vez que:

  • Se crea un nuevo usuario.
  • Se suben los resultados de los exámenes.

El código de las funciones se sube directamente a la plataforma y no es necesario incluirlo dentro del backend integrado. Gracias a la opción CLI se pueden realizar todas las configuraciones (como variables de entorno), testing y despliegues desde la consola

Endpoints: NodeJS

Si bien las funcionalidades de Firebase pueden añadirse directamente al Front End y desde allí hacer las llamadas a las API, se integró finalmente en un repositorio de NodeJS tanto la autenticación como las demás operaciones con base de datos. De esta manera, es posible a futuro cambiar de plataforma en el front (por ejemplo a Angular, Vue, Svelte) sin tener que readaptar el código que ejecuta la manipulación de la información.

Para el testing, nos apoyamos con Postman, de manera que no tuvimos que esperar a que el equipo de Front End terminara su parte para probar el código que se iba desarrollando.