GithubHelp home page GithubHelp logo

streamelopers / opus-api Goto Github PK

View Code? Open in Web Editor NEW
13.0 5.0 10.0 1.97 MB

Opus Job Portal

Home Page: https://dev.opus.do

JavaScript 0.59% TypeScript 98.73% Dockerfile 0.68%
hacktoberfest nestjs docker

opus-api's Introduction

Opus API

Tabla de contenidos

Descripción y contexto

Este es el servicio que gestiona la información de Opus.

Referencia del servicio

Requerimientos

Cómo iniciar

¿Te gustaría colaborar? A continuación se detallan los pasos a seguir para ponerse manos a la obra.

Dependencias

Preparación de ambiente de desarrollo

Para iniciar con el desarrollo es necesario hacer algunas configuraciones antes para mantener el estándar del proyecto.

Como habrá podido ver anteriormente, Visual Studio Code es el editor de texto principal utilizado en este proyecto, sin embargo, siéntase libre de utilizar cualquier editor o IDE de su preferencia.

Clonar el proyecto

Puede clonar el proyecto en cualquier directorio de su preferencia, pero recomendamos crear un directorio opus en el home de su sistema operativo.

mkdir ~/opus
git clone https://github.com/Streamelopers/opus-api.git

En caso de tener correctamente configurada la variable de entorno del ejecutable de Visual Studio Code, puede optar por abrir el proyecto con el siguiente comando:

code opus-api

Instalación de extensiones

En caso de no utilizar Visual Studio Code, obviar este paso.

Es muy probable que al abrir el proyecto por primera vez en Visual Studio Code se le muestre una alerta como la siguiente: Recomendación de instalacción de extensiones

Esto facilita la instalación de las extensiones que facilitarán el desarrollo durante su colaboración con este proyecto.

En caso de que no se muestra la alerta de recomendación de instalación, puede obtar por instalar dichas dependecias manualmente. Puede echarle un ojo al archivo .vscode/extensions.json.

Creación de archivo de variables de entorno

La prueba de fuego para saber si una aplicación tiene toda su configuración correctamente separada del código es comprobar que el código base puede convertirse en código abierto en cualquier momento, sin comprometer las credenciales. Por este motivo, debemos crear nuestro archivo de variables de entorno .env. Para esto, ejecutamos el siguiente comando:

cp .env.example .env

Siéntase libre de cambiar las credenciales a su gusto.

Correr el proyecto

Para facilitar el incio de su colabación y evitar problemas de dependecias el proyecto implementa docker-compose.

Siéntase libre de correr el proyecto sin utilizar Docker, pero en importante saber que no podrá contar con el apoyo de la comunidad. Si no conoces Docker, puedes aprender lo básico rápidamente aquí.

Navegamos al directorio donde se encuentra el proyecto:

cd ~/opus/opus-api

Ejecutamos el siguiente comando a través de npm:

npm run start:docker

Este script ejecuta el siguiente comando docker-compose up que a su vez se alimenta del archivo docker-compose.yml.

Luego de esto, el proyecto debería iniciar en unos segundos.

Definición de recursos

Puede ver los recursos del servicio accediendo a: http://localhost:5000/swagger.

Stack de desarrollo

Servidor

  • Node.js
    • Nest.js Framework
  • Docker

Base de datos

  • Postgres

Descargo de responsabilidad

La información expuesta a través de este servicio proviene de la base de datos local.

Contribuidores

opus-api's People

Contributors

andydev404 avatar darkcode01 avatar dependabot[bot] avatar depfu[bot] avatar eatskolnikov avatar hectoraristy avatar jadhielv avatar marluanespiritusanto avatar niurmiguel avatar snyk-bot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

opus-api's Issues

Migracion: Modulo Tags

Objetivo

Queremos mover todo lo que teniamos relacionado a tags al nuevo framework de NestJs.

Requerimientos

  • Migrar la entidades.
  • Migrar la migraciones.
  • Migrar logica de CRUD.
  • Validar si todo el comportamiento sigue de la misma forma.

Las validaciones la podemos usar directamente desde NestJs. ellos tienen incorporados las librerias que usabamos: https://docs.nestjs.com/techniques/validation#validation

Migracion: Configuracion de Swagger

Objetivo

Queremos aprovechar las anotaciones de nestjs para poder documentar todo a traves de Swagger.

Requerimientos

  • Instalar las librerias necesarias para configurar swagger.
  • Investigar como es la integracion.
  • Implementar la integracion.
  • Debe estar documentado los modulos User y Tags

Discusión: Tabla location.

Problema actual

Basado en el comentario que hizo Jose. veo que tenemos un placeId en la tabla de location.

Soluciones
Despues de analizarlo un poco no me hace algun sentido tenerlo ya que tendremos la latitude y longitud, con esto podemos ya podemos poner un pin en un mapa del lado del front-end y tambien tendremos la informacion base de la empresa.

Me gustaria saber sus comentarios respecto a esto: @eatskolnikov @DannyFeliz @DarkCode01

Configuración de la db (conexión).

Estoy trabajando en el issue #20 , y estoy teniendo error al intentar correr los tests por como se esta haciendo la conexión a la db, me gustaria saber que db se usara para production y para asi poder configurar el como se esta conectando a la db.

Entiendo que se puede usar postgres, pero me gustaria saber si ya se tiene otro en mente.

Estandarizar las respuestas del API

Estas son dos posibles respuestas del mismo endpoint

Screen Shot 2021-04-02 at 2 33 57 PM

Screen Shot 2021-04-02 at 1 46 17 PM

Estandaricemos las respuestas para que siempre tengan la siguiente estructura:

{
 success: bool,
 message: string,
 data: Array<object>
}

Considerar separar los imports de librerías y frameworks (poner arriba) de los imports del propio proyecto (abajo), separados por un espacio y ordenados de mayor a menor cantidad de texto, tipo:

Considerar separar los imports de librerías y frameworks (poner arriba) de los imports del propio proyecto (abajo), separados por un espacio y ordenados de mayor a menor cantidad de texto, tipo:

import { ConfigModule } from "@nestjs/config";
import { Module } from "@nestjs/common";

import { CompaniesModule } from "./companies/companies.module";
import { UsersModule } from "./users/users.module";

Originally posted by @JeffreyArt1 in #50 (comment)

Implementar Cloudinary

Queremos poder subir imágenes y guardarla en un servicio de la nube. Descubrimos que podemos utilizar una cuenta personal de Cloudinary que sale gratis por el momento para subirla.

Crear dummy data de jobs para hacer pruebas

Necesitamos tener 15 jobs creados en la db para poder probar distintos escenarios.
Que sean con texto autogenerado Loremp Ipsum.

Necesitamos tener 3 usuarios para probar distintas situaciones.

usuario1:password123
usuario2:password123
usuario3:password123
usuario4:password123
usuario5:password123

Solo se debe correr en ambiente de development
Si hace falta agreguemos una variable de ambiente como "RUN_SEED_DATA"

Crear endpoints de Tag.

Se debe cumplir con todos los endpoints que existen en la carpeta de requerimientos relacionados a los tag.

Integrar validaciones a todas las rutas

Actualmente todos los endpoints realizan un "happy path". Debemos mostrar errores y validar que los valores que vengan desde el cliente sean validos para evitar procesar peticiones invalidas.

La idea seria utilizar express-validator: https://express-validator.github.io/docs/. Debemos seguir el estandar con el base handler por lo cual se va a requerir que se haga una function custom para el express-validator.

Migracion: Modulo Users

Objetivo

Queremos mover todo lo que teniamos relacionado a users al nuevo framework de NestJs.

Requerimientos

  • Migrar la entidades.
  • Migrar la migraciones.
  • Migrar logica de CRUD.
  • Validar si todo el comportamiento sigue de la misma forma.

Las validaciones la podemos usar directamente desde NestJs. ellos tienen incorporados las librerias que usabamos: https://docs.nestjs.com/techniques/validation#validation

Migracion: Manejo de sesiones

Objetivo

Queremos asegurar nuestro API que solamente sea consumido a traves de un JWT valido.

Requerimientos

  • Investigar como NestJs maneja las sesiones.
  • Hacer las configuraciones de sesiones.
  • Aplicar la metologia de usar JWT token para permitir acceso a endpoint.

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.