NodeCompetencias

Dependencias

La dependencia esencial es node y su package manager por defecto (npm) aunque puedes usar yarn si lo prefieres.

Para instalar node y npm en debian, ubuntu, mint...

sudo apt-get update
sudo apt-get install nodejs npm

Si se quiere otro manejador de paquetes como pnpm o yarn:

npm i -g yarn
npm i -g pnpm
# Con pnpm hay que configurar un par de cosas:
pnpm config set shamefully-hoist=true
# Asi la estructura de los node_modules sigue siengo igual que la de npm

Como generar la imagen para desplegar

# Estando posicionado en la carpeta raiz del proyecto:
cd backend && \
npm i ;\
sudo ./dkbuild.sh ;\
cd ..
# Crear la carpeta primero para que el owner no sea root sino el usuario
mkdir /app/ngDist
# Cuando este la imagen y la carpeta correr este comando para desplegarlo, en el volumen ha de estar la carpeta del compilado de angular
sudo docker run --restart=always \
-p 80:3000 -v /app/ngDist:/app/ngDist --name nodecompetencias -d nodecompetencias

# Para compilar angular y moverlo a la carpeta /app/ngDist esta un script dentro de frontend
# Recordatorio, es necesario tener las dependencias (@angular/core y @angular/compiler) para compilarlo sino da error, con este comando las instala y compila:
cd frontend && \
npm i ; \
sudo ./buildCpToVolume.sh; cd ..

ORM

La documentación de typeORM

Installation

#Instala las dependencias del proyecto (tener node instalado)
npm i
# O si usas yarn:
yarn install

Correr la aplicación:

Para lanzar la aplicación mientras se desarrolla:

Si se tienen las CLI de angular y Nest:

# En la carpeta del Frontend
ng serve
# En la del backend
nest start --watch

Si no se tienen estas CLI instalados

# En la carpeta del Frontend
npm run start
# En la del backend
npm run start:dev

Para instalar las dos CLI (Recomendado)

sudo npm i -g @nestjs/cli
sudo npm i -g @angular/cli

Depurar la aplicación:

Si se quiere depurar el backend hay que lanzar este en modo debug

nest start --watch --debug

Luego enlazar el debugger a este proceso, para vscode crear una configuración en la carpeta .vscode con nombre launch.json

"configurations": [
    {
      "type": "chrome",
      "request": "launch",
      "name": "Launch Chrome against localhost",
      "url": "http://localhost:4200",
      "webRoot": "${workspaceFolder}/frontend"
    },
    {
      "name": "Attach",
      "port": 9229,
      "request": "attach",
      "skipFiles": ["<node_internals>/**"],
      "type": "pwa-node"
    }
  ]

Herramientas para la programación

Bcrypt generator seleccionar prefijo 2b y rounds 10 para generar el hash de la contraseña

Json2TS Web para generar interfaces de typescript a partir de un Json

Angular material Componentes ya hechos de angular

Libro resumen y tips Typescript