Skip to content

The-Hackers-UCAB/MyOnlineDoctor-Backend

Repository files navigation

Nest Logo

A progressive Node.js framework for building efficient and scalable server-side applications.

NPM Version Package License NPM Downloads CircleCI Coverage Discord Backers on Open Collective Sponsors on Open Collective Support us

MyOnlineDoctor-Backend

Backend de la applicación MyOnlineDoctor desarrollada por The Hackers, utilizando NestJs.

Instalación

Instalar dependencias de node a través del manejador de paquetes npm.

#npm dependencies
$ npm install

Copiar y crear el archivo .env para el manejo de las variables de entorno.

#.env.example configuration
$ cp .env.example .env

Run de la APP

Ejecutar los siguientes comando para correr la aplicación.

# development
$ npm run start
# watch mode
$ npm run start:dev
# production mode
$ npm run start:prod

Running Tests

# Correr Test
$ npm run test

Documentation

Modelo de Dominio.

App Screenshot


Grafo de dependencias.

App Screenshot


Arquitectura Hexagonal.

App Screenshot


Desarrolladores

Tabla con las actividades mas significativas por integrante:

Manuel Da Pena

Actividades Pull Request
Configuración básica del proyecto en NestJs. Sistema de autenticación, login, logout, permisos y roles de usuarios del sistema (Paciente, Doctores y Admins), se implementa haciendo uso de Passport-Local, Express Sessions y Cookies. Se aplicó el principio SoC de forma tal que el módulo de Auth de infraestructura solo se encargue de verificar, autenticar y autorizar a los usuarios del sistema. #1
Implementación de la arquitectura principal del backend, basada en DDD. Se implementaron todas las clases del Core del sistema, entre las cuales se encuentran los eventos de dominio, los agregados, las entidades, los servicios de aplicación y dominio, los puertos, entre otros. Se utilizaron diversos principios y patrones para implementar arquitectura principal basada en la arquitectura hexagonal y DDD, en donde todo momento se respeta la regla de dependencia. Entre los patrones aplicados se encuentra el decorador, singleton, publisher, adapter, repository, dtos, entre otros. También se aplicó la programación orientada a aspectos (AOP) para la implementación de las funcionalidades Cross-Cutting-Concerns (Logging, Error Handler y Notificaciones). Se aplicaron los principios como SRP, LSP DIP, ISP y OCP junto con la programación genérica e inyección de dependencia. #4
Configuración básica del proyecto en NestJs. Sistema de autenticación, login, logout, permisos y roles de usuarios del sistema (Paciente, Doctores y Admins), se implementa haciendo uso de Passport-Local, Express Sessions y Cookies. Se aplicó el principio SoC de forma tal que el módulo de Auth de infraestructura solo se encargue de verificar, autenticar y autorizar a los usuarios del sistema. #1
Implementación del agregado de doctor y casos de uso asociados. #5 , #8, #13
Implementación del Bus de Eventos para el manejo de los eventos de dominio. #9
Implementación de Notifier con patrones. Se implementó un decorador para el manejo de notificación junto con su puerto y adaptador de firebase. Se utilizó DI con funciones de orden superior y variables parametrizadas para la conversión de la data recibida y la necesaria según la implementación para enviar una notificación. #19, #25
Implementaciones relacionadas con citas. #14, #19, #23
Implementación de creación de registro médico a través de eventos de dominio. #31
Base para Testing, implementación del patron creacional Object Mother y Mocks para los distintos adaptadores a utilizar en los test, configuración para ejecutar suite de test e implementación del test unitario para comprobar la regla de negocio de que si un paciente esta suspendido la llamada no se ejecuta. #44
Implementación de test para validar que no se sobre o infra califiquen citas. Se implemento test de aceptación para loging. https://github.com/The-Hackers-UCAB/MyOnlineDoctor-Backend/commit/cd31315998c35e1345ba9c488b6ba74d80584905
Endpoint para bloquear usuario. https://github.com/The-Hackers-UCAB/MyOnlineDoctor-Backend/commit/cd31315998c35e1345ba9c488b6ba74d80584905

Antonio Badillo

Actividades Pull Request
Continuous integration/continuous delivery (CI/CD) pipeline. Desplegado continuo (Continous Deployment) del servicio web ( NEST API ) a producción en Heroku usando un contenedor docker construido al momento de subir código al repositorio ( on push to master branch ). Automatización desarrollada con Github Actions #2
Implementación del agregado cita con value objects y excepciones #12
Finalización del CI/CD pipeline. Se añadió la ejecución de pruebas automáticas en cada push #35
Implementación del endpoint para ver el perfil de un paciente +af455c7
Implementación de una prueba que valida que se actualice la descripción de un registro medico e implementación de una prueba que valida que un doctor no pueda crear un registro medico en una cita en la que el no participó #49

Santiago Figueroa

Actividades Pull Request
Implementación del controlador de paciente con su repositorio y mapeadores #10
Implementación de la conexión de Nest con el servicio de Firebase #15
Implementación del servicio de dominio para calcular el rating de un doctor #18
Casos de uso relacionados con las citas #20, #22, #24

Gabriel Ojeda

Actividades Pull Request
Implementación del agregado medical record con sus value objects, excepciones, repositorios, mapeadores y el caso de uso para crear un registro medico + 2b00a49
Implementación de los endpoints, servicios de aplicación y eventos de dominio para actualizar los recipe y las planificaciones de los medical records #33
Implementación del endpoint y su servicio de aplicación para obtener los medical records de un paciente #39
Implementación del endpoint y su servicio de aplicación para obtener los medical records de un doctor #42
Implementación del test que valida que no se puede crear un medical record si la cita asociada no esta completada #50

License

MyOnlineDoctor-Backend & Nest are MIT licensed

Extras

Libraries

Guides

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages