Claro! Aqui está o texto formatado para um arquivo README.md:
markdown Copy code
Este projeto é uma aplicação Node.js com Prisma e TypeScript que implementa um sistema de gerenciamento de produtos, categorias e carrinho de compras, incluindo autenticação e autorização via JWT.
- Node.js (versão 14 ou superior)
- PostgreSQL (ou uma instância de banco de dados compatível, como o Supabase)
git clone https://github.com/William-Koerich/uxflow-test.git
cd uxflow-test
npm install
Crie um arquivo .env na raiz do projeto com o seguinte conteúdo, substituindo os valores conforme necessário:
DATABASE_URL="postgresql://seu-usuario:sua-senha@seu-host:seu-porta/seu-database"
JWT_SECRET="sua_chave_secreta"
PORT=3000
- Gere o cliente Prisma:
npx prisma generate
- Rode as migrações para configurar o banco de dados:
npx prisma migrate dev --name init
npm start
A aplicação estará rodando em http://localhost:3000.
/uxflow-test
/node_modules
/prisma
schema.prisma
/src
/middleware
auth.ts
/routes
auth.ts
products.ts
categories.ts
cart.ts
app.ts
.env
package.json
tsconfig.json
README.md
Autenticação
POST /auth/register: Registrar um novo usuário
POST /auth/login: Autenticar um usuário e obter um token JWT
Produtos
POST /products: Criar um novo produto (requer autenticação)
GET /products: Listar todos os produtos com filtros por categoria e faixa de preço (requer autenticação)
GET /products/:id: Obter os detalhes de um produto específico (requer autenticação)
PUT /products/:id: Atualizar informações de um produto (requer autenticação)
DELETE /products/:id: Excluir um produto (requer autenticação)
Categorias
POST /categories: Criar uma nova categoria (requer autenticação)
GET /categories: Listar todas as categorias (requer autenticação)
GET /categories/:id: Obter os detalhes de uma categoria específica (requer autenticação)
PUT /categories/:id: Atualizar informações de uma categoria (requer autenticação)
DELETE /categories/:id: Excluir uma categoria (requer autenticação)
Carrinho de Compras
POST /cart/add: Adicionar produtos ao carrinho de compras (requer autenticação)
POST /cart/remove: Remover produtos do carrinho de compras (requer autenticação)
GET /cart: Visualizar os produtos no carrinho de compras (requer autenticação)
POST /cart/checkout: Finalizar a compra dos produtos no carrinho (requer autenticação)
Node.js TypeScript Express Prisma PostgreSQL JWT Bcryptjs