Esta es una API para gestionar una galería de productos utilizando NestJS, Prisma, SQLite y JWT para la autenticación. La API permite crear, leer, actualizar y eliminar productos, con rutas protegidas para la creación y edición de productos.
- Node.js (versión 20 o superior)
- npm (versión 10 o superior)
Sigue los pasos a continuación para instalar y ejecutar la aplicación:
-
Clonar el repositorio:
git clone [email protected]:IonVillarreal/product-gallery.git cd product-gallery
-
Instalar las dependencias:
npm install
-
Configurar el archivo
.env
:- Crea un archivo
.env
en el directorio raíz del proyecto y agrega la siguiente línea:JWT_SECRET=your_jwt_secret_key
- Crea un archivo
-
Configurar Prisma:
- Asegúrate de que el archivo
prisma/.env
contenga la URL de la base de datos apuntando afile:./dev.db
.
- Asegúrate de que el archivo
-
Inicializar la base de datos:
npx prisma migrate dev --name init
-
Ejecutar el script de seed para agregar datos de prueba:
npm run seed
-
Iniciar la aplicación:
npm run start:dev
-
Acceder a la documentación de la API:
- Abre tu navegador y navega a
http://localhost:3000/api
para ver la documentación de Swagger.
- Abre tu navegador y navega a
La API utiliza JWT para la autenticación. Para acceder a las rutas protegidas, primero debes iniciar sesión y obtener un token.
POST /api/auth/register
Cuerpo de la solicitud:
{
"email": "[email protected]",
"password": "yourpassword"
}
POST /api/auth/login
Cuerpo de la solicitud:
{
"email": "[email protected]",
"password": "yourpassword"
}
Respuesta:
{
"access_token": "your_jwt_token"
}
POST /api/products
Encabezados:
Authorization: Bearer your_jwt_token
Cuerpo de la solicitud:
{
"name": "Product Name",
"description": "Product Description",
"price": 99.99
}
GET /api/products
GET /api/products/:id
PATCH /api/products/:id
Encabezados:
Authorization: Bearer your_jwt_token
Cuerpo de la solicitud:
{
"name": "Updated Product Name",
"description": "Updated Product Description",
"price": 149.99
}
DELETE /api/products/:id
Encabezados:
Authorization: Bearer your_jwt_token