A progressive Node.js framework for building efficient and scalable server-side applications.
Backend de la applicación MyOnlineDoctor desarrollada por The Hackers, utilizando NestJs.
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
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
# Correr Test
$ npm run test
Modelo de Dominio.
Grafo de dependencias.
Arquitectura Hexagonal.
Tabla con las actividades mas significativas por integrante:
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 |
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 |
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 |
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 |
MyOnlineDoctor-Backend & Nest are MIT licensed