Holaaa :D Aca dejo el link del proyecto curso-nodejs-auth __
git clone https://github.com/platzi/curso-nodejs-auth.git
¿Cómo comenzar con el proyecto base en Node.js?
Inicia tu viaje en el desarrollo backend con Node.js partiendo de una estructura sólida. En el curso anteriormente mencionado, trabajamos en el desarrollo de un eCommerce, integrando distintas capas como controladores, conexiones a bases de datos con PostgreSQL a través de Sequelize, y estructuras para orden de compra y productos. Ahora, nos enfocamos en implementar la capa de autenticación y autorización.
¿Cómo clonar el proyecto y preparar el entorno?
Para facilitar el avance, clona el código base del repositorio usando la terminal:
git clone https://github.com/platzicurso/nogs-auth.git magiestore-auth
Esta acción te permite descargar todo el proyecto preparado hasta el paso anterior en el curso de backend.
npm install dentro de la carpeta clonada..env donde coloques datos críticos como la URL de conexión a la base de datos, el puerto y el entorno.docker-compose up -d postgres docker-compose up -d pgadmin
¿Cómo ejecutar la migración inicial?
Las migraciones son esenciales para preparar la estructura de la base de datos. Verifica que tu contenedor de PostgreSQL esté correctamente levantado y que la carpeta de volumen (donde Docker guarda datos persistentes) esté creada.
Corre la migración inicial ejecutando:
npm run migrations:run
Este comando aplicará todos los cambios necesarios a la base de datos, creando tablas y configuraciones iniciales. En caso de error con las variables de entorno, asegúrate de que todas coincidan correctamente con las configuraciones del Docker.
¿Cómo gestionar ambientes con Insomnia?
Insomnia te permite realizar pruebas de la API, cambiando entre entornos (producción y desarrollo) de manera sencilla.
Crea ambientes: Define los ambientes mediante variables que se pueden configurar en Insomnia.
Configura las URLs del API: Inserta URLs según el ambiente correspondiente:
https://api.miapp.com.http://localhost:3000.Selecciona el ambiente actual: Cambia entre dev y prod según necesites, asegurando que estás apuntando al servidor correcto.
Beneficios de esta configuración
¿Qué hacer ahora?
Con el proyecto corriendo y la API lista para el manejo de peticiones, el próximo paso es implementar una capa de autenticación. Empezaremos creando un middleware para verificar la API key y asegurar que las solicitudes solo sean procesadas si son legítimas.
Este proceso no solo resguardará la aplicación, sino que sienta las bases para el control de acceso a tu API. ¡Adelante, y sigue explorando el potencial del desarrollo backend con Node.js!
Inicia tu viaje en el desarrollo backend con Node.js partiendo de una estructura sólida. En el curso anteriormente mencionado, trabajamos en el desarrollo de un eCommerce, integrando distintas capas como controladores, conexiones a bases de datos con PostgreSQL a través de Sequelize, y estructuras para orden de compra y productos. Ahora, nos enfocamos en implementar la capa de autenticación y autorización.
Para facilitar el avance, clona el código base del repositorio usando la terminal:
git clone https://github.com/platzicurso/nogs-auth.git magiestore-auth
Esta acción te permite descargar todo el proyecto preparado hasta el paso anterior en el curso de backend.
npm install dentro de la carpeta clonada..env donde coloques datos críticos como la URL de conexión a la base de datos, el puerto y el entorno.docker-compose up -d postgres
docker-compose up -d pgadmin
Las migraciones son esenciales para preparar la estructura de la base de datos. Verifica que tu contenedor de PostgreSQL esté correctamente levantado y que la carpeta de volumen (donde Docker guarda datos persistentes) esté creada.
Corre la migración inicial ejecutando:
npm run migrations:run
Este comando aplicará todos los cambios necesarios a la base de datos, creando tablas y configuraciones iniciales. En caso de error con las variables de entorno, asegúrate de que todas coincidan correctamente con las configuraciones del Docker.
Insomnia te permite realizar pruebas de la API, cambiando entre entornos (producción y desarrollo) de manera sencilla.
Crea ambientes: Define los ambientes mediante variables que se pueden configurar en Insomnia.
Configura las URLs del API: Inserta URLs según el ambiente correspondiente:
https://api.miapp.com.http://localhost:3000.Selecciona el ambiente actual: Cambia entre dev y prod según necesites, asegurando que estás apuntando al servidor correcto.
Con el proyecto corriendo y la API lista para el manejo de peticiones, el próximo paso es implementar una capa de autenticación. Empezaremos creando un middleware para verificar la API key y asegurar que las solicitudes solo sean procesadas si son legítimas.
Este proceso no solo resguardará la aplicación, sino que sienta las bases para el control de acceso a tu API. ¡Adelante, y sigue explorando el potencial del desarrollo backend con Node.js!
Holaaa :D Aca dejo el link del proyecto curso-nodejs-auth __
git clone https://github.com/platzi/curso-nodejs-auth.git
git clone https://github.com/platzi/curso-nodejs-auth.git my-store-auth
cd my-store-datanpm i
code .PORT=3000
DATABASE_URL=postgres://nico:admin123@localhost:5432/my_store
postgres_data si no está la creamos.docker-compose up -d postgres
Debe salir:Starting my-store-auth_postgres_1 ... done
docker-compose up -d pgadmin
Debe salir:Starting my-store-auth_pgadmin_1 ... done
docker-compose ps
localhost:5050docker psdocker inspect id_del_contenedor."IPAddress": "172.18.0.2". Ésta la colocamos en el cuadro en pgAdmin que dice host name: 172.18.0.2, en Maintenance database: my_store, en Username: nico, en el Password: admin123, activamos la casilla de Save Password, luego le damos en el botón Save.
npm run migrations:run
npm run devMi port 3000{
"name": "Category 1",
"image": "http: //placeimg.com/640/480"
}
En la salida debe estar el código 200 Created
{
"createdAt": "2023-01-18T02:54:54.341Z",
"id": 1,
"name": "Category 1",
"image": "http: //placeimg.com/640/480"
}
Si consultamos el GET de categories, debe salir la categoría recién creada.
En Insomnia podemos configurar las variables de entorno para distintos formatos, por ejemplo desarrollo y producción, en el panel izquierdo, le damos donde sale No Enviroment y luego en Manage Enviroments, dentro agregamos con el símbolo de más “+” que sale en el panel izquierdo de Sub Enviroments, editamos el nombre del nuevo Enviroment (el título al centro del cuadro) y colocamos Dev, en las líneas de código se agrega:
{
"API_URL": "http: //localhost:3000"
}
Del lado derecho, arriba, se puede fijar un color, en éste caso seleccionamos el azul.
Agregamos otro Enviroment para producción, lo llamamos Prod y agregamos las líneas de código:
{
"API_URL": "https: //api.escuelajs.co"
}
El color que se le asignó fue el rojo.
Le damos en el botón Done que está en la esquina inferior derecha.
Cuando volvemos de nuevo donde salen las carpetas de categories, etc, podemos elegir en No Enviroment: tanto Dev o Prod, para que funcione por ejemplo en GET de categories, la dirección que teníamos: http://localhost:3000/api/v1/categories la cambiamos por: _.API_URL /api/v1/categories
De modo que _.API_URL sustituirá la dirección de acuerdo a Dev para localhost y Prod para la api de la web.
Para comprobar que todo marcha bien, hacemos consulta tanto en desarrollo como en producción.
Para matar el proceso del run dev, en la terminal presionamos las teclas: CTRL + C
Correr los videos 1.25 creo que va como piña jaja
en el proyecto esta un archivo docker-compose.yml que utiliza una carpeta local en el directorio del proyecto, esto en terminos de rendimiento no es acosejable ya que docker iniciará los contenedores como servicios siempre que se inicie (si usas docker en windows cuando abras el cliente de coker o si lo activas para que inicie con windows, si usas linux al activar el servicio de docker para que inicie automáticamente) y al depender del volumen local puede traer problemas. lo mejor es usar los volumenes de docker.
Les dejo mi archivo docker-compose.yml que utiliza este metodo y ademas usa variables dntorno (las que usamos en el archivo .env del proyecto)
Adicionalmente estoy utilizando phppgadmin como gestor para postgress pero pueden sustituirlo por pgadmin sin problema
version: '3.3'
services:
db:
container_name: db
image: 'postgres:${TAG}'
restart: always
environment:
POSTGRES_DB: ${DB_NAME}
POSTGRES_USER: ${DB_USER}
POSTGRES_PASSWORD: ${DB_PASSWORD}
ports:
- 5432:5432
volumes:
- dbdata:/var/lib/postgresql/data
networks:
- app-network
dbmanager:
image: bitnami/phppgadmin:7
restart: always
environment:
DATABASE_HOST: db
DATABASE_PORT_NUMBER: ${DB_PORT}
DATABASE_SSL_MODE: allow
ALLOW_EMPTY_PASSWORD: yes
ports:
- 8081:8080
depends_on:
- db
networks:
- app-network
#Docker Networks
networks:
app-network:
driver: bridge
#Volumes
volumes:
dbdata:
driver: local
mi archivo .env es este
NODE_ENV="development"
TAG=13
PORT=3000
DB_NAME="my_store"
DB_USER="admin123"
DB_PASSWORD="admin123"
DB_HOST="localhost"
DB_PORT="5432"
Sigo usando las variables separadas porque son necesarias para usarlas en el archivo decker-compose.yml
Si por casualidad en el proyecto anterior o haciendo clon en este les da errores al hacer la migracion o al hacer queries a la DB. Recuerden parar los servicios de PgAdmin si es que lo tienen instalado en local en su computadora. Esto interfiere en el PgAdmin web y da errores que cuesta saber de donde vienen.
Si usas postman, tambien tienes la opcion de crear variables de entorno...
El backend y el frontend deben estar en repositorios de Git diferentes?
la parte de autenticación en que capa correspondería del clean architecture ?
Para los que usan thunder client en vscode, en el apartado Env ponen nombre de la variable y el valor SIN comillas. Ya en la url, se pone la variable asi:
{{api_url}}/api/v1/users
y listo.
la pagina pgadmin no trae la base de datos, curso a medias. =(