API Backend de Medisync, Sistema de Informacion para optimizar los procesos y manejo de citas y diagnosticos de un centro medico.
- Node.js
- NPM
- Docker y Docker Compose
- Prettier
- Eslint
- Empezamos por instalar las dependencias
npm install-
Copia y pega el env-example y cambia el nombre a .env, finalmente cambia los datos dentro que te convengan
-
Luego se instala las dependencias en docker
docker compose up -d mysql maildev phpmyadmin minio redis- Finalmente Crear la base de datos
npm run db:reset- Ya con esto, puedes correr el API
npm run start:devPara el desarrollo, se tiene una serie de comandos CLI que te permite crear todo el boilerplate de un modulo y empezar a desarrollar desde ahi los detalles de los mismos
- Creacion de un nuevo modulo
npm run generate:resource- Agregado de nuevas propiedades a modelos existentes
npm run add:property:to-db- Despues de cada cambio en algun modelo en la base de datos, se debe actualizar la misma, para ello hay que crear la nueva migracion
npm run migration:generatenpm run migration:run- El API trabaja bajo autenticacion por medio de Bearer Tokens usando JWT, por lo que es posible obtener los datos del payload con el decodador @Me(), siempre y cuando se haya utilizado el Guard('jwt'), un ejemplo:
@Get('me')
@UseGuards(AuthGuard('jwt'))
@HttpCode(HttpStatus.OK)
public me(@Me() userPayload: JwtPayloadType): Promise<NullableType<User>> {
return this.service.me(userPayload);
}- Para el manejo de la permisologia, tenemos PermissionEnum, los cuales son todos los permisos que tendra el sistema, y para aplicar los permisos, se utiliza el decorador Permission(PermissionEnum.EL_PERMISO) para indicar el permiso requerido, y UseGuard(PermissionGuard) para aplicar la verificacion de permisos, un ejemplo de como aplicarlo esta en el modulo de users
- Base de Datos con TypeORM.
- Seeding.
- Config Service (@nestjs/config).
- Mailing (nodemailer).
- Registro e Inicio de Sesion por email.
- Permisologia atomica, CRUD con Roles.
- Subida de archivos. Soporte con guardado local y guardado por Amazon S3 / Minio.
- Swagger.
- Docker.